@ddt-tools/cli 0.2.0 → 0.2.4

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 (203) hide show
  1. package/dist/advise-tests-YNMKVJCD.js +87 -0
  2. package/dist/advise-tests-YNMKVJCD.js.map +1 -0
  3. package/dist/ai-NTNPYEKZ.js +86 -0
  4. package/dist/ai-NTNPYEKZ.js.map +1 -0
  5. package/dist/anonymize-LERTWUQO.js +139 -0
  6. package/dist/anonymize-LERTWUQO.js.map +1 -0
  7. package/dist/approval-GGZGKIU4.js +73 -0
  8. package/dist/approval-GGZGKIU4.js.map +1 -0
  9. package/dist/approval-chain-GWJKZHVU.js +118 -0
  10. package/dist/approval-chain-GWJKZHVU.js.map +1 -0
  11. package/dist/audit-log-2PH55BU4.js +159 -0
  12. package/dist/audit-log-2PH55BU4.js.map +1 -0
  13. package/dist/backlog-QNXGOUF4.js +76 -0
  14. package/dist/backlog-QNXGOUF4.js.map +1 -0
  15. package/dist/bisect-W3XKKRWG.js +111 -0
  16. package/dist/bisect-W3XKKRWG.js.map +1 -0
  17. package/dist/bookmarks-XVOGXGMC.js +107 -0
  18. package/dist/bookmarks-XVOGXGMC.js.map +1 -0
  19. package/dist/branch-S3I2IJGQ.js +103 -0
  20. package/dist/branch-S3I2IJGQ.js.map +1 -0
  21. package/dist/build-MP3JQEFO.js +20 -0
  22. package/dist/build-MP3JQEFO.js.map +1 -0
  23. package/dist/catalog-3J3NFNXP.js +137 -0
  24. package/dist/catalog-3J3NFNXP.js.map +1 -0
  25. package/dist/changelog-ZQAH3ULB.js +216 -0
  26. package/dist/changelog-ZQAH3ULB.js.map +1 -0
  27. package/dist/chunk-2FT6HXKS.js +55 -0
  28. package/dist/chunk-2FT6HXKS.js.map +1 -0
  29. package/dist/chunk-DGUM43GV.js +11 -0
  30. package/dist/chunk-DGUM43GV.js.map +1 -0
  31. package/dist/chunk-DL3V7UJ2.js +25 -0
  32. package/dist/chunk-DL3V7UJ2.js.map +1 -0
  33. package/dist/chunk-VM2H4LAO.js +15 -0
  34. package/dist/chunk-VM2H4LAO.js.map +1 -0
  35. package/dist/chunk-XFXG347C.js +40 -0
  36. package/dist/chunk-XFXG347C.js.map +1 -0
  37. package/dist/cli.js +499 -19402
  38. package/dist/cli.js.map +1 -1
  39. package/dist/compare-P7JOV76O.js +379 -0
  40. package/dist/compare-P7JOV76O.js.map +1 -0
  41. package/dist/compare-profiles-H33CXZPD.js +219 -0
  42. package/dist/compare-profiles-H33CXZPD.js.map +1 -0
  43. package/dist/completion-ZSNCQKJ2.js +89 -0
  44. package/dist/completion-ZSNCQKJ2.js.map +1 -0
  45. package/dist/connection-CDGVEFUC.js +148 -0
  46. package/dist/connection-CDGVEFUC.js.map +1 -0
  47. package/dist/cost-estimate-S2MKHT2H.js +321 -0
  48. package/dist/cost-estimate-S2MKHT2H.js.map +1 -0
  49. package/dist/data-compare-46ZI7KHL.js +128 -0
  50. package/dist/data-compare-46ZI7KHL.js.map +1 -0
  51. package/dist/data-fit-WGEPLD5S.js +127 -0
  52. package/dist/data-fit-WGEPLD5S.js.map +1 -0
  53. package/dist/deploy-status-4H5KJFRC.js +58 -0
  54. package/dist/deploy-status-4H5KJFRC.js.map +1 -0
  55. package/dist/design-ILX3ZSWW.js +135 -0
  56. package/dist/design-ILX3ZSWW.js.map +1 -0
  57. package/dist/diagnose-WPUL67E4.js +150 -0
  58. package/dist/diagnose-WPUL67E4.js.map +1 -0
  59. package/dist/discover-DEO2R5T6.js +78 -0
  60. package/dist/discover-DEO2R5T6.js.map +1 -0
  61. package/dist/docs-QNY3MUVO.js +183 -0
  62. package/dist/docs-QNY3MUVO.js.map +1 -0
  63. package/dist/drift-FDRNPWQA.js +233 -0
  64. package/dist/drift-FDRNPWQA.js.map +1 -0
  65. package/dist/drift-gate-6BWWWMHW.js +103 -0
  66. package/dist/drift-gate-6BWWWMHW.js.map +1 -0
  67. package/dist/error-lookup-4R3Y4RBC.js +56 -0
  68. package/dist/error-lookup-4R3Y4RBC.js.map +1 -0
  69. package/dist/errorReporting-3LPE2IJY.js +109 -0
  70. package/dist/errorReporting-3LPE2IJY.js.map +1 -0
  71. package/dist/exec-JOLH5LPT.js +122 -0
  72. package/dist/exec-JOLH5LPT.js.map +1 -0
  73. package/dist/explain-NS26WE2Y.js +189 -0
  74. package/dist/explain-NS26WE2Y.js.map +1 -0
  75. package/dist/explorer-GSYYYOAL.js +58 -0
  76. package/dist/explorer-GSYYYOAL.js.map +1 -0
  77. package/dist/extract-4LWEZG4O.js +152 -0
  78. package/dist/extract-4LWEZG4O.js.map +1 -0
  79. package/dist/features-KQV4OFIZ.js +54 -0
  80. package/dist/features-KQV4OFIZ.js.map +1 -0
  81. package/dist/feedback-CBLGXUEG.js +158 -0
  82. package/dist/feedback-CBLGXUEG.js.map +1 -0
  83. package/dist/find-SMXRCZ76.js +176 -0
  84. package/dist/find-SMXRCZ76.js.map +1 -0
  85. package/dist/format-HMGG6MY3.js +277 -0
  86. package/dist/format-HMGG6MY3.js.map +1 -0
  87. package/dist/generate-W7VLBDLI.js +160 -0
  88. package/dist/generate-W7VLBDLI.js.map +1 -0
  89. package/dist/graph-YYL5UYCJ.js +168 -0
  90. package/dist/graph-YYL5UYCJ.js.map +1 -0
  91. package/dist/history-GDRFP4PG.js +184 -0
  92. package/dist/history-GDRFP4PG.js.map +1 -0
  93. package/dist/hosts-DRFZTMIJ.js +45 -0
  94. package/dist/hosts-DRFZTMIJ.js.map +1 -0
  95. package/dist/impact-A4NU6CB2.js +63 -0
  96. package/dist/impact-A4NU6CB2.js.map +1 -0
  97. package/dist/import-2RNYDL4E.js +79 -0
  98. package/dist/import-2RNYDL4E.js.map +1 -0
  99. package/dist/index.cjs +11 -5
  100. package/dist/index.cjs.map +1 -1
  101. package/dist/index.js +8 -2
  102. package/dist/index.js.map +1 -1
  103. package/dist/init-EAOGNGXI.js +54 -0
  104. package/dist/init-EAOGNGXI.js.map +1 -0
  105. package/dist/install-hooks-G3Y5LVXK.js +109 -0
  106. package/dist/install-hooks-G3Y5LVXK.js.map +1 -0
  107. package/dist/license-Z5YSC7XQ.js +43 -0
  108. package/dist/license-Z5YSC7XQ.js.map +1 -0
  109. package/dist/lineage-C5CGVP36.js +555 -0
  110. package/dist/lineage-C5CGVP36.js.map +1 -0
  111. package/dist/lint-AQFPZ3WG.js +144 -0
  112. package/dist/lint-AQFPZ3WG.js.map +1 -0
  113. package/dist/mcp-F7FND5X7.js +343 -0
  114. package/dist/mcp-F7FND5X7.js.map +1 -0
  115. package/dist/migrate-from-dbt-K4ELOWUD.js +156 -0
  116. package/dist/migrate-from-dbt-K4ELOWUD.js.map +1 -0
  117. package/dist/migrate-platform-E7VZFPO5.js +91 -0
  118. package/dist/migrate-platform-E7VZFPO5.js.map +1 -0
  119. package/dist/optimize-WUJ5ZN5Y.js +109 -0
  120. package/dist/optimize-WUJ5ZN5Y.js.map +1 -0
  121. package/dist/perf-UULZSREY.js +200 -0
  122. package/dist/perf-UULZSREY.js.map +1 -0
  123. package/dist/pii-QHU32VML.js +146 -0
  124. package/dist/pii-QHU32VML.js.map +1 -0
  125. package/dist/pilot-BR6GVK32.js +29 -0
  126. package/dist/pilot-BR6GVK32.js.map +1 -0
  127. package/dist/pr-comment-2FOA3EXG.js +81 -0
  128. package/dist/pr-comment-2FOA3EXG.js.map +1 -0
  129. package/dist/preview-XNY422OU.js +46 -0
  130. package/dist/preview-XNY422OU.js.map +1 -0
  131. package/dist/profile-SQTBNKYS.js +98 -0
  132. package/dist/profile-SQTBNKYS.js.map +1 -0
  133. package/dist/promote-FSGUPIPD.js +417 -0
  134. package/dist/promote-FSGUPIPD.js.map +1 -0
  135. package/dist/publish-AYCRMCE2.js +739 -0
  136. package/dist/publish-AYCRMCE2.js.map +1 -0
  137. package/dist/purge-Y5IOTXKA.js +56 -0
  138. package/dist/purge-Y5IOTXKA.js.map +1 -0
  139. package/dist/query-log-SDDGMJLJ.js +112 -0
  140. package/dist/query-log-SDDGMJLJ.js.map +1 -0
  141. package/dist/refactor-TC7S43F2.js +5809 -0
  142. package/dist/refactor-TC7S43F2.js.map +1 -0
  143. package/dist/refresh-MDJYOYV5.js +39 -0
  144. package/dist/refresh-MDJYOYV5.js.map +1 -0
  145. package/dist/replay-E4664A5K.js +118 -0
  146. package/dist/replay-E4664A5K.js.map +1 -0
  147. package/dist/revert-QWQWCJJB.js +111 -0
  148. package/dist/revert-QWQWCJJB.js.map +1 -0
  149. package/dist/review-7CAVLD67.js +164 -0
  150. package/dist/review-7CAVLD67.js.map +1 -0
  151. package/dist/rollback-suggest-C6D5YFCA.js +79 -0
  152. package/dist/rollback-suggest-C6D5YFCA.js.map +1 -0
  153. package/dist/safer-alternative-QR4QEFUV.js +84 -0
  154. package/dist/safer-alternative-QR4QEFUV.js.map +1 -0
  155. package/dist/safety-OFWUFLK4.js +165 -0
  156. package/dist/safety-OFWUFLK4.js.map +1 -0
  157. package/dist/savings-MEBE4TXI.js +95 -0
  158. package/dist/savings-MEBE4TXI.js.map +1 -0
  159. package/dist/scan-secrets-XCUBMLHL.js +54 -0
  160. package/dist/scan-secrets-XCUBMLHL.js.map +1 -0
  161. package/dist/schema-7JZIG6QR.js +447 -0
  162. package/dist/schema-7JZIG6QR.js.map +1 -0
  163. package/dist/script-BMYVBHFR.js +167 -0
  164. package/dist/script-BMYVBHFR.js.map +1 -0
  165. package/dist/search-TA3C3AZT.js +151 -0
  166. package/dist/search-TA3C3AZT.js.map +1 -0
  167. package/dist/seed-W4Q3L2IU.js +101 -0
  168. package/dist/seed-W4Q3L2IU.js.map +1 -0
  169. package/dist/sketch-6B2V6FJV.js +83 -0
  170. package/dist/sketch-6B2V6FJV.js.map +1 -0
  171. package/dist/snapshot-YMVS322L.js +171 -0
  172. package/dist/snapshot-YMVS322L.js.map +1 -0
  173. package/dist/snippets-EVTN63OU.js +74 -0
  174. package/dist/snippets-EVTN63OU.js.map +1 -0
  175. package/dist/standards-FGJW3CQL.js +238 -0
  176. package/dist/standards-FGJW3CQL.js.map +1 -0
  177. package/dist/suggest-V3LVIFZ5.js +44 -0
  178. package/dist/suggest-V3LVIFZ5.js.map +1 -0
  179. package/dist/suggest-constraints-EX2FCWOQ.js +154 -0
  180. package/dist/suggest-constraints-EX2FCWOQ.js.map +1 -0
  181. package/dist/suite-YTQ3CNX5.js +85 -0
  182. package/dist/suite-YTQ3CNX5.js.map +1 -0
  183. package/dist/telemetry-KOIY3NEQ.js +90 -0
  184. package/dist/telemetry-KOIY3NEQ.js.map +1 -0
  185. package/dist/template-MUJ6X6LN.js +396 -0
  186. package/dist/template-MUJ6X6LN.js.map +1 -0
  187. package/dist/test-XFSQHR2S.js +169 -0
  188. package/dist/test-XFSQHR2S.js.map +1 -0
  189. package/dist/trial-GFTGYCR3.js +31 -0
  190. package/dist/trial-GFTGYCR3.js.map +1 -0
  191. package/dist/validate-LFDEZFFH.js +107 -0
  192. package/dist/validate-LFDEZFFH.js.map +1 -0
  193. package/dist/verify-KRDYOJCR.js +76 -0
  194. package/dist/verify-KRDYOJCR.js.map +1 -0
  195. package/dist/watch-FSG23RR3.js +80 -0
  196. package/dist/watch-FSG23RR3.js.map +1 -0
  197. package/dist/xcompare-U4TXTTIR.js +87 -0
  198. package/dist/xcompare-U4TXTTIR.js.map +1 -0
  199. package/package.json +2 -2
  200. package/dist/cli.cjs +0 -19298
  201. package/dist/cli.cjs.map +0 -1
  202. package/dist/cli.d.cts +0 -1
  203. package/dist/cli.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/refactor.ts"],"sourcesContent":["/**\n * `ddt refactor` — record refactor operations (renames, moves, type changes)\n * in `refactor.json` so the compare engine emits `ALTER … RENAME` rather\n * than DROP + CREATE pairs.\n *\n * Mirrors `sdt refactor`. The DDT compare engine consumes the log via\n * `applyRefactorLogToResult` already (shipped earlier as the refactor-log\n * overlay).\n */\nimport { promises as fs } from 'node:fs';\nimport path from 'node:path';\nimport { Command } from 'commander';\nimport { refactoring } from '@ddt-tools/core';\n\nconst DEFAULT_LOG = './refactor.json';\nconst {\n appendOperation,\n loadRefactorLog,\n saveRefactorLog,\n REFACTOR_LOG_VERSION,\n extractCte,\n planRenameObject,\n applyRenamePlan,\n planMoveObject,\n buildRefactorDiff,\n renderRefactorDiffMarkdown,\n} = refactoring;\n\nfunction splitFqn(fqn: string): { database?: string; schema?: string; name: string } {\n const parts = fqn.split('.');\n if (parts.length === 1) return { name: parts[0]! };\n if (parts.length === 2) return { schema: parts[0]!, name: parts[1]! };\n return { database: parts[0]!, schema: parts[1]!, name: parts.slice(2).join('.') };\n}\n\nasync function ensureLogExists(p: string): Promise<refactoring.RefactorLog> {\n try {\n return await loadRefactorLog(p);\n } catch {\n return { version: REFACTOR_LOG_VERSION, operations: [] };\n }\n}\n\nexport function refactorCommand(): Command {\n const cmd = new Command('refactor').description(\n 'Record refactor operations (renames, moves) so compare emits ALTER … RENAME.',\n );\n\n cmd\n .command('rename')\n .description(\n 'Rename a column or object — recorded in refactor.json so compare emits ALTER RENAME.',\n )\n .requiredOption('--object <fqn>', 'Fully-qualified object name (e.g. catalog.schema.table)')\n .requiredOption('--new-name <name>', 'New name for the object')\n .requiredOption('--object-type <type>', 'Databricks object type (TABLE, VIEW, FUNCTION, …)')\n .option('--column <name>', 'Column name to rename — omit to rename the object itself')\n .option('--log <path>', `Path to refactor.json (default: ${DEFAULT_LOG})`)\n .option('--note <text>', 'Optional free-form note explaining the rename')\n .option(\n '--dry-run',\n 'Print the op that would be recorded, but do not write refactor.json',\n false,\n )\n .action(\n async (opts: {\n object: string;\n newName: string;\n objectType: string;\n column?: string;\n log?: string;\n note?: string;\n dryRun?: boolean;\n }) => {\n const logPath = path.resolve(opts.log ?? DEFAULT_LOG);\n const log = await ensureLogExists(logPath);\n const fqn = splitFqn(opts.object);\n const objectRef = { ...fqn, objectType: opts.objectType as never };\n const op = opts.column\n ? {\n type: 'RENAME_COLUMN' as const,\n object: objectRef,\n details: { oldName: opts.column, newName: opts.newName },\n ...(opts.note ? { note: opts.note } : {}),\n }\n : {\n type: 'RENAME_OBJECT' as const,\n object: objectRef,\n details: { oldName: fqn.name, newName: opts.newName },\n ...(opts.note ? { note: opts.note } : {}),\n };\n if (opts.dryRun) {\n console.log(\n `[dry-run] would record ${op.type} on ${opts.object}${opts.column ? `.${opts.column}` : ''} → ${opts.newName} (${logPath})`,\n );\n return;\n }\n const updated = appendOperation(log, op);\n await fs.mkdir(path.dirname(logPath), { recursive: true });\n await saveRefactorLog(logPath, updated);\n console.log(\n `Recorded ${op.type} on ${opts.object}${opts.column ? `.${opts.column}` : ''} → ${opts.newName} (${logPath})`,\n );\n },\n );\n\n cmd\n .command('move')\n .description('Move an object to a different schema / catalog — recorded as MOVE_OBJECT.')\n .requiredOption('--from <fqn>', 'Old FQN (e.g. oldcat.oldschema.name)')\n .requiredOption('--to <fqn>', 'New FQN')\n .requiredOption('--object-type <type>', 'Databricks object type')\n .option('--log <path>', `Path to refactor.json (default: ${DEFAULT_LOG})`)\n .option('--note <text>', 'Optional note')\n .option(\n '--dry-run',\n 'Print the op that would be recorded, but do not write refactor.json',\n false,\n )\n .action(\n async (opts: {\n from: string;\n to: string;\n objectType: string;\n log?: string;\n note?: string;\n dryRun?: boolean;\n }) => {\n const logPath = path.resolve(opts.log ?? DEFAULT_LOG);\n const log = await ensureLogExists(logPath);\n const oldFqn = splitFqn(opts.from);\n const newFqn = splitFqn(opts.to);\n const op = {\n type: 'MOVE_OBJECT' as const,\n object: { ...oldFqn, objectType: opts.objectType as never },\n details: { oldFqn, newFqn },\n ...(opts.note ? { note: opts.note } : {}),\n };\n if (opts.dryRun) {\n console.log(`[dry-run] would record MOVE_OBJECT ${opts.from} → ${opts.to} (${logPath})`);\n return;\n }\n const updated = appendOperation(log, op);\n await fs.mkdir(path.dirname(logPath), { recursive: true });\n await saveRefactorLog(logPath, updated);\n console.log(`Recorded MOVE_OBJECT ${opts.from} → ${opts.to} (${logPath})`);\n },\n );\n\n cmd\n .command('list')\n .description('List recorded refactor operations in chronological order.')\n .option('--log <path>', `Path to refactor.json (default: ${DEFAULT_LOG})`)\n .option(\n '--type <kind>',\n 'Filter by op kind (RENAME_OBJECT, RENAME_COLUMN, MOVE_OBJECT, CHANGE_COLUMN_TYPE, DROP_COLUMN, ADD_CONSTRAINT); case-insensitive',\n )\n .option(\n '--not-type <kind>',\n 'Exclude ops of this kind. Negation of --type — useful audit filter (\"show me everything except RENAME_COLUMN ops\"). Case-insensitive; same VALID_OP_KINDS list as --type. Mutually exclusive with --type (intersection of include + exclude on the same axis is a contradiction).',\n )\n .option(\n '--types <kinds>',\n 'Filter to ops whose kind is in this comma-separated list (case-insensitive). Plural form of --type — useful audit filter (\"--types RENAME_OBJECT,MOVE_OBJECT\" finds every object-shape-changing op without two passes). Each value must be a VALID_OP_KIND; whitespace around commas is trimmed. Mutually exclusive with --type and --not-type.',\n )\n .option(\n '--not-types <kinds>',\n 'Exclude ops whose kind is in this comma-separated list (case-insensitive). Plural negation of --type — useful audit filter (\"--not-types ADD_CONSTRAINT,DROP_COLUMN\" finds every op that is neither). Each value must be a VALID_OP_KIND; whitespace around commas is trimmed. Mutually exclusive with --type, --not-type, and --types.',\n )\n .option(\n '--since <iso>',\n 'Filter to ops with timestamp >= this ISO 8601 instant. Composes with --type (intersection). Mutually exclusive with --since-relative.',\n )\n .option(\n '--since-relative <duration>',\n 'Filter to ops with timestamp >= now - <duration>. Parse: N followed by unit `h` (hours) / `d` (days) / `w` (weeks = 7d) / `mo` (months = 30d). Examples: `7d` (last week), `24h` (last day), `2w` (last 14 days), `3mo` (last quarter). Mutually exclusive with --since.',\n )\n .option(\n '--until <iso>',\n 'Filter to ops with timestamp <= this ISO 8601 instant. Inclusive on equality. Composes with --since for a date-range and --type as intersection. Mutually exclusive with --until-relative.',\n )\n .option(\n '--until-relative <duration>',\n 'Filter to ops with timestamp <= now - <duration>. Same grammar as --since-relative (7d/24h/2w/3mo). Composes with --since-relative for relative closed-range windows. Useful for \"ops older than 6 months\" cleanup queries. Mutually exclusive with --until.',\n )\n .option(\n '--last <n>',\n 'After type/since/until filters, keep only the last N ops in chronological order. Refuses n <= 0. Mutually exclusive with --first.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--first <n>',\n 'After type/since/until filters, keep only the first N ops in chronological order. Refuses n <= 0. Mutually exclusive with --last.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--year <n>',\n 'Filter to ops whose timestamp falls in calendar year n (UTC). Useful for time-slice audits (\"--year 2026\" finds every refactor done in 2026 regardless of month/day). Opens a new TIMESTAMP CALENDAR-PART sub-arc on the refactor-list filter surface, mirroring the contains-any (iters 291-300), contains-all (iters 301-310), regex (iters 311-320), HAS/MISSING-IDENT (iters 321-324), and LENGTH (iters 325-334) sub-arcs. First flag of an expected paired sub-arc covering year + month + day-of-week + hour. n must be a non-negative integer; non-numeric or negative refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --since/--until (intersection — both windows apply) and with --type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--years <list>',\n 'Filter to ops whose timestamp (UTC) falls in ANY calendar year in this comma-separated list. Plural OR-semantics form of --year — useful audit filter (\"--years 2024,2025\" finds every refactor across two years in a single pass without two queries). Each value must be a non-negative integer; non-numeric or negative entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --year. Composes orthogonally with --since/--until/--type as intersection.',\n )\n .option(\n '--not-year <n>',\n 'Exclude ops whose timestamp (UTC) falls in calendar year n. Negation of --year — useful audit filter (\"--not-year 2024\" finds every refactor done outside 2024 in one pass). n must be a non-negative integer; non-numeric or negative refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (a missing timestamp does not fall in year n, so it isn\\'t excluded — symmetric with other --not-* axes). Mutually exclusive with --year and --years. Composes with --since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-years <list>',\n 'Exclude ops whose timestamp (UTC) falls in ANY calendar year in this comma-separated list. Plural OR-negation of --year — useful audit filter (\"--not-years 2024,2025\" finds every refactor outside those two years in one pass). Each value must be a non-negative integer; non-numeric or negative entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-year). Mutually exclusive with --year, --years, and --not-year. Composes with --since/--until/--type/--schema as intersection. Closes the year-axis quad (--year + --years + --not-year + --not-years) — 4 flags on the year axis of the TIMESTAMP CALENDAR-PART sub-arc.',\n )\n .option(\n '--month <n>',\n 'Filter to ops whose timestamp (UTC) falls in calendar month n (1=January, 12=December). Useful for seasonal / monthly audits (\"--month 12\" finds every refactor done in December regardless of year — handy for year-end change-window analysis). OPENS the month axis (2/4) of the TIMESTAMP CALENDAR-PART sub-arc, mirroring year axis (--year/--years/--not-year/--not-years, iters 335-338). n must be an integer in [1, 12]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--months <list>',\n 'Filter to ops whose timestamp (UTC) falls in ANY calendar month in this comma-separated list. Plural OR-semantics form of --month — useful for quarter audits (\"--months 1,2,3\" finds every Q1 refactor; \"--months 12,1,2\" finds every meteorological-winter refactor regardless of year). Each value must be an integer in [1, 12]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --month. Composes orthogonally with --year/--years/--since/--until/--type as intersection.',\n )\n .option(\n '--not-month <n>',\n 'Exclude ops whose timestamp (UTC) falls in calendar month n (1-12). Negation of --month — useful audit filter (\"--not-month 12\" excludes year-end refactors). n must be an integer in [1, 12]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes — missing field does not satisfy the predicate). Mutually exclusive with --month and --months. Composes orthogonally with --year/--years/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-months <list>',\n 'Exclude ops whose timestamp (UTC) falls in ANY calendar month in this comma-separated list. Plural OR-negation of --month — useful for inverting season/quarter filters (\"--not-months 6,7,8\" excludes summer; \"--not-months 1,2,3\" excludes Q1). Each value must be an integer in [1, 12]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-month). Mutually exclusive with --month, --months, and --not-month. Composes orthogonally with --year/--years/--since/--until/--type/--schema as intersection. Closes the month-axis quad (--month + --months + --not-month + --not-months) — 4 flags on the month axis of the TIMESTAMP CALENDAR-PART sub-arc.',\n )\n .option(\n '--day-of-week <n>',\n 'Filter to ops whose timestamp (UTC) falls on calendar day-of-week n (0=Sunday, 1=Monday, ..., 6=Saturday — matches JS Date.getUTCDay convention). Useful for cadence audits (\"--day-of-week 6\" or \"--day-of-week 0\" finds weekend refactors — typically the higher-risk change windows worth auditing). OPENS the day-of-week axis (3/4) of the TIMESTAMP CALENDAR-PART sub-arc, mirroring the year and month axes. n must be an integer in [0, 6]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--days-of-week <list>',\n 'Filter to ops whose timestamp (UTC) falls on ANY day-of-week in this comma-separated list (0=Sun, 6=Sat). Plural OR-semantics form of --day-of-week — useful for weekend audits (\"--days-of-week 0,6\" finds every weekend refactor in one pass; \"--days-of-week 1,2,3,4,5\" finds every weekday refactor). Each value must be an integer in [0, 6]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --day-of-week. Composes orthogonally with --year/--years/--month/--months/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--not-day-of-week <n>',\n 'Exclude ops whose timestamp (UTC) falls on calendar day-of-week n (0=Sunday, 1=Monday, ..., 6=Saturday — matches JS Date.getUTCDay convention). Negation of --day-of-week — useful for filtering out a noisy weekday from cadence audits (\"--not-day-of-week 0\" excludes Sunday refactors). 3/4 of the DAY-OF-WEEK axis of the TIMESTAMP CALENDAR-PART sub-arc, mirroring the not-year and not-month axes. n must be an integer in [0, 6]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes — missing field does not satisfy the predicate). Mutually exclusive with --day-of-week and --days-of-week. Composes orthogonally with --year/--years/--month/--months/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-days-of-week <list>',\n 'Exclude ops whose timestamp (UTC) falls on ANY day-of-week in this comma-separated list (0=Sun, 6=Sat). Plural OR-negation of --day-of-week — useful for inverting cadence filters (\"--not-days-of-week 0,6\" excludes every weekend refactor in one pass; \"--not-days-of-week 1,2,3,4,5\" excludes every weekday refactor). Each value must be an integer in [0, 6]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-day-of-week). Mutually exclusive with --day-of-week, --days-of-week, and --not-day-of-week. Composes orthogonally with --year/--years/--month/--months/--since/--until/--type/--schema as intersection. Closes the day-of-week axis quad (--day-of-week + --days-of-week + --not-day-of-week + --not-days-of-week) — 4 flags on the day-of-week axis of the TIMESTAMP CALENDAR-PART sub-arc.',\n )\n .option(\n '--hour <n>',\n 'Filter to ops whose timestamp (UTC) falls in calendar hour n (0-23 — matches JS Date.getUTCHours convention, 0=midnight..23=11pm). Useful for time-of-day cadence audits (\"--hour 22\" finds late-night refactors — typically the highest-risk change windows). OPENS the HOUR axis (4/4 — final axis) of the TIMESTAMP CALENDAR-PART sub-arc, mirroring the year, month, and day-of-week axes. n must be an integer in [0, 23]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--hours <list>',\n 'Filter to ops whose timestamp (UTC) falls in ANY calendar hour in this comma-separated list (0-23). Plural OR-semantics form of --hour — useful for time-window audits (\"--hours 22,23,0,1,2,3,4,5\" finds every late-night/early-morning refactor in one pass — the off-hours batch-job window; \"--hours 9,10,11,12,13,14,15,16,17\" finds every business-hour refactor). Each value must be an integer in [0, 23]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --hour. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--not-hour <n>',\n 'Exclude ops whose timestamp (UTC) falls in calendar hour n (0-23 — matches JS Date.getUTCHours convention, 0=midnight..23=11pm). Negation of --hour — useful for excluding noisy business-hours from off-hours audits (\"--not-hour 12\" excludes lunch-time refactors). 3/4 of the HOUR axis of the TIMESTAMP CALENDAR-PART sub-arc, mirroring the not-year, not-month, and not-day-of-week axes. n must be an integer in [0, 23]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes — missing field does not satisfy the predicate). Mutually exclusive with --hour and --hours. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-hours <list>',\n 'Exclude ops whose timestamp (UTC) falls in ANY calendar hour in this comma-separated list (0-23). Plural OR-negation of --hour — useful for inverting time-window audits (\"--not-hours 9,10,11,12,13,14,15,16,17\" excludes every business-hour refactor — surfaces only off-hours work; \"--not-hours 0,1,2,3,4,5\" excludes early-morning ops). Each value must be an integer in [0, 23]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-hour). Mutually exclusive with --hour, --hours, and --not-hour. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--since/--until/--type/--schema as intersection. Closes the hour axis quad (--hour + --hours + --not-hour + --not-hours) — 4 flags on the hour axis, CLOSING THE TIMESTAMP CALENDAR-PART SUB-ARC (16 paired flags across 4 axes: year + month + day-of-week + hour).',\n )\n .option(\n '--minute <n>',\n 'Filter to ops whose timestamp (UTC) falls in calendar minute-of-hour n (0-59 — matches JS Date.getUTCMinutes convention). Useful for sub-hour cadence audits (\"--minute 0\" finds top-of-hour cron-job refactors; \"--minute 30\" finds half-hour cron-job refactors). OPENS a new TIMESTAMP MINUTE/SECOND sub-arc on the refactor-list filter surface (immediately following the now-closed TIMESTAMP CALENDAR-PART sub-arc that covered year/month/day-of-week/hour in 16 paired flags iters 335-350). First flag of a paired sub-arc covering minute-of-hour and second-of-minute. n must be an integer in [0, 59]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--minutes <list>',\n 'Filter to ops whose timestamp (UTC) falls in ANY calendar minute-of-hour in this comma-separated list (0-59). Plural OR-semantics form of --minute — useful for quarter-hour cadence audits (\"--minutes 0,15,30,45\" finds every quarter-hour cron-job refactor in one pass — the standard scheduled-job grid). Each value must be an integer in [0, 59]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --minute. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--not-minute <n>',\n 'Exclude ops whose timestamp (UTC) falls in calendar minute-of-hour n (0-59 — matches JS Date.getUTCMinutes convention). Negation of --minute — useful for excluding noisy scheduled-job minutes from ad-hoc cadence audits (\"--not-minute 0\" excludes top-of-hour cron-job refactors, surfacing only ad-hoc work). 3/4 of the MINUTE axis of the TIMESTAMP MINUTE/SECOND sub-arc. n must be an integer in [0, 59]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes — missing field does not satisfy the predicate). Mutually exclusive with --minute and --minutes. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-minutes <list>',\n 'Exclude ops whose timestamp (UTC) falls in ANY calendar minute-of-hour in this comma-separated list (0-59). Plural OR-negation of --minute — useful for inverting scheduled-job cadence audits (\"--not-minutes 0,15,30,45\" excludes every quarter-hour cron-job refactor, surfacing only ad-hoc work outside the standard scheduled grid). Each value must be an integer in [0, 59]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-minute). Mutually exclusive with --minute, --minutes, and --not-minute. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--since/--until/--type/--schema as intersection. Closes the minute axis quad (--minute + --minutes + --not-minute + --not-minutes) — 4 flags on the minute axis of the TIMESTAMP MINUTE/SECOND sub-arc.',\n )\n .option(\n '--second <n>',\n 'Filter to ops whose timestamp (UTC) falls in calendar second-of-minute n (0-59 — matches JS Date.getUTCSeconds convention). Useful for sub-minute cadence audits (\"--second 0\" finds top-of-minute scheduled-job refactors; \"--second 30\" finds half-minute offset scheduled-job refactors). OPENS the SECOND axis (4/4) of the TIMESTAMP MINUTE/SECOND sub-arc — the MINUTE axis quad closed iter 354 (--minute + --minutes + --not-minute + --not-minutes). First flag of the SECOND axis quad. n must be an integer in [0, 59]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--minute/--minutes/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--seconds <list>',\n 'Filter to ops whose timestamp (UTC) falls in ANY calendar second-of-minute in this comma-separated list (0-59). Plural OR-semantics form of --second — useful for sub-minute cadence audits (\"--seconds 0,15,30,45\" finds every quarter-minute scheduled-job refactor in one pass; \"--seconds 0,30\" finds top-of-minute + half-past). Each value must be an integer in [0, 59]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --second. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--minute/--minutes/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--not-second <n>',\n 'Exclude ops whose timestamp (UTC) falls in calendar second-of-minute n (0-59 — matches JS Date.getUTCSeconds convention). Negation of --second — useful for excluding noisy scheduled-job seconds from ad-hoc cadence audits (\"--not-second 0\" excludes top-of-minute scheduled-job refactors, surfacing only ad-hoc work). 3/4 of the SECOND axis of the TIMESTAMP MINUTE/SECOND sub-arc. n must be an integer in [0, 59]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes — missing field does not satisfy the predicate). Mutually exclusive with --second and --seconds. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--minute/--minutes/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-seconds <list>',\n 'Exclude ops whose timestamp (UTC) falls in ANY calendar second-of-minute in this comma-separated list (0-59). Plural OR-negation of --second — useful for inverting scheduled-job cadence audits (\"--not-seconds 0,15,30,45\" excludes every quarter-minute cron-job refactor, surfacing only ad-hoc work outside the standard scheduled grid). Each value must be an integer in [0, 59]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-second). Mutually exclusive with --second, --seconds, and --not-second. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--minute/--minutes/--since/--until/--type/--schema as intersection. CLOSES the second axis quad (--second + --seconds + --not-second + --not-seconds) — 4 flags on the second axis, CLOSING THE TIMESTAMP MINUTE/SECOND SUB-ARC (8 paired flags across MINUTE + SECOND axes; combined with the 16-flag TIMESTAMP CALENDAR-PART sub-arc, this completes 24 paired timestamp-component flags spanning year/month/day-of-week/hour/minute/second).',\n )\n .option(\n '--day-of-month <n>',\n 'Filter to ops whose timestamp (UTC) falls on calendar day-of-month n (1-31 — matches JS Date.getUTCDate convention; note that this is the day-of-month, NOT the day-of-week — distinct from --day-of-week which targets 0-6 Sunday-Saturday). Useful for billing/payroll/audit cadence focus (\"--day-of-month 1\" finds first-of-month batch refactors; \"--day-of-month 15\" finds mid-month refactors; \"--day-of-month 31\" finds month-end refactors). OPENS a new TIMESTAMP DAY-OF-MONTH sub-arc on the refactor-list filter surface (immediately following the now-closed TIMESTAMP MINUTE/SECOND sub-arc that covered minute + second in 8 paired flags iters 351-358). First flag of a paired sub-arc covering day-of-month. n must be an integer in [1, 31]; out-of-range (including 0) or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--days-of-month <list>',\n 'Filter to ops whose timestamp (UTC) falls on ANY calendar day-of-month in this comma-separated list (1-31). Plural OR-semantics form of --day-of-month — useful for fiscal-period audits (\"--days-of-month 1,15\" finds twice-monthly payroll-cycle refactors; \"--days-of-month 1,7,14,21,28\" finds weekly-of-month cadence; \"--days-of-month 28,29,30,31\" finds month-end-window refactors regardless of month length). Each value must be an integer in [1, 31]; out-of-range (including 0) or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --day-of-month. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--not-day-of-month <n>',\n 'Exclude ops whose timestamp (UTC) falls on calendar day-of-month n (1-31 — matches JS Date.getUTCDate convention). Negation of --day-of-month — useful for excluding noisy month-boundary refactors from ad-hoc cadence audits (\"--not-day-of-month 1\" excludes first-of-month batch refactors, surfacing only mid-month ad-hoc work; \"--not-day-of-month 15\" excludes mid-month payroll ops). 3/4 of the DAY-OF-MONTH axis of the TIMESTAMP DAY-OF-MONTH sub-arc. n must be an integer in [1, 31]; out-of-range (including 0) or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes). Mutually exclusive with --day-of-month and --days-of-month. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-days-of-month <list>',\n 'Exclude ops whose timestamp (UTC) falls on ANY calendar day-of-month in this comma-separated list (1-31). Plural OR-negation of --day-of-month — useful for inverting fiscal-period audits (\"--not-days-of-month 1,15\" excludes twice-monthly payroll-cycle refactors, surfacing only ad-hoc mid-period work; \"--not-days-of-month 28,29,30,31\" excludes month-end-window batches). Each value must be an integer in [1, 31]; out-of-range (including 0) or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-day-of-month). Mutually exclusive with --day-of-month, --days-of-month, and --not-day-of-month. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection. CLOSES the day-of-month axis quad (--day-of-month + --days-of-month + --not-day-of-month + --not-days-of-month) — 4 flags on the day-of-month axis, CLOSING the DAY-OF-MONTH sub-arc (4 paired flags on the day-of-month axis; combined with the 24 prior timestamp-component flags spanning year/month/day-of-week/hour/minute/second, this completes 28 paired timestamp-component flags across SEVEN axes).',\n )\n .option(\n '--quarter <n>',\n 'Filter to ops whose timestamp (UTC) falls in calendar quarter n (1-4 — derived as Math.floor(Date.getUTCMonth() / 3) + 1; Q1=Jan-Mar, Q2=Apr-Jun, Q3=Jul-Sep, Q4=Oct-Dec). Useful for quarterly business-review focus (\"--quarter 4\" finds every Oct-Nov-Dec refactor for end-of-fiscal-year audit; \"--quarter 1\" finds every Jan-Feb-Mar refactor for start-of-year planning). OPENS a new TIMESTAMP QUARTER sub-arc on the refactor-list filter surface — the EIGHTH timestamp-component axis on the refactor-list filter surface (year + month + day-of-week + day-of-month + hour + minute + second already complete). First flag of a paired sub-arc covering quarter. n must be an integer in [1, 4]; out-of-range (including 0) or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--quarters <list>',\n 'Filter to ops whose timestamp (UTC) falls in ANY calendar quarter in this comma-separated list (1-4). Plural OR-semantics form of --quarter — useful for half-year/multi-quarter audits (\"--quarters 1,2\" finds every H1 refactor; \"--quarters 3,4\" finds every H2 refactor; \"--quarters 1,3\" finds odd-quarter refactors). Each value must be an integer in [1, 4]; out-of-range (including 0) or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --quarter. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--not-quarter <n>',\n 'Exclude ops whose timestamp (UTC) falls in calendar quarter n (1-4 — derived as Math.floor(Date.getUTCMonth() / 3) + 1; Q1=Jan-Mar, Q2=Apr-Jun, Q3=Jul-Sep, Q4=Oct-Dec). Negation of --quarter — useful for excluding seasonal noise from ad-hoc audits (\"--not-quarter 4\" excludes year-end Oct-Nov-Dec refactors, surfacing only first-three-quarter activity; \"--not-quarter 1\" excludes start-of-year planning ops). 3/4 of the QUARTER axis of the TIMESTAMP QUARTER sub-arc, mirroring the not-year, not-month, not-day-of-week, not-day-of-month, not-hour, not-minute, and not-second axes. n must be an integer in [1, 4]; out-of-range (including 0) or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes — missing field does not satisfy the predicate). Mutually exclusive with --quarter and --quarters. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-quarters <list>',\n 'Exclude ops whose timestamp (UTC) falls in ANY calendar quarter in this comma-separated list (1-4). Plural OR-negation of --quarter — useful for inverting half-year/multi-quarter audits (\"--not-quarters 1,2\" excludes H1 refactors, surfacing only H2 activity; \"--not-quarters 3,4\" excludes H2 refactors; \"--not-quarters 1,3\" excludes odd-quarter refactors). Each value must be an integer in [1, 4]; out-of-range (including 0) or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-quarter). Mutually exclusive with --quarter, --quarters, and --not-quarter. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection. CLOSES the quarter-axis quad (--quarter + --quarters + --not-quarter + --not-quarters) — 4 flags on the quarter axis, CLOSING THE TIMESTAMP QUARTER SUB-ARC.',\n )\n .option(\n '--day-of-year <n>',\n 'Filter to ops whose timestamp (UTC) falls on calendar day-of-year n (1-366; computed as floor((timestamp - Jan 1 of same year UTC) / 86400000) + 1). Useful for anniversary / fiscal-period audits (\"--day-of-year 1\" finds every Jan-1 New-Year-Day refactor across years; \"--day-of-year 60\" finds every Mar-1 in non-leap years and every Feb-29 in leap years; \"--day-of-year 366\" finds every leap-year Dec 31). OPENS a new TIMESTAMP DAY-OF-YEAR sub-arc on the refactor-list filter surface — the NINTH timestamp-component axis (year + month + day-of-week + day-of-month + hour + minute + second + quarter already complete iters 335-366). First flag of a paired sub-arc covering day-of-year. n must be an integer in [1, 366]; out-of-range (including 0) or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--days-of-year <list>',\n 'Filter to ops whose timestamp (UTC) falls on ANY calendar day-of-year in this comma-separated list (1-366). Plural OR-semantics form of --day-of-year — useful for multi-anniversary audits (\"--days-of-year 1,185,365\" finds every Jan-1 + Jul-4 + Dec-31 refactor in one pass — the US-civic-holiday trifecta; \"--days-of-year 60,61\" finds every Feb-29 (leap) + Mar-1 (non-leap)/Mar-1 (leap) ambiguous-window refactor). Each value must be an integer in [1, 366]; out-of-range (including 0) or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --day-of-year. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--not-day-of-year <n>',\n 'Exclude ops whose timestamp (UTC) falls on calendar day-of-year n (1-366; computed as floor((timestamp - Jan 1 of same year UTC) / 86400000) + 1). Negation of --day-of-year — useful for excluding anniversary noise from ad-hoc cadence audits (\"--not-day-of-year 1\" excludes Jan-1 New-Year-Day refactors; \"--not-day-of-year 365\" excludes year-end Dec-31 refactors). 3/4 of the DAY-OF-YEAR axis of the TIMESTAMP DAY-OF-YEAR sub-arc, mirroring the not-year, not-month, not-day-of-week, not-day-of-month, not-quarter, not-hour, not-minute, and not-second axes. n must be an integer in [1, 366]; out-of-range (including 0) or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes — missing field does not satisfy the predicate). Mutually exclusive with --day-of-year and --days-of-year. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-days-of-year <list>',\n 'Exclude ops whose timestamp (UTC) falls on ANY calendar day-of-year in this comma-separated list (1-366). Plural OR-negation of --day-of-year — useful for inverting multi-anniversary audits (\"--not-days-of-year 1,185,365\" excludes US-civic-trifecta Jan-1 + Jul-4 + Dec-31 in one pass — surfaces non-holiday-anniversary refactors; \"--not-days-of-year 60,61\" excludes leap-bridge Feb-29 + Mar-1 ambiguous window). Each value must be an integer in [1, 366]; out-of-range (including 0) or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-day-of-year). Mutually exclusive with --day-of-year, --days-of-year, and --not-day-of-year. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection. CLOSES the day-of-year axis quad (--day-of-year + --days-of-year + --not-day-of-year + --not-days-of-year) — 4 flags on the day-of-year axis, CLOSING THE TIMESTAMP DAY-OF-YEAR SUB-ARC. The 9th completed timestamp-component axis on the refactor-list filter surface (after year/month/day-of-week/day-of-month/hour/minute/second/quarter + day-of-year = 9 axes × 4 flags = 36 paired timestamp-component flags).',\n )\n .option(\n '--week-of-year <n>',\n 'Filter to ops whose timestamp (UTC) falls in calendar week-of-year n (1-53; computed as floor((timestamp - Jan 1 of same year UTC) / 86400000 / 7) + 1 — \"simple week\" definition where week 1 = days 1-7 of the year, week 2 = days 8-14, etc.). Useful for sprint / weekly cadence audits (\"--week-of-year 1\" finds every first-week-of-year refactor; \"--week-of-year 26\" finds every mid-year week-26 refactor; \"--week-of-year 53\" finds end-of-year overflow-week refactors which only exist in years where Dec 31 lands on day 365+). OPENS a new TIMESTAMP WEEK-OF-YEAR sub-arc on the refactor-list filter surface — the TENTH timestamp-component axis (year + month + day-of-week + day-of-month + hour + minute + second + quarter + day-of-year already complete iters 335-370). First flag of a paired sub-arc covering week-of-year. n must be an integer in [1, 53]; out-of-range (including 0) or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--weeks-of-year <list>',\n 'Filter to ops whose timestamp (UTC) falls in ANY calendar week-of-year in this comma-separated list (1-53). Plural OR-semantics form of --week-of-year — useful for multi-sprint audits (\"--weeks-of-year 1,2,3,4\" finds every January refactor (~first 4 weeks); \"--weeks-of-year 14,27,40\" finds quarter-boundary weeks; \"--weeks-of-year 1,53\" finds first + overflow week refactors). Each value must be an integer in [1, 53]; out-of-range (including 0) or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --week-of-year. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--not-week-of-year <n>',\n 'Exclude ops whose timestamp (UTC) falls in calendar week-of-year n (1-53; \"simple week\" definition where week 1 = days 1-7 of the year, etc.). Negation of --week-of-year — useful for excluding sprint-boundary noise from ad-hoc cadence audits (\"--not-week-of-year 1\" excludes first-week-of-year refactors; \"--not-week-of-year 53\" excludes year-end overflow-week refactors). 3/4 of the WEEK-OF-YEAR axis of the TIMESTAMP WEEK-OF-YEAR sub-arc, mirroring the not-year, not-month, not-day-of-week, not-day-of-month, not-quarter, not-day-of-year, not-hour, not-minute, and not-second axes. n must be an integer in [1, 53]; out-of-range (including 0) or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes). Mutually exclusive with --week-of-year and --weeks-of-year. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-weeks-of-year <list>',\n 'Exclude ops whose timestamp (UTC) falls in ANY calendar week-of-year in this comma-separated list (1-53). Plural OR-negation of --week-of-year — useful for inverting multi-sprint audits (\"--not-weeks-of-year 1,2,3,4\" excludes January sprints surfacing only non-January refactors; \"--not-weeks-of-year 13,27,40\" excludes quarter-boundary weeks; \"--not-weeks-of-year 1,53\" excludes first + overflow week refactors). Each value must be an integer in [1, 53]; out-of-range (including 0) or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-week-of-year). Mutually exclusive with --week-of-year, --weeks-of-year, and --not-week-of-year. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection. CLOSES the week-of-year axis quad (--week-of-year + --weeks-of-year + --not-week-of-year + --not-weeks-of-year) — 4 flags on the week-of-year axis, CLOSING THE TIMESTAMP WEEK-OF-YEAR SUB-ARC. The 10th completed timestamp-component axis on the refactor-list filter surface (after year + month + day-of-week + day-of-month + hour + minute + second + quarter + day-of-year + week-of-year = 10 axes × 4 flags = 40 paired timestamp-component flags).',\n )\n .option(\n '--week-of-month <n>',\n 'Filter to ops whose timestamp (UTC) falls in calendar week-of-month n (1-5; computed as floor((UTC day-of-month - 1) / 7) + 1 — \"simple week-of-month\" definition where week 1 = days 1-7 of the month, week 2 = days 8-14, week 3 = days 15-21, week 4 = days 22-28, week 5 = days 29-31 (only months with 29+ days)). Useful for intra-month cadence audits (\"--week-of-month 1\" finds every first-week-of-month refactor across all months — first-week-of-month sprint pattern; \"--week-of-month 5\" finds end-of-month refactors that landed on days 29-31, typically month-end batch jobs; \"--week-of-month 3\" finds mid-month refactors). OPENS a new TIMESTAMP WEEK-OF-MONTH sub-arc on the refactor-list filter surface — the ELEVENTH timestamp-component axis (year + month + day-of-week + day-of-month + hour + minute + second + quarter + day-of-year + week-of-year already complete iters 335-374). First flag of a paired sub-arc covering week-of-month. n must be an integer in [1, 5]; out-of-range (including 0) or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--week-of-year/--weeks-of-year/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--weeks-of-month <list>',\n 'Filter to ops whose timestamp (UTC) falls in ANY calendar week-of-month in this comma-separated list (1-5). Plural OR-semantics form of --week-of-month — useful for multi-week intra-month audits (\"--weeks-of-month 1,5\" finds every first-week + last-week-of-month refactor across all months — bracket-of-month bookends; \"--weeks-of-month 1,2\" finds every early-month refactor (days 1-14); \"--weeks-of-month 4,5\" finds end-of-month refactors (days 22-31)). Each value must be an integer in [1, 5]; out-of-range (including 0) or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --week-of-month. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--week-of-year/--weeks-of-year/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--not-week-of-month <n>',\n 'Exclude ops whose timestamp (UTC) falls in calendar week-of-month n (1-5; computed as floor((UTC day-of-month - 1) / 7) + 1 — \"simple week-of-month\" definition). Negation of --week-of-month — useful for excluding intra-month sprint noise from ad-hoc cadence audits (\"--not-week-of-month 1\" excludes first-week-of-month sprint refactors surfacing only mid/late-month work; \"--not-week-of-month 5\" excludes end-of-month batch-job refactors). 3/4 of the WEEK-OF-MONTH axis of the TIMESTAMP WEEK-OF-MONTH sub-arc, mirroring the not-year, not-month, not-day-of-week, not-day-of-month, not-quarter, not-day-of-year, not-week-of-year, not-hour, not-minute, and not-second axes. n must be an integer in [1, 5]; out-of-range (including 0) or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes — a missing field does not satisfy the predicate, so isn\\'t excluded). Mutually exclusive with --week-of-month and --weeks-of-month. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--week-of-year/--weeks-of-year/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-weeks-of-month <list>',\n 'Exclude ops whose timestamp (UTC) falls in ANY calendar week-of-month in this comma-separated list (1-5). Plural OR-negation of --week-of-month — useful for inverting multi-week intra-month audits (\"--not-weeks-of-month 1,5\" excludes first-week + last-week-of-month refactors surfacing only mid-month work (days 8-28); \"--not-weeks-of-month 1,2\" excludes early-month sprint refactors; \"--not-weeks-of-month 4,5\" excludes end-of-month batch refactors). Each value must be an integer in [1, 5]; out-of-range (including 0) or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-week-of-month). Mutually exclusive with --week-of-month, --weeks-of-month, and --not-week-of-month. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--week-of-year/--weeks-of-year/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection. CLOSES the week-of-month axis quad (--week-of-month + --weeks-of-month + --not-week-of-month + --not-weeks-of-month) — 4 flags on the week-of-month axis, CLOSING THE TIMESTAMP WEEK-OF-MONTH SUB-ARC. The 11th completed timestamp-component axis on the refactor-list filter surface (after year + month + day-of-week + day-of-month + hour + minute + second + quarter + day-of-year + week-of-year + week-of-month = 11 axes × 4 flags = 44 paired timestamp-component flags).',\n )\n .option(\n '--millisecond <n>',\n 'Filter to ops whose timestamp (UTC) has millisecond-of-second component n (0-999; the sub-second fraction, Date.getUTCMilliseconds()). Useful for diagnostic precision audits (\"--millisecond 0\" finds every refactor logged on a whole-second boundary — typically synthetic / test-seeded ops, since real wall-clock timestamps almost never land exactly on .000). OPENS a new TIMESTAMP MILLISECOND sub-arc on the refactor-list filter surface — the TWELFTH timestamp-component axis, completing the time-of-day component hierarchy hour → minute → second → millisecond (year + month + day-of-week + day-of-month + hour + minute + second + quarter + day-of-year + week-of-year + week-of-month already complete iters 335-378). First flag of a paired sub-arc covering millisecond. n must be an integer in [0, 999]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--week-of-year/--weeks-of-year/--week-of-month/--weeks-of-month/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--milliseconds <list>',\n 'Filter to ops whose timestamp (UTC) has millisecond-of-second component matching ANY value in this comma-separated list (0-999). Plural OR-semantics form of --millisecond — useful for multi-value diagnostic precision audits (\"--milliseconds 0,500\" finds every refactor on a whole-second or half-second boundary — synthetic / test-seeded ops; \"--milliseconds 0,250,500,750\" finds every quarter-second-boundary op). Each value must be an integer in [0, 999]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --millisecond. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--week-of-year/--weeks-of-year/--week-of-month/--weeks-of-month/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--not-millisecond <n>',\n 'Exclude ops whose timestamp (UTC) has millisecond-of-second component n (0-999; the sub-second fraction, Date.getUTCMilliseconds()). Negation of --millisecond — useful for excluding synthetic / test-seeded ops from precision audits (\"--not-millisecond 0\" excludes every whole-second-boundary refactor, surfacing only real wall-clock-timestamped ops). 3/4 of the MILLISECOND axis of the TIMESTAMP MILLISECOND sub-arc, mirroring the not-year, not-month, not-day-of-week, not-day-of-month, not-quarter, not-day-of-year, not-week-of-year, not-week-of-month, not-hour, not-minute, and not-second axes. n must be an integer in [0, 999]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with other --not-* axes — a missing field does not satisfy the predicate, so isn\\'t excluded). Mutually exclusive with --millisecond and --milliseconds. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--week-of-year/--weeks-of-year/--week-of-month/--weeks-of-month/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--not-milliseconds <list>',\n 'Exclude ops whose timestamp (UTC) has millisecond-of-second component matching ANY value in this comma-separated list (0-999). Plural OR-negation of --millisecond — useful for inverting multi-value precision audits (\"--not-milliseconds 0,500\" excludes every whole-second + half-second-boundary refactor, surfacing only off-grid real-wall-clock ops; \"--not-milliseconds 0,250,500,750\" excludes all quarter-second-boundary synthetic ops). Each value must be an integer in [0, 999]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are KEPT (symmetric with --not-millisecond). Mutually exclusive with --millisecond, --milliseconds, and --not-millisecond. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--week-of-year/--weeks-of-year/--week-of-month/--weeks-of-month/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--since/--until/--type/--schema as intersection. CLOSES the millisecond axis quad (--millisecond + --milliseconds + --not-millisecond + --not-milliseconds) — 4 flags on the millisecond axis, CLOSING THE TIMESTAMP MILLISECOND SUB-ARC. The 12th completed timestamp-component axis on the refactor-list filter surface (after year + month + day-of-week + day-of-month + hour + minute + second + quarter + day-of-year + week-of-year + week-of-month + millisecond = 12 axes × 4 flags = 48 paired timestamp-component flags).',\n )\n .option(\n '--minute-of-day <n>',\n 'Filter to ops whose timestamp (UTC) falls at minute-of-day n (0-1439; computed as Date.getUTCHours() * 60 + Date.getUTCMinutes() — the count of minutes elapsed since UTC midnight). Useful for fine-grained time-of-day cadence audits in a single number (\"--minute-of-day 0\" finds every midnight-UTC refactor; \"--minute-of-day 720\" finds every noon-UTC refactor; \"--minute-of-day 1439\" finds the last-minute-of-day 23:59 refactors). OPENS a new TIMESTAMP MINUTE-OF-DAY sub-arc on the refactor-list filter surface — the THIRTEENTH timestamp-component axis, a composite single-number time-of-day axis (parallel to day-of-year which is a composite of month + day-of-month). First flag of a paired sub-arc covering minute-of-day. n must be an integer in [0, 1439]; out-of-range or non-numeric refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--week-of-year/--weeks-of-year/--week-of-month/--weeks-of-month/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--millisecond/--milliseconds/--since/--until/--type as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--minutes-of-day <list>',\n 'Filter to ops whose timestamp (UTC) minute-of-day (Date.getUTCHours() * 60 + Date.getUTCMinutes(), 0-1439) matches ANY value in this comma-separated list. Plural OR-semantics form of --minute-of-day — useful for multi-window time-of-day audits (\"--minutes-of-day 0,720\" finds every midnight + noon refactor; \"--minutes-of-day 540,1020\" finds 09:00 + 17:00 work-day boundary refactors). Each value must be an integer in [0, 1439]; out-of-range or non-numeric entry refuses with exit 1. Whitespace around commas is trimmed. Empty list refuses with exit 1. Ops with no timestamp or unparseable timestamp are excluded. Mutually exclusive with --minute-of-day. Composes orthogonally with --year/--years/--month/--months/--day-of-week/--days-of-week/--day-of-month/--days-of-month/--day-of-year/--days-of-year/--week-of-year/--weeks-of-year/--week-of-month/--weeks-of-month/--quarter/--quarters/--hour/--hours/--minute/--minutes/--second/--seconds/--millisecond/--milliseconds/--since/--until/--type/--schema as intersection.',\n )\n .option(\n '--id <id>',\n 'Filter to the single op with this id. Composes with other filters as an additional intersection (useful for sanity-checking that op-X is within a time range).',\n )\n .option(\n '--ids <ids>',\n 'Filter to ops whose id equals any value in this comma-separated list (case-sensitive). Plural form of --id — useful audit filter (\"--ids op-abc,op-def,op-123\" pulls every named op in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --id and --not-id.',\n )\n .option(\n '--not-ids <ids>',\n 'Exclude ops whose id equals any value in this comma-separated list (case-sensitive). Plural negation of --id — useful audit filter (\"--not-ids op-abc,op-def,op-123\" finds every op except the named ones in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --id, --not-id, and --ids.',\n )\n .option(\n '--not-id <id>',\n 'Exclude the single op with this id (case-sensitive exact match). Negation of --id — useful precision audit filter (\"--not-id op-abc-123\" finds every op except that one without false-matching shared prefixes / suffixes). Mutually exclusive with --id.',\n )\n .option(\n '--id-prefix <prefix>',\n 'Filter to ops whose id starts with this prefix (case-sensitive). Useful when looking up an op by a truncated UUID from a CI log. Composes with other filters as intersection.',\n )\n .option(\n '--not-id-prefix <prefix>',\n 'Exclude ops whose id starts with this prefix (case-sensitive). Negation of --id-prefix — useful audit filter (\"--not-id-prefix abc123\" excludes every op generated by the abc123-* CI run). Mutually exclusive with --id-prefix.',\n )\n .option(\n '--id-prefixes <prefixes>',\n 'Filter to ops whose id starts with any prefix in this comma-separated list (case-sensitive). Plural OR-semantics form of --id-prefix — useful for multi-CI-run audits (\"--id-prefixes abc123,def456,ghi789\" finds every op from any of three CI runs in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --id-prefix and --not-id-prefix.',\n )\n .option(\n '--not-id-prefixes <prefixes>',\n 'Exclude ops whose id starts with any prefix in this comma-separated list (case-sensitive). Plural OR-negation of --id-prefix — useful audit filter (\"--not-id-prefixes abc123,def456,ghi789\" finds every op except those from three named CI runs in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --id-prefix, --not-id-prefix, and --id-prefixes.',\n )\n .option(\n '--id-suffix <suffix>',\n 'Filter to ops whose id ends with this suffix (case-sensitive). Mirror of --id-prefix. Useful when a CI log only shows the tail of a UUID (\"the op whose id ends in ...9bc\"). Composes with other filters as intersection.',\n )\n .option(\n '--not-id-suffix <suffix>',\n 'Exclude ops whose id ends with this suffix (case-sensitive). Negation of --id-suffix — useful audit filter (\"--not-id-suffix 9bc\" excludes ops whose UUID ends in that tail). Mutually exclusive with --id-suffix.',\n )\n .option(\n '--id-suffixes <suffixes>',\n 'Filter to ops whose id ends with any suffix in this comma-separated list (case-sensitive). Plural OR-semantics form of --id-suffix — useful for multi-CI-run audits when only the UUID tail is known (\"--id-suffixes 9bc,1f2,abc\" finds every op whose id ends in any of three tails in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --id-suffix and --not-id-suffix.',\n )\n .option(\n '--not-id-suffixes <suffixes>',\n 'Exclude ops whose id ends with any suffix in this comma-separated list (case-sensitive). Plural OR-negation of --id-suffix — useful audit filter (\"--not-id-suffixes 9bc,1f2,abc\" finds every op except those whose UUID ends in three named tails in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --id-suffix, --not-id-suffix, and --id-suffixes.',\n )\n .option(\n '--id-contains <substring>',\n 'Filter to ops whose id contains this substring (case-sensitive). Useful when only a middle segment of a UUID is known (e.g. an embedded request-id). Composes with --id-prefix + --id-suffix to bracket a known middle.',\n )\n .option(\n '--not-id-contains <substring>',\n 'Exclude ops whose id contains this substring (case-sensitive). Negation of --id-contains — useful audit filter (\"--not-id-contains abc\" excludes every op whose UUID embeds that mid-segment, leaving the rest). Mutually exclusive with --id-contains.',\n )\n .option(\n '--id-contains-any <substrings>',\n 'Filter to ops whose id contains ANY substring in this comma-separated list (case-sensitive — UUIDs are case-sensitive). Plural OR-semantics form of --id-contains — useful for multi-CI-run mid-id audits (\"--id-contains-any abc,def,ghi\" finds every op whose UUID embeds any of three known mid-segments in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --id-contains and --not-id-contains.',\n )\n .option(\n '--not-id-contains-any <substrings>',\n 'Exclude ops whose id contains ANY substring in this comma-separated list (case-sensitive). Plural OR-negation of --id-contains — useful audit filter (\"--not-id-contains-any abc,def,ghi\" finds every op except those whose UUID embeds any of three known mid-segments in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --id-contains, --not-id-contains, and --id-contains-any.',\n )\n .option(\n '--id-contains-all <substrings>',\n 'Filter to ops whose id contains EVERY substring in this comma-separated list (case-sensitive — UUIDs are case-sensitive, mirrors --id-contains and --id-contains-any). Plural AND-semantics form of --id-contains — useful for narrow CI-run audits where multiple mid-id segments must co-occur (\"--id-contains-all abc,xyz\" finds every op whose UUID contains BOTH abc AND xyz in any order/position, e.g. abc-123-xyz). Whitespace around commas is trimmed. Mutually exclusive with --id-contains, --not-id-contains, --id-contains-any, and --not-id-contains-any.',\n )\n .option(\n '--not-id-contains-all <substrings>',\n 'Exclude ops whose id contains EVERY substring in this comma-separated list (case-sensitive — UUIDs are case-sensitive, mirrors --not-id-contains and --not-id-contains-any). Plural AND-negation of --id-contains — useful audit filter (\"--not-id-contains-all abc,xyz\" excludes ONLY ops whose UUID contains BOTH abc and xyz, keeping ops with just one keyword or neither). Whitespace around commas is trimmed. Mutually exclusive with --id-contains, --not-id-contains, --id-contains-any, --not-id-contains-any, and --id-contains-all.',\n )\n .option(\n '--id-regex <pattern>',\n \"Filter to ops whose id matches this JavaScript regular expression (**case-sensitive** — UUIDs are case-sensitive, mirrors --id-contains and the id-contains-any/all family). Power-user complement to --id-contains-any for full pattern matching on the ID axis: anchors (^/$), character classes ([0-9a-f]/\\\\d/\\\\w), quantifiers, groups, alternation (foo|bar), lookaround. Useful for UUID-shape audits (\\\"--id-regex '^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$'\\\" finds every op with a strictly-formatted v4 UUID — the canonical RFC-4122 shape check). Invalid regex syntax refuses with exit 1. Ops with no id are excluded (a missing id doesn't match anything — symmetric with --id-contains-any). Mutually exclusive with --id-contains, --not-id-contains, --id-contains-any, --not-id-contains-any, --id-contains-all, and --not-id-contains-all.\",\n )\n .option(\n '--not-id-regex <pattern>',\n \"Exclude ops whose id matches this JavaScript regular expression (**case-sensitive** — UUIDs are case-sensitive, mirrors --not-id-contains and the id-contains-any/all family). Power-user negation complement to --not-id-contains-any for full pattern-based exclusion on the ID axis: anchors (^/$), character classes, quantifiers, groups, alternation, lookaround. Useful audit filter (\\\"--not-id-regex '^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$'\\\" finds every op whose id is NOT a strictly-formatted v4 UUID — the non-canonical id audit, surfaces ops with legacy/test-shaped ids). Invalid regex syntax refuses with exit 1. Ops with no id are KEPT (a missing id doesn't match anything, so it isn't excluded — symmetric with --not-id-contains-any). Mutually exclusive with --id-contains, --not-id-contains, --id-contains-any, --not-id-contains-any, --id-contains-all, --not-id-contains-all, and --id-regex.\",\n )\n .option(\n '--note-contains <text>',\n 'Filter to ops whose note contains this substring (case-insensitive). Composes with other filters as intersection. Useful for finding ops tagged with a project/ticket reference.',\n )\n .option(\n '--not-note-contains <text>',\n 'Exclude ops whose note contains this substring (case-insensitive). Negation of --note-contains — useful audit filter (\"show me ops not yet tagged with PROJ-1\"). Ops with no note are KEPT (a missing note doesn\\'t contain anything, so it isn\\'t excluded). To exclude un-noted ops too, compose with --has-note. Mutually exclusive with --note-contains.',\n )\n .option(\n '--note-contains-any <texts>',\n 'Filter to ops whose note contains ANY substring in this comma-separated list (case-insensitive). Plural OR-semantics form of --note-contains — useful for multi-keyword audits (\"--note-contains-any PROJ-,JIRA-,TKT-\" finds every refactor whose note mentions a ticket from any of three namespaces anywhere in the text, not just at the start). Whitespace around commas is trimmed. Ops with no note are excluded (a missing note doesn\\'t contain anything). Mutually exclusive with --note-contains and --not-note-contains.',\n )\n .option(\n '--not-note-contains-any <texts>',\n 'Exclude ops whose note contains ANY substring in this comma-separated list (case-insensitive). Plural OR-negation of --note-contains — useful audit filter (\"--not-note-contains-any PROJ-,JIRA-,TKT- finds every refactor whose note avoids any of three keywords\"). Whitespace around commas is trimmed. Ops with no note are KEPT (a missing note doesn\\'t contain anything). To exclude un-noted ops too, compose with --has-note. Mutually exclusive with --note-contains, --not-note-contains, and --note-contains-any.',\n )\n .option(\n '--note-contains-all <texts>',\n 'Filter to ops whose note contains EVERY substring in this comma-separated list (case-insensitive). Plural AND-semantics form of --note-contains — useful for narrow audits where multiple keywords must co-occur (\"--note-contains-all hotfix,rollback\" finds every refactor whose note mentions BOTH hotfix and rollback anywhere in the text). Whitespace around commas is trimmed. Ops with no note are excluded (a missing note doesn\\'t contain anything). Mutually exclusive with --note-contains, --not-note-contains, --note-contains-any, and --not-note-contains-any.',\n )\n .option(\n '--not-note-contains-all <texts>',\n 'Exclude ops whose note contains EVERY substring in this comma-separated list (case-insensitive). Plural AND-negation of --note-contains — useful audit filter (\"--not-note-contains-all hotfix,rollback\" excludes only refactors whose note mentions BOTH hotfix and rollback, keeping ops that mention just one or neither). Whitespace around commas is trimmed. Ops with no note are KEPT (a missing note doesn\\'t contain anything). To exclude un-noted ops too, compose with --has-note. Mutually exclusive with --note-contains, --not-note-contains, --note-contains-any, --not-note-contains-any, and --note-contains-all.',\n )\n .option(\n '--note-regex <pattern>',\n \"Filter to ops whose note matches this JavaScript regular expression (case-insensitive — mirrors --note-contains*). Power-user complement to --note-contains for full pattern matching: anchors (^/$), character classes ([A-Z]/\\\\d/\\\\w/\\\\s), quantifiers (+/*/?/{n,m}), groups, alternation (foo|bar), and lookaround. Useful for compound audits (\\\"--note-regex '^(PROJ|JIRA)-[0-9]+'\\\" finds every refactor whose note begins with a ticket reference from one of two namespaces). Invalid regex syntax refuses with exit 1. Ops with no note are excluded (a missing note doesn't match anything). Mutually exclusive with --note-contains, --not-note-contains, --note-contains-any, --not-note-contains-any, --note-contains-all, and --not-note-contains-all.\",\n )\n .option(\n '--not-note-regex <pattern>',\n \"Exclude ops whose note matches this JavaScript regular expression (case-insensitive — mirrors --note-contains*). Power-user negation complement to --not-note-contains for full pattern-based exclusion: anchors (^/$), character classes, quantifiers, groups, alternation, lookaround. Useful audit filter (\\\"--not-note-regex '^(PROJ|JIRA)-[0-9]+'\\\" finds every refactor whose note does NOT begin with a ticket reference from one of two namespaces — the un-ticketed work). Invalid regex syntax refuses with exit 1. Ops with no note are KEPT (a missing note doesn't match anything, so it isn't excluded — symmetric with --not-note-contains). To exclude un-noted ops too, compose with --has-note. Mutually exclusive with --note-contains, --not-note-contains, --note-contains-any, --not-note-contains-any, --note-contains-all, --not-note-contains-all, and --note-regex.\",\n )\n .option(\n '--note-prefix <prefix>',\n 'Filter to ops whose note starts with this prefix (case-insensitive). Composes with other filters as intersection. Useful for ticket-prefix audits (\"--note-prefix PROJ-\" finds every op tagged with a PROJ-N ticket).',\n )\n .option(\n '--not-note-prefix <prefix>',\n 'Exclude ops whose note starts with this prefix (case-insensitive). Negation of --note-prefix — useful audit filter (\"--not-note-prefix PROJ-\" finds every op tagged outside the PROJ- ticket namespace). Ops with no note are KEPT (a missing note doesn\\'t start with anything). To exclude un-noted ops too, compose with --has-note. Mutually exclusive with --note-prefix.',\n )\n .option(\n '--note-prefixes <prefixes>',\n 'Filter to ops whose note starts with any prefix in this comma-separated list (case-insensitive). Plural OR-semantics form of --note-prefix — useful for multi-ticket-namespace audits (\"--note-prefixes PROJ-,JIRA-,TKT-\" finds every refactor tagged with a ticket from any of three namespaces in a single pass). Whitespace around commas is trimmed. Ops with no note are excluded (a missing note doesn\\'t start with anything). Mutually exclusive with --note-prefix and --not-note-prefix.',\n )\n .option(\n '--not-note-prefixes <prefixes>',\n 'Exclude ops whose note starts with any prefix in this comma-separated list (case-insensitive). Plural OR-negation of --note-prefix — useful audit filter (\"--not-note-prefixes PROJ-,JIRA-,TKT-\" finds every refactor tagged outside any of three ticket namespaces in a single pass). Whitespace around commas is trimmed. Ops with no note are KEPT (a missing note doesn\\'t start with anything). To exclude un-noted ops too, compose with --has-note. Mutually exclusive with --note-prefix, --not-note-prefix, and --note-prefixes.',\n )\n .option(\n '--note-suffix <suffix>',\n 'Filter to ops whose note ends with this suffix (case-insensitive). Mirror of --note-prefix. Composes with other filters as intersection. Useful for \"find ops tagged with a specific trailing label\" workflows (\"--note-suffix [reviewed]\").',\n )\n .option(\n '--not-note-suffix <suffix>',\n 'Exclude ops whose note ends with this suffix (case-insensitive). Negation of --note-suffix — useful audit filter (\"--not-note-suffix [reviewed]\" finds every op still missing the reviewed label). Ops with no note are KEPT (a missing note doesn\\'t end with anything). To exclude un-noted ops too, compose with --has-note. Mutually exclusive with --note-suffix.',\n )\n .option(\n '--note-suffixes <suffixes>',\n 'Filter to ops whose note ends with any suffix in this comma-separated list (case-insensitive). Plural OR-semantics form of --note-suffix — useful for multi-label audits (\"--note-suffixes [reviewed],[approved],[merged]\" finds every refactor tagged with any trailing approval label in a single pass). Whitespace around commas is trimmed. Ops with no note are excluded (a missing note doesn\\'t end with anything). Mutually exclusive with --note-suffix and --not-note-suffix.',\n )\n .option(\n '--not-note-suffixes <suffixes>',\n 'Exclude ops whose note ends with any suffix in this comma-separated list (case-insensitive). Plural OR-negation of --note-suffix — useful audit filter (\"--not-note-suffixes [reviewed],[approved],[merged]\" finds every refactor still missing any of three approval labels in a single pass). Whitespace around commas is trimmed. Ops with no note are KEPT (a missing note doesn\\'t end with anything). To exclude un-noted ops too, compose with --has-note. Mutually exclusive with --note-suffix, --not-note-suffix, and --note-suffixes.',\n )\n .option(\n '--note-exact <text>',\n 'Filter to ops whose note equals this text (case-insensitive). Precision lookup — useful when many ops share a common note prefix/suffix and you need the one with the exact note value. Composes with other filters as intersection.',\n )\n .option(\n '--notes <texts>',\n 'Filter to ops whose note equals any text in this comma-separated list (case-insensitive). Plural form of --note-exact — useful audit filter (\"--notes PROJ-1,PROJ-2,PROJ-3\" finds every refactor tagged with any of those notes in a single pass). Whitespace around commas is trimmed (notes with embedded commas can\\'t use this; use --note-exact for those). Mutually exclusive with --note-exact and --not-note-exact.',\n )\n .option(\n '--not-notes <texts>',\n 'Exclude ops whose note equals any text in this comma-separated list (case-insensitive). Plural negation of --note-exact — useful audit filter (\"--not-notes PROJ-1,PROJ-2,PROJ-3\" finds every refactor except those tagged with the named notes in a single pass). Whitespace around commas is trimmed. Ops with no note are KEPT (a missing note doesn\\'t equal anything; compose with --has-note to exclude un-noted ops too). Mutually exclusive with --note-exact, --not-note-exact, and --notes.',\n )\n .option(\n '--not-note-exact <text>',\n 'Exclude ops whose note equals this text (case-insensitive). Negation of --note-exact — useful precision audit filter (\"--not-note-exact \\'PROJ-1\\'\" finds every op except the one with that exact note, without false-matching \"PROJ-1 followup\" / \"PROJ-1 part 2\"). Ops with no note are KEPT (a missing note doesn\\'t equal anything). Mutually exclusive with --note-exact.',\n )\n .option(\n '--object-type <type>',\n 'Filter to ops whose target object.objectType matches this kind (TABLE, VIEW, MATERIALIZED_VIEW, …); case-insensitive. Composes with other filters as intersection. Pairs with the --object-type flag on rename-object/move-object recordings.',\n )\n .option(\n '--not-object-type <type>',\n 'Exclude ops whose target object.objectType matches this kind. Negation of --object-type — useful audit filter (\"show every non-TABLE refactor\"). Case-insensitive. Mutually exclusive with --object-type.',\n )\n .option(\n '--object-types <types>',\n 'Filter to ops whose target object.objectType is in this comma-separated list (case-insensitive). Plural form of --object-type — useful audit filter (\"--object-types TABLE,VIEW\" finds every refactor on a non-procedural object in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --object-type and --not-object-type.',\n )\n .option(\n '--not-object-types <types>',\n 'Exclude ops whose target object.objectType is in this comma-separated list (case-insensitive). Plural negation of --object-type — useful audit filter (\"--not-object-types PROCEDURE,FUNCTION\" finds every non-procedural refactor in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --object-type, --not-object-type, and --object-types.',\n )\n .option(\n '--name <substring>',\n 'Filter to ops whose target object.name contains this substring (case-insensitive). Composes with other filters as intersection. Useful for \"what happened to the orders table?\" style audits.',\n )\n .option(\n '--not-name <substring>',\n 'Exclude ops whose target object.name contains this substring (case-insensitive). Negation of --name — useful audit filter (\"show me every refactor that isn\\'t on the orders table\"). Mutually exclusive with --name.',\n )\n .option(\n '--name-contains-any <substrings>',\n 'Filter to ops whose target object.name contains ANY substring in this comma-separated list (case-insensitive). Plural OR-semantics form of --name — useful for multi-keyword audits (\"--name-contains-any orders,invoices,customers\" finds every refactor on a table whose name embeds any of three keywords in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --name and --not-name.',\n )\n .option(\n '--not-name-contains-any <substrings>',\n 'Exclude ops whose target object.name contains ANY substring in this comma-separated list (case-insensitive). Plural OR-negation of --name — useful audit filter (\"--not-name-contains-any orders,invoices,customers\" finds every refactor on a table whose name doesn\\'t embed any of three keywords in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --name, --not-name, and --name-contains-any.',\n )\n .option(\n '--name-contains-all <substrings>',\n 'Filter to ops whose target object.name contains EVERY substring in this comma-separated list (case-insensitive). Plural AND-semantics form of --name — useful for narrow audits where multiple keywords must co-occur in the table name (\"--name-contains-all fact,daily\" finds every refactor on a table whose name contains BOTH fact and daily, e.g. FACT_ORDERS_DAILY). Whitespace around commas is trimmed. Mutually exclusive with --name, --not-name, --name-contains-any, and --not-name-contains-any.',\n )\n .option(\n '--not-name-contains-all <substrings>',\n 'Exclude ops whose target object.name contains EVERY substring in this comma-separated list (case-insensitive). Plural AND-negation of --name — useful audit filter (\"--not-name-contains-all fact,daily\" excludes ONLY refactors on tables whose name contains BOTH fact and daily, keeping ops on tables with just one keyword or neither). Whitespace around commas is trimmed. Mutually exclusive with --name, --not-name, --name-contains-any, --not-name-contains-any, and --name-contains-all.',\n )\n .option(\n '--name-regex <pattern>',\n \"Filter to ops whose target object.name matches this JavaScript regular expression (case-insensitive — mirrors --name-contains-any/all). Power-user complement to --name-contains-any for full pattern matching: anchors (^/$), character classes ([A-Z]/\\\\d/\\\\w/\\\\s), quantifiers (+/*/?/{n,m}), groups, alternation (foo|bar), word-boundary (\\\\b), lookaround. Useful for naming-convention audits (\\\"--name-regex '^(stg|raw|fact)_[a-z]+_v[0-9]+$'\\\" finds every versioned table on staging/raw/fact namespaces in a single pass — neither --name-prefixes nor --name-contains-any can express the trailing version anchor). Invalid regex syntax refuses with exit 1. Ops with no object.name are excluded (a missing name doesn't match anything). Mutually exclusive with --name, --not-name, --name-contains-any, --not-name-contains-any, --name-contains-all, and --not-name-contains-all.\",\n )\n .option(\n '--not-name-regex <pattern>',\n \"Exclude ops whose target object.name matches this JavaScript regular expression (case-insensitive — mirrors --name-contains-any/all). Power-user negation complement to --not-name-contains-any for full pattern-based exclusion: anchors (^/$), character classes, quantifiers, groups, alternation, lookaround. Useful audit filter (\\\"--not-name-regex '^(stg|raw)_'\\\" finds every refactor on a non-staging non-raw table — the production-tier audit). Invalid regex syntax refuses with exit 1. Ops with no object.name are KEPT (a missing name doesn't match anything, so it isn't excluded — symmetric with --not-name-contains-any). Mutually exclusive with --name, --not-name, --name-contains-any, --not-name-contains-any, --name-contains-all, --not-name-contains-all, and --name-regex.\",\n )\n .option(\n '--name-prefix <prefix>',\n 'Filter to ops whose target object.name starts with this prefix (case-insensitive). Composes with other filters as intersection. Useful for naming-convention audits (\"--name-prefix stg_\" finds every staging-table refactor).',\n )\n .option(\n '--name-prefixes <prefixes>',\n 'Filter to ops whose target object.name starts with any prefix in this comma-separated list (case-insensitive). Plural OR-semantics form of --name-prefix — useful for multi-namespace audits (\"--name-prefixes stg_,raw_,fact_\" finds every refactor on a staging, raw, or fact table in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --name-prefix and --not-name-prefix.',\n )\n .option(\n '--not-name-prefixes <prefixes>',\n 'Exclude ops whose target object.name starts with any prefix in this comma-separated list (case-insensitive). Plural OR-negation of --name-prefix — useful audit filter (\"--not-name-prefixes stg_,raw_,fact_\" finds every refactor except those on staging, raw, or fact tables in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --name-prefix, --not-name-prefix, and --name-prefixes.',\n )\n .option(\n '--not-name-prefix <prefix>',\n 'Exclude ops whose target object.name starts with this prefix (case-insensitive). Negation of --name-prefix — useful audit filter (\"--not-name-prefix stg_\" finds every non-staging refactor). Mutually exclusive with --name-prefix.',\n )\n .option(\n '--name-suffix <suffix>',\n 'Filter to ops whose target object.name ends with this suffix (case-insensitive). Mirror of --name-prefix. Composes with other filters as intersection. Useful for finding versioned-table refactors (\"--name-suffix _v2\").',\n )\n .option(\n '--name-suffixes <suffixes>',\n 'Filter to ops whose target object.name ends with any suffix in this comma-separated list (case-insensitive). Plural OR-semantics form of --name-suffix — useful for multi-version audits (\"--name-suffixes _v1,_v2,_v3\" finds every refactor on any versioned table in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --name-suffix and --not-name-suffix.',\n )\n .option(\n '--not-name-suffixes <suffixes>',\n 'Exclude ops whose target object.name ends with any suffix in this comma-separated list (case-insensitive). Plural OR-negation of --name-suffix — useful audit filter (\"--not-name-suffixes _v1,_v2,_v3\" finds every refactor except those on versioned tables in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --name-suffix, --not-name-suffix, and --name-suffixes.',\n )\n .option(\n '--not-name-suffix <suffix>',\n 'Exclude ops whose target object.name ends with this suffix (case-insensitive). Negation of --name-suffix — useful audit filter (\"--not-name-suffix _v2\" finds every non-v2 refactor). Mutually exclusive with --name-suffix.',\n )\n .option(\n '--name-exact <name>',\n 'Filter to ops whose target object.name equals this name (case-insensitive). Precision lookup — useful for short or common names where --name (substring), --name-prefix, --name-suffix would all match too many ops. Composes with other filters as intersection.',\n )\n .option(\n '--names <names>',\n 'Filter to ops whose target object.name equals any name in this comma-separated list (case-insensitive). Plural form of --name-exact — useful audit filter (\"--names orders,invoices,sales\" finds every refactor on any of those tables in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --name-exact and --not-name-exact.',\n )\n .option(\n '--not-names <names>',\n 'Exclude ops whose target object.name equals any name in this comma-separated list (case-insensitive). Plural negation of --name-exact — useful audit filter (\"--not-names orders,invoices,sales\" finds every refactor except those on the named tables in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --name-exact, --not-name-exact, and --names.',\n )\n .option(\n '--not-name-exact <name>',\n 'Exclude ops whose target object.name equals this name (case-insensitive). Negation of --name-exact — useful precision audit filter (\"--not-name-exact orders\" finds every refactor except the orders table without false-matching orders_v2 / stg_orders / etc). Mutually exclusive with --name-exact.',\n )\n .option(\n '--schema <substring>',\n 'Filter to ops whose target object.schema contains this substring (case-insensitive). Composes with other filters as intersection. Useful for \"show me all the refactors on schema marketing.\"',\n )\n .option(\n '--not-schema <substring>',\n 'Exclude ops whose target object.schema contains this substring (case-insensitive). Negation of --schema — useful audit filter (\"show every refactor that isn\\'t on schema marketing\"). Mutually exclusive with --schema.',\n )\n .option(\n '--schema-contains-any <substrings>',\n 'Filter to ops whose target object.schema contains ANY substring in this comma-separated list (case-insensitive). Plural OR-semantics form of --schema — useful for multi-namespace audits (\"--schema-contains-any marketing,finance,ops\" finds every refactor on a schema whose name embeds any of three keywords in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --schema and --not-schema.',\n )\n .option(\n '--not-schema-contains-any <substrings>',\n 'Exclude ops whose target object.schema contains ANY substring in this comma-separated list (case-insensitive). Plural OR-negation of --schema — useful audit filter (\"--not-schema-contains-any marketing,finance,ops\" finds every refactor on a schema whose name doesn\\'t embed any of three keywords in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --schema, --not-schema, and --schema-contains-any.',\n )\n .option(\n '--schema-contains-all <substrings>',\n 'Filter to ops whose target object.schema contains EVERY substring in this comma-separated list (case-insensitive). Plural AND-semantics form of --schema — useful for narrow audits where multiple keywords must co-occur in the schema name (\"--schema-contains-all finance,prod\" finds every refactor on a schema whose name contains BOTH finance and prod, e.g. finance_prod). Whitespace around commas is trimmed. Mutually exclusive with --schema, --not-schema, --schema-contains-any, and --not-schema-contains-any.',\n )\n .option(\n '--not-schema-contains-all <substrings>',\n 'Exclude ops whose target object.schema contains EVERY substring in this comma-separated list (case-insensitive). Plural AND-negation of --schema — useful audit filter (\"--not-schema-contains-all finance,prod\" excludes ONLY refactors on schemas whose name contains BOTH finance and prod, keeping schemas with just one keyword or neither). Whitespace around commas is trimmed. Mutually exclusive with --schema, --not-schema, --schema-contains-any, --not-schema-contains-any, and --schema-contains-all.',\n )\n .option(\n '--schema-regex <pattern>',\n \"Filter to ops whose target object.schema matches this JavaScript regular expression (case-insensitive — mirrors --schema-contains-any/all). Power-user complement to --schema-contains-any for full pattern matching on the SCHEMA axis: anchors (^/$), character classes, quantifiers, groups, alternation (foo|bar), lookaround. Useful for schema-naming-convention audits (\\\"--schema-regex '^(FINANCE|HR)_(PROD|STG)$'\\\" finds every refactor on a finance-or-HR production-or-staging schema in a single pass — the alternation matrix that --schema-prefixes cannot express). Invalid regex syntax refuses with exit 1. Ops with no object.schema are excluded (a missing schema doesn't match anything). Mutually exclusive with --schema, --not-schema, --schema-contains-any, --not-schema-contains-any, --schema-contains-all, and --not-schema-contains-all.\",\n )\n .option(\n '--not-schema-regex <pattern>',\n \"Exclude ops whose target object.schema matches this JavaScript regular expression (case-insensitive — mirrors --schema-contains-any/all). Power-user negation complement to --not-schema-contains-any for full pattern-based exclusion: anchors (^/$), character classes, quantifiers, groups, alternation, lookaround. Useful audit filter (\\\"--not-schema-regex '_(STG|DEV)$'\\\" finds every refactor on a non-staging non-dev schema — the production-only audit). Invalid regex syntax refuses with exit 1. Ops with no object.schema are KEPT (a missing schema doesn't match anything, so it isn't excluded — symmetric with --not-schema-contains-any). Mutually exclusive with --schema, --not-schema, --schema-contains-any, --not-schema-contains-any, --schema-contains-all, --not-schema-contains-all, and --schema-regex.\",\n )\n .option(\n '--schema-prefix <prefix>',\n 'Filter to ops whose target object.schema starts with this prefix (case-insensitive). Composes with other filters as intersection. Useful for schema-namespace audits (\"--schema-prefix stg_\" finds every refactor on staging schemas while excluding mid-name *stg_* matches that the --schema substring filter would falsely include).',\n )\n .option(\n '--not-schema-prefix <prefix>',\n 'Exclude ops whose target object.schema starts with this prefix (case-insensitive). Negation of --schema-prefix — useful audit filter (\"--not-schema-prefix stg_\" finds every non-staging refactor without false-matching mid-name *stg_* schemas). Mutually exclusive with --schema-prefix.',\n )\n .option(\n '--schema-prefixes <prefixes>',\n 'Filter to ops whose target object.schema starts with any prefix in this comma-separated list (case-insensitive). Plural OR-semantics form of --schema-prefix — useful for multi-namespace audits (\"--schema-prefixes stg_,raw_,fact_\" finds every refactor on staging, raw, or fact schemas in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --schema-prefix and --not-schema-prefix.',\n )\n .option(\n '--not-schema-prefixes <prefixes>',\n 'Exclude ops whose target object.schema starts with any prefix in this comma-separated list (case-insensitive). Plural OR-negation of --schema-prefix — useful audit filter (\"--not-schema-prefixes stg_,raw_,fact_\" finds every refactor except those on staging, raw, or fact schemas in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --schema-prefix, --not-schema-prefix, and --schema-prefixes.',\n )\n .option(\n '--schema-suffix <suffix>',\n 'Filter to ops whose target object.schema ends with this suffix (case-insensitive). Mirror of --schema-prefix. Composes with other filters as intersection. Useful for trailing-namespace audits (\"--schema-suffix _prod\" finds every refactor on production schemas while excluding mid-name _prod_ matches).',\n )\n .option(\n '--not-schema-suffix <suffix>',\n 'Exclude ops whose target object.schema ends with this suffix (case-insensitive). Negation of --schema-suffix — useful audit filter (\"--not-schema-suffix _prod\" finds every refactor on non-production schemas). Mutually exclusive with --schema-suffix.',\n )\n .option(\n '--schema-suffixes <suffixes>',\n 'Filter to ops whose target object.schema ends with any suffix in this comma-separated list (case-insensitive). Plural OR-semantics form of --schema-suffix — useful for trailing-namespace audits (\"--schema-suffixes _prod,_stg,_dev\" finds every refactor on production, staging, or dev schemas in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --schema-suffix and --not-schema-suffix.',\n )\n .option(\n '--not-schema-suffixes <suffixes>',\n 'Exclude ops whose target object.schema ends with any suffix in this comma-separated list (case-insensitive). Plural OR-negation of --schema-suffix — useful audit filter (\"--not-schema-suffixes _prod,_stg,_dev\" finds every refactor except those on production, staging, or dev schemas in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --schema-suffix, --not-schema-suffix, and --schema-suffixes.',\n )\n .option(\n '--schema-exact <name>',\n 'Filter to ops whose target object.schema equals this name (case-insensitive). Precision lookup — useful for short or common schema names where --schema (substring), --schema-prefix, --schema-suffix would all match too many ops. Composes with other filters as intersection.',\n )\n .option(\n '--schemas <names>',\n 'Filter to ops whose target object.schema equals any name in this comma-separated list (case-insensitive). Plural form of --schema-exact — useful audit filter (\"--schemas marketing,finance,ops\" finds every refactor on any of those schemas in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --schema-exact and --not-schema-exact.',\n )\n .option(\n '--not-schemas <names>',\n 'Exclude ops whose target object.schema equals any name in this comma-separated list (case-insensitive). Plural negation of --schema-exact — useful audit filter (\"--not-schemas marketing,finance,ops\" finds every refactor except those on the named schemas in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --schema-exact, --not-schema-exact, and --schemas.',\n )\n .option(\n '--not-schema-exact <name>',\n 'Exclude ops whose target object.schema equals this name (case-insensitive). Negation of --schema-exact — useful precision audit filter (\"--not-schema-exact marketing\" finds every refactor outside the exact marketing schema without false-matching marketing_stg / raw_marketing). Mutually exclusive with --schema-exact.',\n )\n .option(\n '--database <substring>',\n 'Filter to ops whose target object.database contains this substring (case-insensitive). Composes with other filters as intersection. Useful for \"show me all the refactors on the analytics_prod catalog.\" (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--not-database <substring>',\n 'Exclude ops whose target object.database contains this substring (case-insensitive). Negation of --database — useful audit filter (\"show every refactor that isn\\'t on catalog analytics_prod\"). Mutually exclusive with --database. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--database-contains-any <substrings>',\n 'Filter to ops whose target object.database contains ANY substring in this comma-separated list (case-insensitive). Plural OR-semantics form of --database — useful for multi-catalog audits (\"--database-contains-any analytics,raw,stg\" finds every refactor on a catalog whose name embeds any of three keywords in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --database and --not-database. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--not-database-contains-any <substrings>',\n 'Exclude ops whose target object.database contains ANY substring in this comma-separated list (case-insensitive). Plural OR-negation of --database — useful audit filter (\"--not-database-contains-any analytics,raw,stg\" finds every refactor on a catalog whose name doesn\\'t embed any of three keywords in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --database, --not-database, and --database-contains-any. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--database-contains-all <substrings>',\n 'Filter to ops whose target object.database contains EVERY substring in this comma-separated list (case-insensitive). Plural AND-semantics form of --database — useful for narrow audits where multiple keywords must co-occur in the catalog name (\"--database-contains-all analytics,prod\" finds every refactor on a catalog whose name contains BOTH analytics and prod, e.g. analytics_prod). Whitespace around commas is trimmed. Mutually exclusive with --database, --not-database, --database-contains-any, and --not-database-contains-any. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--not-database-contains-all <substrings>',\n 'Exclude ops whose target object.database contains EVERY substring in this comma-separated list (case-insensitive). Plural AND-negation of --database — useful audit filter (\"--not-database-contains-all analytics,prod\" excludes ONLY refactors on catalogs whose name contains BOTH analytics and prod, keeping catalogs with just one keyword or neither). Whitespace around commas is trimmed. Mutually exclusive with --database, --not-database, --database-contains-any, --not-database-contains-any, and --database-contains-all. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--database-regex <pattern>',\n \"Filter to ops whose target object.database matches this JavaScript regular expression (case-insensitive — mirrors --database-contains-any/all). Power-user complement to --database-contains-any for full pattern matching on the DATABASE axis: anchors (^/$), character classes, quantifiers, groups, alternation (foo|bar), lookaround. Useful for catalog-naming-convention audits across multi-tenant deployments (\\\"--database-regex '^(ANALYTICS|REPORTING)_(PROD|STG)$'\\\" finds every refactor on an analytics-or-reporting production-or-staging catalog — the FQN tier matrix). Invalid regex syntax refuses with exit 1. Ops with no object.database are excluded (a missing database doesn't match anything). Mutually exclusive with --database, --not-database, --database-contains-any, --not-database-contains-any, --database-contains-all, and --not-database-contains-all.\",\n )\n .option(\n '--not-database-regex <pattern>',\n \"Exclude ops whose target object.database matches this JavaScript regular expression (case-insensitive — mirrors --database-contains-any/all). Power-user negation complement to --not-database-contains-any for full pattern-based exclusion: anchors (^/$), character classes, quantifiers, groups, alternation, lookaround. Useful audit filter (\\\"--not-database-regex '_(STG|DEV|QA)$'\\\" finds every refactor on a non-staging non-dev non-qa catalog — the production-only multi-tenant audit). Invalid regex syntax refuses with exit 1. Ops with no object.database are KEPT (a missing database doesn't match anything, so it isn't excluded — symmetric with --not-database-contains-any). Mutually exclusive with --database, --not-database, --database-contains-any, --not-database-contains-any, --database-contains-all, --not-database-contains-all, and --database-regex.\",\n )\n .option(\n '--database-prefix <prefix>',\n 'Filter to ops whose target object.database starts with this prefix (case-insensitive). Composes with other filters as intersection. Useful for catalog-tier audits (\"--database-prefix analytics_\" finds every refactor on analytics catalogs while excluding mid-name *analytics_* matches that the --database substring filter would falsely include). (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--not-database-prefix <prefix>',\n 'Exclude ops whose target object.database starts with this prefix (case-insensitive). Negation of --database-prefix — useful audit filter (\"--not-database-prefix analytics_\" finds every refactor on non-analytics catalogs without false-matching mid-name *analytics_* catalogs). Mutually exclusive with --database-prefix. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--database-prefixes <prefixes>',\n 'Filter to ops whose target object.database starts with any prefix in this comma-separated list (case-insensitive). Plural OR-semantics form of --database-prefix — useful for multi-tier audits (\"--database-prefixes analytics_,raw_,stg_\" finds every refactor on analytics, raw, or staging catalogs in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --database-prefix and --not-database-prefix. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--not-database-prefixes <prefixes>',\n 'Exclude ops whose target object.database starts with any prefix in this comma-separated list (case-insensitive). Plural OR-negation of --database-prefix — useful audit filter (\"--not-database-prefixes analytics_,raw_,stg_\" finds every refactor except those on analytics, raw, or staging catalogs in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --database-prefix, --not-database-prefix, and --database-prefixes. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--database-suffix <suffix>',\n 'Filter to ops whose target object.database ends with this suffix (case-insensitive). Mirror of --database-prefix. Composes with other filters as intersection. Useful for environment-suffix audits (\"--database-suffix _prod\" finds every refactor on production catalogs while excluding leading prod_* matches).',\n )\n .option(\n '--not-database-suffix <suffix>',\n 'Exclude ops whose target object.database ends with this suffix (case-insensitive). Negation of --database-suffix — useful audit filter (\"--not-database-suffix _prod\" finds every refactor on non-production catalogs). Mutually exclusive with --database-suffix.',\n )\n .option(\n '--database-suffixes <suffixes>',\n 'Filter to ops whose target object.database ends with any suffix in this comma-separated list (case-insensitive). Plural OR-semantics form of --database-suffix — useful for multi-environment audits (\"--database-suffixes _prod,_stg,_dev\" finds every refactor on production, staging, or dev catalogs in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --database-suffix and --not-database-suffix.',\n )\n .option(\n '--not-database-suffixes <suffixes>',\n 'Exclude ops whose target object.database ends with any suffix in this comma-separated list (case-insensitive). Plural OR-negation of --database-suffix — useful audit filter (\"--not-database-suffixes _prod,_stg,_dev\" finds every refactor except those on production, staging, or dev catalogs in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --database-suffix, --not-database-suffix, and --database-suffixes.',\n )\n .option(\n '--database-exact <name>',\n 'Filter to ops whose target object.database equals this name (case-insensitive). Precision lookup — useful for short or common catalog names where --database (substring), --database-prefix, --database-suffix would all match too many ops. Composes with other filters as intersection.',\n )\n .option(\n '--databases <names>',\n 'Filter to ops whose target object.database equals any name in this comma-separated list (case-insensitive). Plural form of --database-exact — useful audit filter (\"--databases analytics,raw,staging\" finds every refactor on any of those catalogs in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --database-exact and --not-database-exact. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--not-databases <names>',\n 'Exclude ops whose target object.database equals any name in this comma-separated list (case-insensitive). Plural negation of --database-exact — useful audit filter (\"--not-databases analytics,raw,staging\" finds every refactor except those on the named catalogs in a single pass). Whitespace around commas is trimmed. Mutually exclusive with --database-exact, --not-database-exact, and --databases. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--not-database-exact <name>',\n 'Exclude ops whose target object.database equals this name (case-insensitive). Negation of --database-exact — useful precision audit filter (\"--not-database-exact analytics\" finds every refactor outside the exact analytics catalog without false-matching analytics_prod / audit_analytics). Mutually exclusive with --database-exact. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n )\n .option(\n '--name-min-length <n>',\n 'Filter to ops whose target object.name length is >= n (length is a count, not a char-set concern). Useful for naming-convention audits (\"--name-min-length 30\" finds refactors on tables whose name is suspiciously long — likely candidates for shortening). n must be a non-negative integer; non-numeric or negative refuses with exit 1. Ops with no object.name (rare in practice — name is always set per Op contract) are excluded (a missing name has no length). Opens a new LENGTH sub-arc on the refactor-list filter surface, mirroring the contains-any (iters 291-300), contains-all (iters 301-310), regex (iters 311-320), and HAS/MISSING-IDENT (iters 321-324) sub-arcs. First flag of 10-pair sub-arc covering all 5 axes (name, schema, database, note, id) × 2 directions (min, max). Composes with --name-max-length for closed-range length filters (e.g. \"8 <= length <= 32\"). Composes with other filters as intersection.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--name-max-length <n>',\n 'Filter to ops whose target object.name length is <= n. Useful for naming-convention audits (\"--name-max-length 10\" finds refactors on tables with short/abbreviated names — candidates for expansion to a more descriptive form). n must be a non-negative integer; non-numeric or negative refuses with exit 1. Ops with no object.name are excluded (a missing name has no length, so it can\\'t satisfy a max bound — symmetric with --name-min-length). CLOSES the name length pair, 1/5 pair of the LENGTH sub-arc opened iter 325. Composes with --name-min-length for closed-range queries (e.g. \"--name-min-length 8 --name-max-length 32\" enforces an 8-32 char name policy). Refuses if min > max when both are set (range is empty by definition).',\n (v) => parseInt(v, 10),\n )\n .option(\n '--schema-min-length <n>',\n 'Filter to ops whose target object.schema length is >= n. Useful for naming-convention audits on the schema axis (\"--schema-min-length 20\" finds refactors on schemas with suspiciously-long names — likely candidates for shortening). n must be non-negative integer; non-numeric or negative refuses with exit 1. Ops with no object.schema (bare-name + 1-part-FQN refactors) are excluded. OPENS the schema length pair, 2/5 of the LENGTH sub-arc opened iter 325. Composes with --schema-max-length for closed-range queries.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--schema-max-length <n>',\n 'Filter to ops whose target object.schema length is <= n. Useful for naming-convention audits (\"--schema-max-length 3\" finds refactors on suspiciously-short schemas — candidates for expansion). n must be non-negative integer; non-numeric or negative refuses with exit 1. Ops with no object.schema are excluded (a missing schema has no length, can\\'t satisfy a max bound). CLOSES the schema length pair, 2/5 pair of the LENGTH sub-arc. Composes with --schema-min-length for closed-range queries; refuses if min > max when both set (range is empty).',\n (v) => parseInt(v, 10),\n )\n .option(\n '--database-min-length <n>',\n 'Filter to ops whose target object.database length is >= n. Useful for naming-convention audits on the catalog/database axis (\"--database-min-length 20\" finds refactors on databases with suspiciously-long names). n must be non-negative integer; non-numeric or negative refuses with exit 1. Ops with no object.database (2-part and bare-name refactors) are excluded. OPENS the database length pair, 3/5 of the LENGTH sub-arc. Composes with --database-max-length for closed-range queries.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--database-max-length <n>',\n 'Filter to ops whose target object.database length is <= n. Useful for naming-convention audits (\"--database-max-length 3\" finds refactors on suspiciously-short databases — candidates for expansion). n must be non-negative integer; non-numeric or negative refuses with exit 1. Ops with no object.database are excluded (a missing database has no length). CLOSES the database length pair, 3/5 pair of the LENGTH sub-arc. Composes with --database-min-length for closed-range queries; refuses if min > max when both set (range is empty).',\n (v) => parseInt(v, 10),\n )\n .option(\n '--note-min-length <n>',\n 'Filter to ops whose op.note length is >= n. Useful for note-quality audits (\"--note-min-length 40\" finds refactors with substantial annotations — distinguishes thoroughly-documented ones from short stub notes). n must be non-negative integer; non-numeric or negative refuses with exit 1. Ops with no op.note are excluded (a missing note has no length, can\\'t satisfy a min bound); ops with empty-string note are kept when n=0, excluded for n>=1. OPENS the note length pair, 4/5 of the LENGTH sub-arc. Composes with --note-max-length for closed-range queries.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--note-max-length <n>',\n 'Filter to ops whose op.note length is <= n. Useful for note-quality audits (\"--note-max-length 10\" finds refactors with stub notes — candidates for fuller documentation). n must be non-negative integer; non-numeric or negative refuses with exit 1. Ops with no op.note are excluded (a missing note has no length); ops with empty-string note are kept for any non-negative n (length 0 satisfies <=n). CLOSES the note length pair, 4/5 pair of the LENGTH sub-arc. Composes with --note-min-length for closed-range queries; refuses if min > max when both set (range is empty).',\n (v) => parseInt(v, 10),\n )\n .option(\n '--id-min-length <n>',\n 'Filter to ops whose op.id length is >= n. Useful for id-quality audits on the id axis — useful primarily for diagnostic seed-data validation since production UUIDs have a fixed length of 36 (8-4-4-4-12). n must be non-negative integer; non-numeric or negative refuses with exit 1. Ops with no op.id (defensive — every refactor op gets a UUID by contract) are excluded. OPENS the id length pair, 5/5 of the LENGTH sub-arc — completes the axis coverage (name + schema + database + note + id, all 5 axes). Composes with --id-max-length for closed-range queries.',\n (v) => parseInt(v, 10),\n )\n .option(\n '--id-max-length <n>',\n 'Filter to ops whose op.id length is <= n. Useful for id-quality audits (\"--id-max-length 35\" finds refactors with non-UUID short ids — diagnostic seed-data validation). n must be non-negative integer; non-numeric or negative refuses with exit 1. Ops with no op.id are excluded. CLOSES the id length pair AND CLOSES THE ENTIRE LENGTH sub-arc (10 paired flags across 5 axes: name + schema + database + note + id). Composes with --id-min-length for closed-range queries; refuses if min > max when both set (range is empty).',\n (v) => parseInt(v, 10),\n )\n .option(\n '--has-database',\n 'Filter to ops whose target object.database field is set + non-empty. Useful for \"show me only the refactors with a fully-qualified 3-part FQN\" — finds ops where the catalog tier was explicit, distinguishing them from 2-part (schema.name) or bare (name-only) refactors. Composes with --database (intersection, but redundantly — --database already implies a non-empty database). Opens a new HAS/MISSING-IDENT predicate sub-arc on the refactor-list filter surface, mirroring the existing --has-note / --missing-note pair on the NOTE axis (iter 212). First flag of 4-pair sub-arc covering DATABASE + SCHEMA axes (NAME is always present per Op contract; ID is always present per UUID generation contract). Will be mutually exclusive with --missing-database (next iter). (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n false,\n )\n .option(\n '--missing-database',\n 'Filter to ops whose target object.database field is absent or empty. Complement of --has-database. Useful for \"find the refactors with implicit catalog/database resolution\" — ops where the catalog tier was inferred from the session/connection rather than explicitly named, i.e. 2-part (schema.name) or bare (name-only) FQNs. CLOSES the database HAS/MISSING pair, 1/2 of the HAS/MISSING-IDENT predicate sub-arc opened iter 321. Mutually exclusive with --has-database. (Refactor log records the top container as `database` even though the Databricks term is catalog.)',\n false,\n )\n .option(\n '--has-schema',\n 'Filter to ops whose target object.schema field is set + non-empty. Useful for \"show me only the refactors with an explicit schema qualifier\" — finds ops where the schema tier was named, distinguishing them from bare-name (no schema, no database) refactors. Composes with --schema (intersection, but redundantly — --schema already implies a non-empty schema). Opens the schema HAS/MISSING pair, 2/2 of the HAS/MISSING-IDENT predicate sub-arc opened iter 321. Will be mutually exclusive with --missing-schema (next iter).',\n false,\n )\n .option(\n '--missing-schema',\n 'Filter to ops whose target object.schema field is absent or empty. Complement of --has-schema. Useful for \"find the refactors with implicit schema resolution\" — ops where the schema tier was inferred from the session/connection or omitted entirely (bare-name refactors). CLOSES the schema HAS/MISSING pair AND CLOSES THE ENTIRE HAS/MISSING-IDENT predicate sub-arc (database + schema axes, opened iter 321). Mutually exclusive with --has-schema.',\n false,\n )\n .option(\n '--has-note',\n 'Filter to ops whose note field is set + non-empty. Useful for \"show me only the deliberate refactors that came with documentation.\" Composes with --note-contains (intersection, but redundantly — --note-contains already implies a non-empty note). Mutually exclusive with --missing-note.',\n false,\n )\n .option(\n '--missing-note',\n 'Filter to ops whose note field is absent or empty. Complement of --has-note. Useful for \"find the undocumented refactors that still need annotation.\" Mutually exclusive with --has-note.',\n false,\n )\n .option(\n '--count',\n 'Emit only the integer count of matching ops to stdout (after all filters). Suppresses headline + per-op lines. Composes with --json (emits {count: N}). Useful for shell pipes (`if [ \"$(... --count)\" -gt 0 ]; then ...`). Mutually exclusive with --summary.',\n false,\n )\n .option(\n '--summary',\n 'Emit a summary of matching ops grouped by op.type (one line per non-zero kind, sorted alphabetically) instead of per-op detail. Composes with --json (emits {total: N, byType: {KIND: count}}). Useful for audit overviews. Mutually exclusive with --count.',\n false,\n )\n .option(\n '--csv',\n 'Emit matching ops as CSV (header row + one row per op: id,timestamp,type,database,schema,name,objectType,note). Standard CSV escaping (RFC 4180): fields containing comma/quote/newline are quoted with `\"\"` escape. Useful for spreadsheet ingest. Mutually exclusive with --json, --count, --summary.',\n false,\n )\n .option(\n '--reverse',\n 'Emit operations in reverse chronological order (most-recent first). Applied AFTER --last so \"--last 5 --reverse\" gives the 5 most recent with newest on top.',\n false,\n )\n .option(\n '--bare',\n 'Text output only: omit the \"Refactor log: <path> (...)\" headline and emit just the per-op lines. Useful for piping into `awk` / `wc -l` / other shell tools. No effect on --json output.',\n false,\n )\n .option('--json', 'Emit machine-readable JSON', false)\n .action(\n async (opts: {\n log?: string;\n type?: string;\n notType?: string;\n types?: string;\n notTypes?: string;\n since?: string;\n sinceRelative?: string;\n until?: string;\n untilRelative?: string;\n last?: number;\n first?: number;\n id?: string;\n notId?: string;\n ids?: string;\n notIds?: string;\n idPrefix?: string;\n notIdPrefix?: string;\n idPrefixes?: string;\n notIdPrefixes?: string;\n idSuffix?: string;\n notIdSuffix?: string;\n idSuffixes?: string;\n notIdSuffixes?: string;\n idContains?: string;\n notIdContains?: string;\n idContainsAny?: string;\n notIdContainsAny?: string;\n idContainsAll?: string;\n notIdContainsAll?: string;\n idRegex?: string;\n notIdRegex?: string;\n noteContains?: string;\n notNoteContains?: string;\n noteContainsAny?: string;\n notNoteContainsAny?: string;\n noteContainsAll?: string;\n notNoteContainsAll?: string;\n noteRegex?: string;\n notNoteRegex?: string;\n notePrefix?: string;\n notNotePrefix?: string;\n notePrefixes?: string;\n notNotePrefixes?: string;\n noteSuffix?: string;\n notNoteSuffix?: string;\n noteSuffixes?: string;\n notNoteSuffixes?: string;\n noteExact?: string;\n notNoteExact?: string;\n notes?: string;\n notNotes?: string;\n objectType?: string;\n notObjectType?: string;\n objectTypes?: string;\n notObjectTypes?: string;\n name?: string;\n notName?: string;\n nameContainsAny?: string;\n notNameContainsAny?: string;\n nameContainsAll?: string;\n notNameContainsAll?: string;\n nameRegex?: string;\n notNameRegex?: string;\n namePrefix?: string;\n notNamePrefix?: string;\n namePrefixes?: string;\n notNamePrefixes?: string;\n nameSuffix?: string;\n notNameSuffix?: string;\n nameSuffixes?: string;\n notNameSuffixes?: string;\n nameExact?: string;\n notNameExact?: string;\n names?: string;\n notNames?: string;\n schema?: string;\n notSchema?: string;\n schemaContainsAny?: string;\n notSchemaContainsAny?: string;\n schemaContainsAll?: string;\n notSchemaContainsAll?: string;\n schemaRegex?: string;\n notSchemaRegex?: string;\n schemaPrefix?: string;\n notSchemaPrefix?: string;\n schemaPrefixes?: string;\n notSchemaPrefixes?: string;\n schemaSuffix?: string;\n notSchemaSuffix?: string;\n schemaSuffixes?: string;\n notSchemaSuffixes?: string;\n schemaExact?: string;\n notSchemaExact?: string;\n schemas?: string;\n notSchemas?: string;\n database?: string;\n notDatabase?: string;\n databaseContainsAny?: string;\n notDatabaseContainsAny?: string;\n databaseContainsAll?: string;\n notDatabaseContainsAll?: string;\n databaseRegex?: string;\n notDatabaseRegex?: string;\n databasePrefix?: string;\n notDatabasePrefix?: string;\n databasePrefixes?: string;\n notDatabasePrefixes?: string;\n databaseSuffix?: string;\n notDatabaseSuffix?: string;\n databaseSuffixes?: string;\n notDatabaseSuffixes?: string;\n databaseExact?: string;\n notDatabaseExact?: string;\n databases?: string;\n notDatabases?: string;\n nameMinLength?: number;\n nameMaxLength?: number;\n schemaMinLength?: number;\n schemaMaxLength?: number;\n databaseMinLength?: number;\n databaseMaxLength?: number;\n noteMinLength?: number;\n noteMaxLength?: number;\n idMinLength?: number;\n idMaxLength?: number;\n year?: number;\n years?: string;\n notYear?: number;\n notYears?: string;\n month?: number;\n months?: string;\n notMonth?: number;\n notMonths?: string;\n dayOfWeek?: number;\n daysOfWeek?: string;\n notDayOfWeek?: number;\n notDaysOfWeek?: string;\n hour?: number;\n hours?: string;\n notHour?: number;\n notHours?: string;\n minute?: number;\n minutes?: string;\n notMinute?: number;\n notMinutes?: string;\n second?: number;\n seconds?: string;\n notSecond?: number;\n notSeconds?: string;\n dayOfMonth?: number;\n daysOfMonth?: string;\n notDayOfMonth?: number;\n notDaysOfMonth?: string;\n quarter?: number;\n quarters?: string;\n notQuarter?: number;\n notQuarters?: string;\n dayOfYear?: number;\n daysOfYear?: string;\n notDayOfYear?: number;\n notDaysOfYear?: string;\n weekOfYear?: number;\n weeksOfYear?: string;\n notWeekOfYear?: number;\n notWeeksOfYear?: string;\n weekOfMonth?: number;\n weeksOfMonth?: string;\n notWeekOfMonth?: number;\n notWeeksOfMonth?: string;\n millisecond?: number;\n milliseconds?: string;\n notMillisecond?: number;\n notMilliseconds?: string;\n minuteOfDay?: number;\n minutesOfDay?: string;\n hasDatabase?: boolean;\n missingDatabase?: boolean;\n hasSchema?: boolean;\n missingSchema?: boolean;\n hasNote?: boolean;\n missingNote?: boolean;\n count?: boolean;\n summary?: boolean;\n csv?: boolean;\n reverse?: boolean;\n bare?: boolean;\n json?: boolean;\n }) => {\n const logPath = path.resolve(opts.log ?? DEFAULT_LOG);\n const log = await ensureLogExists(logPath);\n const wantKind = opts.type ? opts.type.toUpperCase() : undefined;\n if (wantKind && !(VALID_OP_KINDS as readonly string[]).includes(wantKind)) {\n console.error(\n `refactor list: --type ${JSON.stringify(opts.type)} not recognized; expected one of ${VALID_OP_KINDS.join(', ')}`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.type !== undefined && opts.notType !== undefined) {\n console.error(`refactor list: --type and --not-type are mutually exclusive; pick one.`);\n process.exitCode = 1;\n return;\n }\n if (opts.types !== undefined && (opts.type !== undefined || opts.notType !== undefined)) {\n console.error(\n `refactor list: --types is mutually exclusive with --type and --not-type; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (\n opts.notTypes !== undefined &&\n (opts.type !== undefined || opts.notType !== undefined || opts.types !== undefined)\n ) {\n console.error(\n `refactor list: --not-types is mutually exclusive with --type, --not-type, and --types; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n const excludeKind = opts.notType ? opts.notType.toUpperCase() : undefined;\n if (excludeKind && !(VALID_OP_KINDS as readonly string[]).includes(excludeKind)) {\n console.error(\n `refactor list: --not-type ${JSON.stringify(opts.notType)} not recognized; expected one of ${VALID_OP_KINDS.join(', ')}`,\n );\n process.exitCode = 1;\n return;\n }\n let wantKindSet: Set<string> | undefined;\n if (opts.types !== undefined) {\n if (typeof opts.types !== 'string' || opts.types.trim().length === 0) {\n console.error(`refactor list: --types must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.types\n .split(',')\n .map((s) => s.trim().toUpperCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(`refactor list: --types must contain at least one non-empty value.`);\n process.exitCode = 1;\n return;\n }\n for (const k of parsed) {\n if (!(VALID_OP_KINDS as readonly string[]).includes(k)) {\n console.error(\n `refactor list: --types value ${JSON.stringify(k)} not recognized; expected one of ${VALID_OP_KINDS.join(', ')}`,\n );\n process.exitCode = 1;\n return;\n }\n }\n wantKindSet = new Set(parsed);\n }\n let excludeKindSet: Set<string> | undefined;\n if (opts.notTypes !== undefined) {\n if (typeof opts.notTypes !== 'string' || opts.notTypes.trim().length === 0) {\n console.error(`refactor list: --not-types must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notTypes\n .split(',')\n .map((s) => s.trim().toUpperCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(`refactor list: --not-types must contain at least one non-empty value.`);\n process.exitCode = 1;\n return;\n }\n for (const k of parsed) {\n if (!(VALID_OP_KINDS as readonly string[]).includes(k)) {\n console.error(\n `refactor list: --not-types value ${JSON.stringify(k)} not recognized; expected one of ${VALID_OP_KINDS.join(', ')}`,\n );\n process.exitCode = 1;\n return;\n }\n }\n excludeKindSet = new Set(parsed);\n }\n let sinceMs: number | undefined;\n if (opts.since !== undefined && opts.sinceRelative !== undefined) {\n console.error(\n `refactor list: --since and --since-relative are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.since !== undefined) {\n const parsed = Date.parse(opts.since);\n if (Number.isNaN(parsed)) {\n console.error(\n `refactor list: --since ${JSON.stringify(opts.since)} is not a valid ISO 8601 timestamp.`,\n );\n process.exitCode = 1;\n return;\n }\n sinceMs = parsed;\n }\n if (opts.sinceRelative !== undefined) {\n const m = /^(\\d+)(h|d|w|mo)$/.exec(opts.sinceRelative);\n if (!m) {\n console.error(\n `refactor list: --since-relative ${JSON.stringify(opts.sinceRelative)} is not a valid duration. Expected formats: 7d, 24h, 2w, 3mo.`,\n );\n process.exitCode = 1;\n return;\n }\n const n = parseInt(m[1]!, 10);\n const unit = m[2]!;\n const HOUR = 3600 * 1000;\n const DAY = 24 * HOUR;\n const unitMs: Record<string, number> = {\n h: HOUR,\n d: DAY,\n w: 7 * DAY,\n mo: 30 * DAY, // approximate; documented in flag help\n };\n sinceMs = Date.now() - n * unitMs[unit]!;\n }\n let untilMs: number | undefined;\n if (opts.until !== undefined && opts.untilRelative !== undefined) {\n console.error(\n `refactor list: --until and --until-relative are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.until !== undefined) {\n const parsed = Date.parse(opts.until);\n if (Number.isNaN(parsed)) {\n console.error(\n `refactor list: --until ${JSON.stringify(opts.until)} is not a valid ISO 8601 timestamp.`,\n );\n process.exitCode = 1;\n return;\n }\n untilMs = parsed;\n }\n if (opts.untilRelative !== undefined) {\n const m = /^(\\d+)(h|d|w|mo)$/.exec(opts.untilRelative);\n if (!m) {\n console.error(\n `refactor list: --until-relative ${JSON.stringify(opts.untilRelative)} is not a valid duration. Expected formats: 7d, 24h, 2w, 3mo.`,\n );\n process.exitCode = 1;\n return;\n }\n const n = parseInt(m[1]!, 10);\n const unit = m[2]!;\n const HOUR = 3600 * 1000;\n const DAY = 24 * HOUR;\n const unitMs: Record<string, number> = {\n h: HOUR,\n d: DAY,\n w: 7 * DAY,\n mo: 30 * DAY,\n };\n untilMs = Date.now() - n * unitMs[unit]!;\n }\n if (sinceMs !== undefined && untilMs !== undefined && sinceMs > untilMs) {\n console.error(\n `refactor list: --since ${opts.since} is after --until ${opts.until}; range is empty by definition.`,\n );\n process.exitCode = 1;\n return;\n }\n let operations = wantKind\n ? log.operations.filter((o) => o.type === wantKind)\n : log.operations;\n if (excludeKind) {\n operations = operations.filter((o) => o.type !== excludeKind);\n }\n if (wantKindSet !== undefined) {\n operations = operations.filter((o) => wantKindSet!.has(o.type));\n }\n if (excludeKindSet !== undefined) {\n operations = operations.filter((o) => !excludeKindSet!.has(o.type));\n }\n if (sinceMs !== undefined || untilMs !== undefined) {\n operations = operations.filter((o) => {\n const opMs = Date.parse(o.timestamp);\n // Skip ops with malformed timestamps — never seen in practice but defensive.\n if (Number.isNaN(opMs)) return false;\n if (sinceMs !== undefined && opMs < sinceMs) return false;\n if (untilMs !== undefined && opMs > untilMs) return false;\n return true;\n });\n }\n if (opts.id !== undefined && opts.notId !== undefined) {\n console.error(`refactor list: --id and --not-id are mutually exclusive; pick one.`);\n process.exitCode = 1;\n return;\n }\n if (opts.id !== undefined) {\n if (typeof opts.id !== 'string' || opts.id.trim().length === 0) {\n console.error(`refactor list: --id must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const wantId = opts.id;\n operations = operations.filter((o) => o.id === wantId);\n }\n if (opts.notId !== undefined) {\n if (typeof opts.notId !== 'string' || opts.notId.trim().length === 0) {\n console.error(`refactor list: --not-id must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notWantId = opts.notId;\n operations = operations.filter((o) => o.id !== notWantId);\n }\n if (opts.ids !== undefined && (opts.id !== undefined || opts.notId !== undefined)) {\n console.error(\n `refactor list: --ids is mutually exclusive with --id and --not-id; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.ids !== undefined) {\n if (typeof opts.ids !== 'string' || opts.ids.trim().length === 0) {\n console.error(`refactor list: --ids must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.ids\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(`refactor list: --ids must contain at least one non-empty value.`);\n process.exitCode = 1;\n return;\n }\n const wantSet = new Set(parsed);\n operations = operations.filter((o) => wantSet.has(o.id));\n }\n if (\n opts.notIds !== undefined &&\n (opts.id !== undefined || opts.notId !== undefined || opts.ids !== undefined)\n ) {\n console.error(\n `refactor list: --not-ids is mutually exclusive with --id, --not-id, and --ids; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notIds !== undefined) {\n if (typeof opts.notIds !== 'string' || opts.notIds.trim().length === 0) {\n console.error(`refactor list: --not-ids must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notIds\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(`refactor list: --not-ids must contain at least one non-empty value.`);\n process.exitCode = 1;\n return;\n }\n const excludeSet = new Set(parsed);\n operations = operations.filter((o) => !excludeSet.has(o.id));\n }\n if (opts.idPrefix !== undefined && opts.notIdPrefix !== undefined) {\n console.error(\n `refactor list: --id-prefix and --not-id-prefix are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.idPrefix !== undefined) {\n if (typeof opts.idPrefix !== 'string' || opts.idPrefix.length === 0) {\n console.error(`refactor list: --id-prefix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const prefix = opts.idPrefix;\n operations = operations.filter(\n (o) => typeof o.id === 'string' && o.id.startsWith(prefix),\n );\n }\n if (opts.notIdPrefix !== undefined) {\n if (typeof opts.notIdPrefix !== 'string' || opts.notIdPrefix.length === 0) {\n console.error(`refactor list: --not-id-prefix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notPrefix = opts.notIdPrefix;\n operations = operations.filter(\n (o) => typeof o.id === 'string' && !o.id.startsWith(notPrefix),\n );\n }\n if (\n opts.idPrefixes !== undefined &&\n (opts.idPrefix !== undefined || opts.notIdPrefix !== undefined)\n ) {\n console.error(\n `refactor list: --id-prefixes is mutually exclusive with --id-prefix and --not-id-prefix; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.idPrefixes !== undefined) {\n if (typeof opts.idPrefixes !== 'string' || opts.idPrefixes.trim().length === 0) {\n console.error(`refactor list: --id-prefixes must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.idPrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --id-prefixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.id !== 'string') return false;\n return parsed.some((p) => o.id.startsWith(p));\n });\n }\n if (\n opts.notIdPrefixes !== undefined &&\n (opts.idPrefix !== undefined ||\n opts.notIdPrefix !== undefined ||\n opts.idPrefixes !== undefined)\n ) {\n console.error(\n `refactor list: --not-id-prefixes is mutually exclusive with --id-prefix, --not-id-prefix, and --id-prefixes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notIdPrefixes !== undefined) {\n if (typeof opts.notIdPrefixes !== 'string' || opts.notIdPrefixes.trim().length === 0) {\n console.error(\n `refactor list: --not-id-prefixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notIdPrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-id-prefixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.id !== 'string') return false;\n return !parsed.some((p) => o.id.startsWith(p));\n });\n }\n if (opts.idSuffix !== undefined && opts.notIdSuffix !== undefined) {\n console.error(\n `refactor list: --id-suffix and --not-id-suffix are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.idSuffix !== undefined) {\n if (typeof opts.idSuffix !== 'string' || opts.idSuffix.length === 0) {\n console.error(`refactor list: --id-suffix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const suffix = opts.idSuffix;\n operations = operations.filter((o) => typeof o.id === 'string' && o.id.endsWith(suffix));\n }\n if (opts.notIdSuffix !== undefined) {\n if (typeof opts.notIdSuffix !== 'string' || opts.notIdSuffix.length === 0) {\n console.error(`refactor list: --not-id-suffix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notSuffix = opts.notIdSuffix;\n operations = operations.filter(\n (o) => typeof o.id === 'string' && !o.id.endsWith(notSuffix),\n );\n }\n if (\n opts.idSuffixes !== undefined &&\n (opts.idSuffix !== undefined || opts.notIdSuffix !== undefined)\n ) {\n console.error(\n `refactor list: --id-suffixes is mutually exclusive with --id-suffix and --not-id-suffix; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.idSuffixes !== undefined) {\n if (typeof opts.idSuffixes !== 'string' || opts.idSuffixes.trim().length === 0) {\n console.error(`refactor list: --id-suffixes must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.idSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --id-suffixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.id !== 'string') return false;\n return parsed.some((s) => o.id.endsWith(s));\n });\n }\n if (\n opts.notIdSuffixes !== undefined &&\n (opts.idSuffix !== undefined ||\n opts.notIdSuffix !== undefined ||\n opts.idSuffixes !== undefined)\n ) {\n console.error(\n `refactor list: --not-id-suffixes is mutually exclusive with --id-suffix, --not-id-suffix, and --id-suffixes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notIdSuffixes !== undefined) {\n if (typeof opts.notIdSuffixes !== 'string' || opts.notIdSuffixes.trim().length === 0) {\n console.error(\n `refactor list: --not-id-suffixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notIdSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-id-suffixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.id !== 'string') return false;\n return !parsed.some((s) => o.id.endsWith(s));\n });\n }\n if (opts.idContains !== undefined && opts.notIdContains !== undefined) {\n console.error(\n `refactor list: --id-contains and --not-id-contains are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.idContains !== undefined) {\n if (typeof opts.idContains !== 'string' || opts.idContains.length === 0) {\n console.error(`refactor list: --id-contains must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const needle = opts.idContains;\n operations = operations.filter((o) => typeof o.id === 'string' && o.id.includes(needle));\n }\n if (opts.notIdContains !== undefined) {\n if (typeof opts.notIdContains !== 'string' || opts.notIdContains.length === 0) {\n console.error(`refactor list: --not-id-contains must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notNeedle = opts.notIdContains;\n operations = operations.filter(\n (o) => typeof o.id === 'string' && !o.id.includes(notNeedle),\n );\n }\n if (\n opts.idContainsAny !== undefined &&\n (opts.idContains !== undefined || opts.notIdContains !== undefined)\n ) {\n console.error(\n `refactor list: --id-contains-any is mutually exclusive with --id-contains and --not-id-contains; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.idContainsAny !== undefined) {\n if (typeof opts.idContainsAny !== 'string' || opts.idContainsAny.trim().length === 0) {\n console.error(\n `refactor list: --id-contains-any must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.idContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --id-contains-any must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.id !== 'string') return false;\n const idStr = o.id;\n return parsed.some((s) => idStr.includes(s));\n });\n }\n if (\n opts.notIdContainsAny !== undefined &&\n (opts.idContains !== undefined ||\n opts.notIdContains !== undefined ||\n opts.idContainsAny !== undefined)\n ) {\n console.error(\n `refactor list: --not-id-contains-any is mutually exclusive with --id-contains, --not-id-contains, and --id-contains-any; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notIdContainsAny !== undefined) {\n if (\n typeof opts.notIdContainsAny !== 'string' ||\n opts.notIdContainsAny.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-id-contains-any must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notIdContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-id-contains-any must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.id !== 'string') return true;\n const idStr = o.id;\n return !parsed.some((s) => idStr.includes(s));\n });\n }\n if (\n opts.idContainsAll !== undefined &&\n (opts.idContains !== undefined ||\n opts.notIdContains !== undefined ||\n opts.idContainsAny !== undefined ||\n opts.notIdContainsAny !== undefined)\n ) {\n console.error(\n `refactor list: --id-contains-all is mutually exclusive with --id-contains, --not-id-contains, --id-contains-any, and --not-id-contains-any; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.idContainsAll !== undefined) {\n if (typeof opts.idContainsAll !== 'string' || opts.idContainsAll.trim().length === 0) {\n console.error(\n `refactor list: --id-contains-all must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.idContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --id-contains-all must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.id !== 'string') return false;\n const idStr = o.id;\n return parsed.every((s) => idStr.includes(s));\n });\n }\n if (\n opts.notIdContainsAll !== undefined &&\n (opts.idContains !== undefined ||\n opts.notIdContains !== undefined ||\n opts.idContainsAny !== undefined ||\n opts.notIdContainsAny !== undefined ||\n opts.idContainsAll !== undefined)\n ) {\n console.error(\n `refactor list: --not-id-contains-all is mutually exclusive with --id-contains, --not-id-contains, --id-contains-any, --not-id-contains-any, and --id-contains-all; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notIdContainsAll !== undefined) {\n if (\n typeof opts.notIdContainsAll !== 'string' ||\n opts.notIdContainsAll.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-id-contains-all must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notIdContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-id-contains-all must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.id !== 'string') return true;\n const idStr = o.id;\n return !parsed.every((s) => idStr.includes(s));\n });\n }\n if (\n opts.idRegex !== undefined &&\n (opts.idContains !== undefined ||\n opts.notIdContains !== undefined ||\n opts.idContainsAny !== undefined ||\n opts.notIdContainsAny !== undefined ||\n opts.idContainsAll !== undefined ||\n opts.notIdContainsAll !== undefined)\n ) {\n console.error(\n `refactor list: --id-regex is mutually exclusive with --id-contains, --not-id-contains, --id-contains-any, --not-id-contains-any, --id-contains-all, and --not-id-contains-all; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.idRegex !== undefined) {\n if (typeof opts.idRegex !== 'string' || opts.idRegex.length === 0) {\n console.error(`refactor list: --id-regex must be a non-empty pattern.`);\n process.exitCode = 1;\n return;\n }\n let idPattern: RegExp;\n try {\n idPattern = new RegExp(opts.idRegex);\n } catch (err) {\n console.error(\n `refactor list: --id-regex invalid regex pattern: ${(err as Error).message}`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.id !== 'string') return false;\n return idPattern.test(o.id);\n });\n }\n if (\n opts.notIdRegex !== undefined &&\n (opts.idContains !== undefined ||\n opts.notIdContains !== undefined ||\n opts.idContainsAny !== undefined ||\n opts.notIdContainsAny !== undefined ||\n opts.idContainsAll !== undefined ||\n opts.notIdContainsAll !== undefined ||\n opts.idRegex !== undefined)\n ) {\n console.error(\n `refactor list: --not-id-regex is mutually exclusive with --id-contains, --not-id-contains, --id-contains-any, --not-id-contains-any, --id-contains-all, --not-id-contains-all, and --id-regex; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notIdRegex !== undefined) {\n if (typeof opts.notIdRegex !== 'string' || opts.notIdRegex.length === 0) {\n console.error(`refactor list: --not-id-regex must be a non-empty pattern.`);\n process.exitCode = 1;\n return;\n }\n let notIdPattern: RegExp;\n try {\n notIdPattern = new RegExp(opts.notIdRegex);\n } catch (err) {\n console.error(\n `refactor list: --not-id-regex invalid regex pattern: ${(err as Error).message}`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.id !== 'string') return true;\n return !notIdPattern.test(o.id);\n });\n }\n if (opts.noteContains !== undefined && opts.notNoteContains !== undefined) {\n console.error(\n `refactor list: --note-contains and --not-note-contains are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.noteContains !== undefined) {\n if (typeof opts.noteContains !== 'string' || opts.noteContains.length === 0) {\n console.error(`refactor list: --note-contains must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const needleLower = opts.noteContains.toLowerCase();\n operations = operations.filter(\n (o) => typeof o.note === 'string' && o.note.toLowerCase().includes(needleLower),\n );\n }\n if (opts.notNoteContains !== undefined) {\n if (typeof opts.notNoteContains !== 'string' || opts.notNoteContains.length === 0) {\n console.error(`refactor list: --not-note-contains must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notNeedleLower = opts.notNoteContains.toLowerCase();\n operations = operations.filter(\n (o) => typeof o.note !== 'string' || !o.note.toLowerCase().includes(notNeedleLower),\n );\n }\n if (\n opts.noteContainsAny !== undefined &&\n (opts.noteContains !== undefined || opts.notNoteContains !== undefined)\n ) {\n console.error(\n `refactor list: --note-contains-any is mutually exclusive with --note-contains and --not-note-contains; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.noteContainsAny !== undefined) {\n if (\n typeof opts.noteContainsAny !== 'string' ||\n opts.noteContainsAny.trim().length === 0\n ) {\n console.error(\n `refactor list: --note-contains-any must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.noteContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --note-contains-any must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.note !== 'string') return false;\n const noteLower = o.note.toLowerCase();\n return parsedLower.some((s) => noteLower.includes(s));\n });\n }\n if (\n opts.notNoteContainsAny !== undefined &&\n (opts.noteContains !== undefined ||\n opts.notNoteContains !== undefined ||\n opts.noteContainsAny !== undefined)\n ) {\n console.error(\n `refactor list: --not-note-contains-any is mutually exclusive with --note-contains, --not-note-contains, and --note-contains-any; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNoteContainsAny !== undefined) {\n if (\n typeof opts.notNoteContainsAny !== 'string' ||\n opts.notNoteContainsAny.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-note-contains-any must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notNoteContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-note-contains-any must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.note !== 'string') return true;\n const noteLower = o.note.toLowerCase();\n return !parsedLower.some((s) => noteLower.includes(s));\n });\n }\n if (\n opts.noteContainsAll !== undefined &&\n (opts.noteContains !== undefined ||\n opts.notNoteContains !== undefined ||\n opts.noteContainsAny !== undefined ||\n opts.notNoteContainsAny !== undefined)\n ) {\n console.error(\n `refactor list: --note-contains-all is mutually exclusive with --note-contains, --not-note-contains, --note-contains-any, and --not-note-contains-any; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.noteContainsAll !== undefined) {\n if (\n typeof opts.noteContainsAll !== 'string' ||\n opts.noteContainsAll.trim().length === 0\n ) {\n console.error(\n `refactor list: --note-contains-all must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.noteContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --note-contains-all must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.note !== 'string') return false;\n const noteLower = o.note.toLowerCase();\n return parsedLower.every((s) => noteLower.includes(s));\n });\n }\n if (\n opts.notNoteContainsAll !== undefined &&\n (opts.noteContains !== undefined ||\n opts.notNoteContains !== undefined ||\n opts.noteContainsAny !== undefined ||\n opts.notNoteContainsAny !== undefined ||\n opts.noteContainsAll !== undefined)\n ) {\n console.error(\n `refactor list: --not-note-contains-all is mutually exclusive with --note-contains, --not-note-contains, --note-contains-any, --not-note-contains-any, and --note-contains-all; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNoteContainsAll !== undefined) {\n if (\n typeof opts.notNoteContainsAll !== 'string' ||\n opts.notNoteContainsAll.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-note-contains-all must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notNoteContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-note-contains-all must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.note !== 'string') return true;\n const noteLower = o.note.toLowerCase();\n return !parsedLower.every((s) => noteLower.includes(s));\n });\n }\n if (\n opts.noteRegex !== undefined &&\n (opts.noteContains !== undefined ||\n opts.notNoteContains !== undefined ||\n opts.noteContainsAny !== undefined ||\n opts.notNoteContainsAny !== undefined ||\n opts.noteContainsAll !== undefined ||\n opts.notNoteContainsAll !== undefined)\n ) {\n console.error(\n `refactor list: --note-regex is mutually exclusive with --note-contains, --not-note-contains, --note-contains-any, --not-note-contains-any, --note-contains-all, and --not-note-contains-all; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.noteRegex !== undefined) {\n if (typeof opts.noteRegex !== 'string' || opts.noteRegex.length === 0) {\n console.error(`refactor list: --note-regex must be a non-empty pattern.`);\n process.exitCode = 1;\n return;\n }\n let notePattern: RegExp;\n try {\n notePattern = new RegExp(opts.noteRegex, 'i');\n } catch (err) {\n console.error(\n `refactor list: --note-regex invalid regex pattern: ${(err as Error).message}`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.note !== 'string') return false;\n return notePattern.test(o.note);\n });\n }\n if (\n opts.notNoteRegex !== undefined &&\n (opts.noteContains !== undefined ||\n opts.notNoteContains !== undefined ||\n opts.noteContainsAny !== undefined ||\n opts.notNoteContainsAny !== undefined ||\n opts.noteContainsAll !== undefined ||\n opts.notNoteContainsAll !== undefined ||\n opts.noteRegex !== undefined)\n ) {\n console.error(\n `refactor list: --not-note-regex is mutually exclusive with --note-contains, --not-note-contains, --note-contains-any, --not-note-contains-any, --note-contains-all, --not-note-contains-all, and --note-regex; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNoteRegex !== undefined) {\n if (typeof opts.notNoteRegex !== 'string' || opts.notNoteRegex.length === 0) {\n console.error(`refactor list: --not-note-regex must be a non-empty pattern.`);\n process.exitCode = 1;\n return;\n }\n let notNotePattern: RegExp;\n try {\n notNotePattern = new RegExp(opts.notNoteRegex, 'i');\n } catch (err) {\n console.error(\n `refactor list: --not-note-regex invalid regex pattern: ${(err as Error).message}`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.note !== 'string') return true;\n return !notNotePattern.test(o.note);\n });\n }\n if (opts.notePrefix !== undefined && opts.notNotePrefix !== undefined) {\n console.error(\n `refactor list: --note-prefix and --not-note-prefix are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notePrefix !== undefined) {\n if (typeof opts.notePrefix !== 'string' || opts.notePrefix.length === 0) {\n console.error(`refactor list: --note-prefix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const prefixLower = opts.notePrefix.toLowerCase();\n operations = operations.filter(\n (o) => typeof o.note === 'string' && o.note.toLowerCase().startsWith(prefixLower),\n );\n }\n if (opts.notNotePrefix !== undefined) {\n if (typeof opts.notNotePrefix !== 'string' || opts.notNotePrefix.length === 0) {\n console.error(`refactor list: --not-note-prefix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notPrefixLower = opts.notNotePrefix.toLowerCase();\n operations = operations.filter(\n (o) => typeof o.note !== 'string' || !o.note.toLowerCase().startsWith(notPrefixLower),\n );\n }\n if (\n opts.notePrefixes !== undefined &&\n (opts.notePrefix !== undefined || opts.notNotePrefix !== undefined)\n ) {\n console.error(\n `refactor list: --note-prefixes is mutually exclusive with --note-prefix and --not-note-prefix; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notePrefixes !== undefined) {\n if (typeof opts.notePrefixes !== 'string' || opts.notePrefixes.trim().length === 0) {\n console.error(\n `refactor list: --note-prefixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notePrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --note-prefixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((p) => p.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.note !== 'string') return false;\n const noteLower = o.note.toLowerCase();\n return parsedLower.some((p) => noteLower.startsWith(p));\n });\n }\n if (\n opts.notNotePrefixes !== undefined &&\n (opts.notePrefix !== undefined ||\n opts.notNotePrefix !== undefined ||\n opts.notePrefixes !== undefined)\n ) {\n console.error(\n `refactor list: --not-note-prefixes is mutually exclusive with --note-prefix, --not-note-prefix, and --note-prefixes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNotePrefixes !== undefined) {\n if (\n typeof opts.notNotePrefixes !== 'string' ||\n opts.notNotePrefixes.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-note-prefixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notNotePrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-note-prefixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((p) => p.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.note !== 'string') return true;\n const noteLower = o.note.toLowerCase();\n return !parsedLower.some((p) => noteLower.startsWith(p));\n });\n }\n if (opts.noteSuffix !== undefined && opts.notNoteSuffix !== undefined) {\n console.error(\n `refactor list: --note-suffix and --not-note-suffix are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.noteSuffix !== undefined) {\n if (typeof opts.noteSuffix !== 'string' || opts.noteSuffix.length === 0) {\n console.error(`refactor list: --note-suffix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const suffixLower = opts.noteSuffix.toLowerCase();\n operations = operations.filter(\n (o) => typeof o.note === 'string' && o.note.toLowerCase().endsWith(suffixLower),\n );\n }\n if (opts.notNoteSuffix !== undefined) {\n if (typeof opts.notNoteSuffix !== 'string' || opts.notNoteSuffix.length === 0) {\n console.error(`refactor list: --not-note-suffix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notSuffixLower = opts.notNoteSuffix.toLowerCase();\n operations = operations.filter(\n (o) => typeof o.note !== 'string' || !o.note.toLowerCase().endsWith(notSuffixLower),\n );\n }\n if (\n opts.noteSuffixes !== undefined &&\n (opts.noteSuffix !== undefined || opts.notNoteSuffix !== undefined)\n ) {\n console.error(\n `refactor list: --note-suffixes is mutually exclusive with --note-suffix and --not-note-suffix; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.noteSuffixes !== undefined) {\n if (typeof opts.noteSuffixes !== 'string' || opts.noteSuffixes.trim().length === 0) {\n console.error(\n `refactor list: --note-suffixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.noteSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --note-suffixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.note !== 'string') return false;\n const noteLower = o.note.toLowerCase();\n return parsedLower.some((s) => noteLower.endsWith(s));\n });\n }\n if (\n opts.notNoteSuffixes !== undefined &&\n (opts.noteSuffix !== undefined ||\n opts.notNoteSuffix !== undefined ||\n opts.noteSuffixes !== undefined)\n ) {\n console.error(\n `refactor list: --not-note-suffixes is mutually exclusive with --note-suffix, --not-note-suffix, and --note-suffixes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNoteSuffixes !== undefined) {\n if (\n typeof opts.notNoteSuffixes !== 'string' ||\n opts.notNoteSuffixes.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-note-suffixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notNoteSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-note-suffixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.note !== 'string') return true;\n const noteLower = o.note.toLowerCase();\n return !parsedLower.some((s) => noteLower.endsWith(s));\n });\n }\n if (opts.noteExact !== undefined && opts.notNoteExact !== undefined) {\n console.error(\n `refactor list: --note-exact and --not-note-exact are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.noteExact !== undefined) {\n if (typeof opts.noteExact !== 'string' || opts.noteExact.length === 0) {\n console.error(`refactor list: --note-exact must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const noteExactLower = opts.noteExact.toLowerCase();\n operations = operations.filter(\n (o) => typeof o.note === 'string' && o.note.toLowerCase() === noteExactLower,\n );\n }\n if (opts.notNoteExact !== undefined) {\n if (typeof opts.notNoteExact !== 'string' || opts.notNoteExact.length === 0) {\n console.error(`refactor list: --not-note-exact must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notNoteExactLower = opts.notNoteExact.toLowerCase();\n operations = operations.filter(\n (o) => typeof o.note !== 'string' || o.note.toLowerCase() !== notNoteExactLower,\n );\n }\n if (\n opts.notes !== undefined &&\n (opts.noteExact !== undefined || opts.notNoteExact !== undefined)\n ) {\n console.error(\n `refactor list: --notes is mutually exclusive with --note-exact and --not-note-exact; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notes !== undefined) {\n if (typeof opts.notes !== 'string' || opts.notes.trim().length === 0) {\n console.error(`refactor list: --notes must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(`refactor list: --notes must contain at least one non-empty value.`);\n process.exitCode = 1;\n return;\n }\n const wantSet = new Set(parsed);\n operations = operations.filter(\n (o) => typeof o.note === 'string' && wantSet.has(o.note.toLowerCase()),\n );\n }\n if (\n opts.notNotes !== undefined &&\n (opts.noteExact !== undefined ||\n opts.notNoteExact !== undefined ||\n opts.notes !== undefined)\n ) {\n console.error(\n `refactor list: --not-notes is mutually exclusive with --note-exact, --not-note-exact, and --notes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNotes !== undefined) {\n if (typeof opts.notNotes !== 'string' || opts.notNotes.trim().length === 0) {\n console.error(`refactor list: --not-notes must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notNotes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(`refactor list: --not-notes must contain at least one non-empty value.`);\n process.exitCode = 1;\n return;\n }\n const excludeSet = new Set(parsed);\n operations = operations.filter(\n (o) => typeof o.note !== 'string' || !excludeSet.has(o.note.toLowerCase()),\n );\n }\n if (opts.objectType !== undefined && opts.notObjectType !== undefined) {\n console.error(\n `refactor list: --object-type and --not-object-type are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.objectType !== undefined) {\n if (typeof opts.objectType !== 'string' || opts.objectType.trim().length === 0) {\n console.error(`refactor list: --object-type must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const wantObjectType = opts.objectType.toUpperCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.objectType === 'string' &&\n o.object.objectType.toUpperCase() === wantObjectType,\n );\n }\n if (opts.notObjectType !== undefined) {\n if (typeof opts.notObjectType !== 'string' || opts.notObjectType.trim().length === 0) {\n console.error(`refactor list: --not-object-type must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const excludeObjectType = opts.notObjectType.toUpperCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.objectType === 'string' &&\n o.object.objectType.toUpperCase() !== excludeObjectType,\n );\n }\n if (\n opts.objectTypes !== undefined &&\n (opts.objectType !== undefined || opts.notObjectType !== undefined)\n ) {\n console.error(\n `refactor list: --object-types is mutually exclusive with --object-type and --not-object-type; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (\n opts.notObjectTypes !== undefined &&\n (opts.objectType !== undefined ||\n opts.notObjectType !== undefined ||\n opts.objectTypes !== undefined)\n ) {\n console.error(\n `refactor list: --not-object-types is mutually exclusive with --object-type, --not-object-type, and --object-types; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.objectTypes !== undefined) {\n if (typeof opts.objectTypes !== 'string' || opts.objectTypes.trim().length === 0) {\n console.error(\n `refactor list: --object-types must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.objectTypes\n .split(',')\n .map((s) => s.trim().toUpperCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --object-types must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const wantSet = new Set(parsed);\n operations = operations.filter(\n (o) =>\n typeof o.object?.objectType === 'string' &&\n wantSet.has(o.object.objectType.toUpperCase()),\n );\n }\n if (opts.notObjectTypes !== undefined) {\n if (typeof opts.notObjectTypes !== 'string' || opts.notObjectTypes.trim().length === 0) {\n console.error(\n `refactor list: --not-object-types must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notObjectTypes\n .split(',')\n .map((s) => s.trim().toUpperCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-object-types must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const excludeSet = new Set(parsed);\n operations = operations.filter(\n (o) =>\n typeof o.object?.objectType === 'string' &&\n !excludeSet.has(o.object.objectType.toUpperCase()),\n );\n }\n if (opts.name !== undefined && opts.notName !== undefined) {\n console.error(`refactor list: --name and --not-name are mutually exclusive; pick one.`);\n process.exitCode = 1;\n return;\n }\n if (opts.name !== undefined) {\n if (typeof opts.name !== 'string' || opts.name.length === 0) {\n console.error(`refactor list: --name must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const nameNeedleLower = opts.name.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.name === 'string' &&\n o.object.name.toLowerCase().includes(nameNeedleLower),\n );\n }\n if (opts.notName !== undefined) {\n if (typeof opts.notName !== 'string' || opts.notName.length === 0) {\n console.error(`refactor list: --not-name must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notNameNeedleLower = opts.notName.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.name === 'string' &&\n !o.object.name.toLowerCase().includes(notNameNeedleLower),\n );\n }\n if (\n opts.nameContainsAny !== undefined &&\n (opts.name !== undefined || opts.notName !== undefined)\n ) {\n console.error(\n `refactor list: --name-contains-any is mutually exclusive with --name and --not-name; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.nameContainsAny !== undefined) {\n if (\n typeof opts.nameContainsAny !== 'string' ||\n opts.nameContainsAny.trim().length === 0\n ) {\n console.error(\n `refactor list: --name-contains-any must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.nameContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --name-contains-any must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.name !== 'string') return false;\n const nameLower = o.object.name.toLowerCase();\n return parsedLower.some((s) => nameLower.includes(s));\n });\n }\n if (\n opts.notNameContainsAny !== undefined &&\n (opts.name !== undefined ||\n opts.notName !== undefined ||\n opts.nameContainsAny !== undefined)\n ) {\n console.error(\n `refactor list: --not-name-contains-any is mutually exclusive with --name, --not-name, and --name-contains-any; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNameContainsAny !== undefined) {\n if (\n typeof opts.notNameContainsAny !== 'string' ||\n opts.notNameContainsAny.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-name-contains-any must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notNameContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-name-contains-any must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.name !== 'string') return true;\n const nameLower = o.object.name.toLowerCase();\n return !parsedLower.some((s) => nameLower.includes(s));\n });\n }\n if (\n opts.nameContainsAll !== undefined &&\n (opts.name !== undefined ||\n opts.notName !== undefined ||\n opts.nameContainsAny !== undefined ||\n opts.notNameContainsAny !== undefined)\n ) {\n console.error(\n `refactor list: --name-contains-all is mutually exclusive with --name, --not-name, --name-contains-any, and --not-name-contains-any; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.nameContainsAll !== undefined) {\n if (\n typeof opts.nameContainsAll !== 'string' ||\n opts.nameContainsAll.trim().length === 0\n ) {\n console.error(\n `refactor list: --name-contains-all must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.nameContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --name-contains-all must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.name !== 'string') return false;\n const nameLower = o.object.name.toLowerCase();\n return parsedLower.every((s) => nameLower.includes(s));\n });\n }\n if (\n opts.notNameContainsAll !== undefined &&\n (opts.name !== undefined ||\n opts.notName !== undefined ||\n opts.nameContainsAny !== undefined ||\n opts.notNameContainsAny !== undefined ||\n opts.nameContainsAll !== undefined)\n ) {\n console.error(\n `refactor list: --not-name-contains-all is mutually exclusive with --name, --not-name, --name-contains-any, --not-name-contains-any, and --name-contains-all; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNameContainsAll !== undefined) {\n if (\n typeof opts.notNameContainsAll !== 'string' ||\n opts.notNameContainsAll.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-name-contains-all must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notNameContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-name-contains-all must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.name !== 'string') return true;\n const nameLower = o.object.name.toLowerCase();\n return !parsedLower.every((s) => nameLower.includes(s));\n });\n }\n if (\n opts.nameRegex !== undefined &&\n (opts.name !== undefined ||\n opts.notName !== undefined ||\n opts.nameContainsAny !== undefined ||\n opts.notNameContainsAny !== undefined ||\n opts.nameContainsAll !== undefined ||\n opts.notNameContainsAll !== undefined)\n ) {\n console.error(\n `refactor list: --name-regex is mutually exclusive with --name, --not-name, --name-contains-any, --not-name-contains-any, --name-contains-all, and --not-name-contains-all; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.nameRegex !== undefined) {\n if (typeof opts.nameRegex !== 'string' || opts.nameRegex.length === 0) {\n console.error(`refactor list: --name-regex must be a non-empty pattern.`);\n process.exitCode = 1;\n return;\n }\n let namePattern: RegExp;\n try {\n namePattern = new RegExp(opts.nameRegex, 'i');\n } catch (err) {\n console.error(\n `refactor list: --name-regex invalid regex pattern: ${(err as Error).message}`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.name !== 'string') return false;\n return namePattern.test(o.object.name);\n });\n }\n if (\n opts.notNameRegex !== undefined &&\n (opts.name !== undefined ||\n opts.notName !== undefined ||\n opts.nameContainsAny !== undefined ||\n opts.notNameContainsAny !== undefined ||\n opts.nameContainsAll !== undefined ||\n opts.notNameContainsAll !== undefined ||\n opts.nameRegex !== undefined)\n ) {\n console.error(\n `refactor list: --not-name-regex is mutually exclusive with --name, --not-name, --name-contains-any, --not-name-contains-any, --name-contains-all, --not-name-contains-all, and --name-regex; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNameRegex !== undefined) {\n if (typeof opts.notNameRegex !== 'string' || opts.notNameRegex.length === 0) {\n console.error(`refactor list: --not-name-regex must be a non-empty pattern.`);\n process.exitCode = 1;\n return;\n }\n let notNamePattern: RegExp;\n try {\n notNamePattern = new RegExp(opts.notNameRegex, 'i');\n } catch (err) {\n console.error(\n `refactor list: --not-name-regex invalid regex pattern: ${(err as Error).message}`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.name !== 'string') return true;\n return !notNamePattern.test(o.object.name);\n });\n }\n if (opts.namePrefix !== undefined && opts.notNamePrefix !== undefined) {\n console.error(\n `refactor list: --name-prefix and --not-name-prefix are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.namePrefix !== undefined) {\n if (typeof opts.namePrefix !== 'string' || opts.namePrefix.length === 0) {\n console.error(`refactor list: --name-prefix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const namePrefixLower = opts.namePrefix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.name === 'string' &&\n o.object.name.toLowerCase().startsWith(namePrefixLower),\n );\n }\n if (opts.notNamePrefix !== undefined) {\n if (typeof opts.notNamePrefix !== 'string' || opts.notNamePrefix.length === 0) {\n console.error(`refactor list: --not-name-prefix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notNamePrefixLower = opts.notNamePrefix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.name === 'string' &&\n !o.object.name.toLowerCase().startsWith(notNamePrefixLower),\n );\n }\n if (\n opts.namePrefixes !== undefined &&\n (opts.namePrefix !== undefined || opts.notNamePrefix !== undefined)\n ) {\n console.error(\n `refactor list: --name-prefixes is mutually exclusive with --name-prefix and --not-name-prefix; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.namePrefixes !== undefined) {\n if (typeof opts.namePrefixes !== 'string' || opts.namePrefixes.trim().length === 0) {\n console.error(\n `refactor list: --name-prefixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.namePrefixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --name-prefixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.name !== 'string') return false;\n const nameLower = o.object.name.toLowerCase();\n return parsed.some((p) => nameLower.startsWith(p));\n });\n }\n if (\n opts.notNamePrefixes !== undefined &&\n (opts.namePrefix !== undefined ||\n opts.notNamePrefix !== undefined ||\n opts.namePrefixes !== undefined)\n ) {\n console.error(\n `refactor list: --not-name-prefixes is mutually exclusive with --name-prefix, --not-name-prefix, and --name-prefixes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNamePrefixes !== undefined) {\n if (\n typeof opts.notNamePrefixes !== 'string' ||\n opts.notNamePrefixes.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-name-prefixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notNamePrefixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-name-prefixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.name !== 'string') return false;\n const nameLower = o.object.name.toLowerCase();\n return !parsed.some((p) => nameLower.startsWith(p));\n });\n }\n if (opts.nameSuffix !== undefined && opts.notNameSuffix !== undefined) {\n console.error(\n `refactor list: --name-suffix and --not-name-suffix are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.nameSuffix !== undefined) {\n if (typeof opts.nameSuffix !== 'string' || opts.nameSuffix.length === 0) {\n console.error(`refactor list: --name-suffix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const nameSuffixLower = opts.nameSuffix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.name === 'string' &&\n o.object.name.toLowerCase().endsWith(nameSuffixLower),\n );\n }\n if (opts.notNameSuffix !== undefined) {\n if (typeof opts.notNameSuffix !== 'string' || opts.notNameSuffix.length === 0) {\n console.error(`refactor list: --not-name-suffix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notNameSuffixLower = opts.notNameSuffix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.name === 'string' &&\n !o.object.name.toLowerCase().endsWith(notNameSuffixLower),\n );\n }\n if (\n opts.nameSuffixes !== undefined &&\n (opts.nameSuffix !== undefined || opts.notNameSuffix !== undefined)\n ) {\n console.error(\n `refactor list: --name-suffixes is mutually exclusive with --name-suffix and --not-name-suffix; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.nameSuffixes !== undefined) {\n if (typeof opts.nameSuffixes !== 'string' || opts.nameSuffixes.trim().length === 0) {\n console.error(\n `refactor list: --name-suffixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.nameSuffixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --name-suffixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.name !== 'string') return false;\n const nameLower = o.object.name.toLowerCase();\n return parsed.some((s) => nameLower.endsWith(s));\n });\n }\n if (\n opts.notNameSuffixes !== undefined &&\n (opts.nameSuffix !== undefined ||\n opts.notNameSuffix !== undefined ||\n opts.nameSuffixes !== undefined)\n ) {\n console.error(\n `refactor list: --not-name-suffixes is mutually exclusive with --name-suffix, --not-name-suffix, and --name-suffixes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notNameSuffixes !== undefined) {\n if (\n typeof opts.notNameSuffixes !== 'string' ||\n opts.notNameSuffixes.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-name-suffixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notNameSuffixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-name-suffixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.name !== 'string') return false;\n const nameLower = o.object.name.toLowerCase();\n return !parsed.some((s) => nameLower.endsWith(s));\n });\n }\n if (opts.nameExact !== undefined && opts.notNameExact !== undefined) {\n console.error(\n `refactor list: --name-exact and --not-name-exact are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.nameExact !== undefined) {\n if (typeof opts.nameExact !== 'string' || opts.nameExact.length === 0) {\n console.error(`refactor list: --name-exact must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const nameExactLower = opts.nameExact.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.name === 'string' && o.object.name.toLowerCase() === nameExactLower,\n );\n }\n if (opts.notNameExact !== undefined) {\n if (typeof opts.notNameExact !== 'string' || opts.notNameExact.length === 0) {\n console.error(`refactor list: --not-name-exact must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notNameExactLower = opts.notNameExact.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.name === 'string' &&\n o.object.name.toLowerCase() !== notNameExactLower,\n );\n }\n if (\n opts.names !== undefined &&\n (opts.nameExact !== undefined || opts.notNameExact !== undefined)\n ) {\n console.error(\n `refactor list: --names is mutually exclusive with --name-exact and --not-name-exact; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (\n opts.notNames !== undefined &&\n (opts.nameExact !== undefined ||\n opts.notNameExact !== undefined ||\n opts.names !== undefined)\n ) {\n console.error(\n `refactor list: --not-names is mutually exclusive with --name-exact, --not-name-exact, and --names; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.names !== undefined) {\n if (typeof opts.names !== 'string' || opts.names.trim().length === 0) {\n console.error(`refactor list: --names must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.names\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(`refactor list: --names must contain at least one non-empty value.`);\n process.exitCode = 1;\n return;\n }\n const wantSet = new Set(parsed);\n operations = operations.filter(\n (o) => typeof o.object?.name === 'string' && wantSet.has(o.object.name.toLowerCase()),\n );\n }\n if (opts.notNames !== undefined) {\n if (typeof opts.notNames !== 'string' || opts.notNames.trim().length === 0) {\n console.error(`refactor list: --not-names must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notNames\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(`refactor list: --not-names must contain at least one non-empty value.`);\n process.exitCode = 1;\n return;\n }\n const excludeSet = new Set(parsed);\n operations = operations.filter(\n (o) =>\n typeof o.object?.name === 'string' && !excludeSet.has(o.object.name.toLowerCase()),\n );\n }\n if (opts.schema !== undefined && opts.notSchema !== undefined) {\n console.error(\n `refactor list: --schema and --not-schema are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schema !== undefined) {\n if (typeof opts.schema !== 'string' || opts.schema.length === 0) {\n console.error(`refactor list: --schema must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const schemaNeedleLower = opts.schema.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.schema === 'string' &&\n o.object.schema.toLowerCase().includes(schemaNeedleLower),\n );\n }\n if (opts.notSchema !== undefined) {\n if (typeof opts.notSchema !== 'string' || opts.notSchema.length === 0) {\n console.error(`refactor list: --not-schema must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notSchemaNeedleLower = opts.notSchema.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.schema === 'string' &&\n !o.object.schema.toLowerCase().includes(notSchemaNeedleLower),\n );\n }\n if (\n opts.schemaContainsAny !== undefined &&\n (opts.schema !== undefined || opts.notSchema !== undefined)\n ) {\n console.error(\n `refactor list: --schema-contains-any is mutually exclusive with --schema and --not-schema; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schemaContainsAny !== undefined) {\n if (\n typeof opts.schemaContainsAny !== 'string' ||\n opts.schemaContainsAny.trim().length === 0\n ) {\n console.error(\n `refactor list: --schema-contains-any must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.schemaContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --schema-contains-any must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.schema !== 'string') return false;\n const schemaLower = o.object.schema.toLowerCase();\n return parsedLower.some((s) => schemaLower.includes(s));\n });\n }\n if (\n opts.notSchemaContainsAny !== undefined &&\n (opts.schema !== undefined ||\n opts.notSchema !== undefined ||\n opts.schemaContainsAny !== undefined)\n ) {\n console.error(\n `refactor list: --not-schema-contains-any is mutually exclusive with --schema, --not-schema, and --schema-contains-any; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notSchemaContainsAny !== undefined) {\n if (\n typeof opts.notSchemaContainsAny !== 'string' ||\n opts.notSchemaContainsAny.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-schema-contains-any must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notSchemaContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-schema-contains-any must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.schema !== 'string') return true;\n const schemaLower = o.object.schema.toLowerCase();\n return !parsedLower.some((s) => schemaLower.includes(s));\n });\n }\n if (\n opts.schemaContainsAll !== undefined &&\n (opts.schema !== undefined ||\n opts.notSchema !== undefined ||\n opts.schemaContainsAny !== undefined ||\n opts.notSchemaContainsAny !== undefined)\n ) {\n console.error(\n `refactor list: --schema-contains-all is mutually exclusive with --schema, --not-schema, --schema-contains-any, and --not-schema-contains-any; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schemaContainsAll !== undefined) {\n if (\n typeof opts.schemaContainsAll !== 'string' ||\n opts.schemaContainsAll.trim().length === 0\n ) {\n console.error(\n `refactor list: --schema-contains-all must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.schemaContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --schema-contains-all must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.schema !== 'string') return false;\n const schemaLower = o.object.schema.toLowerCase();\n return parsedLower.every((s) => schemaLower.includes(s));\n });\n }\n if (\n opts.notSchemaContainsAll !== undefined &&\n (opts.schema !== undefined ||\n opts.notSchema !== undefined ||\n opts.schemaContainsAny !== undefined ||\n opts.notSchemaContainsAny !== undefined ||\n opts.schemaContainsAll !== undefined)\n ) {\n console.error(\n `refactor list: --not-schema-contains-all is mutually exclusive with --schema, --not-schema, --schema-contains-any, --not-schema-contains-any, and --schema-contains-all; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notSchemaContainsAll !== undefined) {\n if (\n typeof opts.notSchemaContainsAll !== 'string' ||\n opts.notSchemaContainsAll.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-schema-contains-all must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notSchemaContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-schema-contains-all must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.schema !== 'string') return true;\n const schemaLower = o.object.schema.toLowerCase();\n return !parsedLower.every((s) => schemaLower.includes(s));\n });\n }\n if (\n opts.schemaRegex !== undefined &&\n (opts.schema !== undefined ||\n opts.notSchema !== undefined ||\n opts.schemaContainsAny !== undefined ||\n opts.notSchemaContainsAny !== undefined ||\n opts.schemaContainsAll !== undefined ||\n opts.notSchemaContainsAll !== undefined)\n ) {\n console.error(\n `refactor list: --schema-regex is mutually exclusive with --schema, --not-schema, --schema-contains-any, --not-schema-contains-any, --schema-contains-all, and --not-schema-contains-all; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schemaRegex !== undefined) {\n if (typeof opts.schemaRegex !== 'string' || opts.schemaRegex.length === 0) {\n console.error(`refactor list: --schema-regex must be a non-empty pattern.`);\n process.exitCode = 1;\n return;\n }\n let schemaPattern: RegExp;\n try {\n schemaPattern = new RegExp(opts.schemaRegex, 'i');\n } catch (err) {\n console.error(\n `refactor list: --schema-regex invalid regex pattern: ${(err as Error).message}`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.schema !== 'string') return false;\n return schemaPattern.test(o.object.schema);\n });\n }\n if (\n opts.notSchemaRegex !== undefined &&\n (opts.schema !== undefined ||\n opts.notSchema !== undefined ||\n opts.schemaContainsAny !== undefined ||\n opts.notSchemaContainsAny !== undefined ||\n opts.schemaContainsAll !== undefined ||\n opts.notSchemaContainsAll !== undefined ||\n opts.schemaRegex !== undefined)\n ) {\n console.error(\n `refactor list: --not-schema-regex is mutually exclusive with --schema, --not-schema, --schema-contains-any, --not-schema-contains-any, --schema-contains-all, --not-schema-contains-all, and --schema-regex; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notSchemaRegex !== undefined) {\n if (typeof opts.notSchemaRegex !== 'string' || opts.notSchemaRegex.length === 0) {\n console.error(`refactor list: --not-schema-regex must be a non-empty pattern.`);\n process.exitCode = 1;\n return;\n }\n let notSchemaPattern: RegExp;\n try {\n notSchemaPattern = new RegExp(opts.notSchemaRegex, 'i');\n } catch (err) {\n console.error(\n `refactor list: --not-schema-regex invalid regex pattern: ${(err as Error).message}`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.schema !== 'string') return true;\n return !notSchemaPattern.test(o.object.schema);\n });\n }\n if (opts.schemaPrefix !== undefined && opts.notSchemaPrefix !== undefined) {\n console.error(\n `refactor list: --schema-prefix and --not-schema-prefix are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schemaPrefix !== undefined) {\n if (typeof opts.schemaPrefix !== 'string' || opts.schemaPrefix.length === 0) {\n console.error(`refactor list: --schema-prefix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const schemaPrefixLower = opts.schemaPrefix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.schema === 'string' &&\n o.object.schema.toLowerCase().startsWith(schemaPrefixLower),\n );\n }\n if (opts.notSchemaPrefix !== undefined) {\n if (typeof opts.notSchemaPrefix !== 'string' || opts.notSchemaPrefix.length === 0) {\n console.error(`refactor list: --not-schema-prefix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notSchemaPrefixLower = opts.notSchemaPrefix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.schema === 'string' &&\n !o.object.schema.toLowerCase().startsWith(notSchemaPrefixLower),\n );\n }\n if (\n opts.schemaPrefixes !== undefined &&\n (opts.schemaPrefix !== undefined || opts.notSchemaPrefix !== undefined)\n ) {\n console.error(\n `refactor list: --schema-prefixes is mutually exclusive with --schema-prefix and --not-schema-prefix; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schemaPrefixes !== undefined) {\n if (typeof opts.schemaPrefixes !== 'string' || opts.schemaPrefixes.trim().length === 0) {\n console.error(\n `refactor list: --schema-prefixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.schemaPrefixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --schema-prefixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.schema !== 'string') return false;\n const schemaLower = o.object.schema.toLowerCase();\n return parsed.some((p) => schemaLower.startsWith(p));\n });\n }\n if (\n opts.notSchemaPrefixes !== undefined &&\n (opts.schemaPrefix !== undefined ||\n opts.notSchemaPrefix !== undefined ||\n opts.schemaPrefixes !== undefined)\n ) {\n console.error(\n `refactor list: --not-schema-prefixes is mutually exclusive with --schema-prefix, --not-schema-prefix, and --schema-prefixes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notSchemaPrefixes !== undefined) {\n if (\n typeof opts.notSchemaPrefixes !== 'string' ||\n opts.notSchemaPrefixes.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-schema-prefixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notSchemaPrefixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-schema-prefixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.schema !== 'string') return false;\n const schemaLower = o.object.schema.toLowerCase();\n return !parsed.some((p) => schemaLower.startsWith(p));\n });\n }\n if (opts.schemaSuffix !== undefined && opts.notSchemaSuffix !== undefined) {\n console.error(\n `refactor list: --schema-suffix and --not-schema-suffix are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schemaSuffix !== undefined) {\n if (typeof opts.schemaSuffix !== 'string' || opts.schemaSuffix.length === 0) {\n console.error(`refactor list: --schema-suffix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const schemaSuffixLower = opts.schemaSuffix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.schema === 'string' &&\n o.object.schema.toLowerCase().endsWith(schemaSuffixLower),\n );\n }\n if (opts.notSchemaSuffix !== undefined) {\n if (typeof opts.notSchemaSuffix !== 'string' || opts.notSchemaSuffix.length === 0) {\n console.error(`refactor list: --not-schema-suffix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notSchemaSuffixLower = opts.notSchemaSuffix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.schema === 'string' &&\n !o.object.schema.toLowerCase().endsWith(notSchemaSuffixLower),\n );\n }\n if (\n opts.schemaSuffixes !== undefined &&\n (opts.schemaSuffix !== undefined || opts.notSchemaSuffix !== undefined)\n ) {\n console.error(\n `refactor list: --schema-suffixes is mutually exclusive with --schema-suffix and --not-schema-suffix; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schemaSuffixes !== undefined) {\n if (typeof opts.schemaSuffixes !== 'string' || opts.schemaSuffixes.trim().length === 0) {\n console.error(\n `refactor list: --schema-suffixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.schemaSuffixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --schema-suffixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.schema !== 'string') return false;\n const schemaLower = o.object.schema.toLowerCase();\n return parsed.some((s) => schemaLower.endsWith(s));\n });\n }\n if (\n opts.notSchemaSuffixes !== undefined &&\n (opts.schemaSuffix !== undefined ||\n opts.notSchemaSuffix !== undefined ||\n opts.schemaSuffixes !== undefined)\n ) {\n console.error(\n `refactor list: --not-schema-suffixes is mutually exclusive with --schema-suffix, --not-schema-suffix, and --schema-suffixes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notSchemaSuffixes !== undefined) {\n if (\n typeof opts.notSchemaSuffixes !== 'string' ||\n opts.notSchemaSuffixes.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-schema-suffixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notSchemaSuffixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-schema-suffixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.schema !== 'string') return false;\n const schemaLower = o.object.schema.toLowerCase();\n return !parsed.some((s) => schemaLower.endsWith(s));\n });\n }\n if (opts.schemaExact !== undefined && opts.notSchemaExact !== undefined) {\n console.error(\n `refactor list: --schema-exact and --not-schema-exact are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schemaExact !== undefined) {\n if (typeof opts.schemaExact !== 'string' || opts.schemaExact.length === 0) {\n console.error(`refactor list: --schema-exact must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const schemaExactLower = opts.schemaExact.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.schema === 'string' &&\n o.object.schema.toLowerCase() === schemaExactLower,\n );\n }\n if (opts.notSchemaExact !== undefined) {\n if (typeof opts.notSchemaExact !== 'string' || opts.notSchemaExact.length === 0) {\n console.error(`refactor list: --not-schema-exact must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notSchemaExactLower = opts.notSchemaExact.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.schema === 'string' &&\n o.object.schema.toLowerCase() !== notSchemaExactLower,\n );\n }\n if (\n opts.schemas !== undefined &&\n (opts.schemaExact !== undefined || opts.notSchemaExact !== undefined)\n ) {\n console.error(\n `refactor list: --schemas is mutually exclusive with --schema-exact and --not-schema-exact; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schemas !== undefined) {\n if (typeof opts.schemas !== 'string' || opts.schemas.trim().length === 0) {\n console.error(`refactor list: --schemas must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.schemas\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(`refactor list: --schemas must contain at least one non-empty value.`);\n process.exitCode = 1;\n return;\n }\n const wantSet = new Set(parsed);\n operations = operations.filter(\n (o) =>\n typeof o.object?.schema === 'string' && wantSet.has(o.object.schema.toLowerCase()),\n );\n }\n if (\n opts.notSchemas !== undefined &&\n (opts.schemaExact !== undefined ||\n opts.notSchemaExact !== undefined ||\n opts.schemas !== undefined)\n ) {\n console.error(\n `refactor list: --not-schemas is mutually exclusive with --schema-exact, --not-schema-exact, and --schemas; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notSchemas !== undefined) {\n if (typeof opts.notSchemas !== 'string' || opts.notSchemas.trim().length === 0) {\n console.error(`refactor list: --not-schemas must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notSchemas\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-schemas must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const excludeSet = new Set(parsed);\n operations = operations.filter(\n (o) =>\n typeof o.object?.schema === 'string' &&\n !excludeSet.has(o.object.schema.toLowerCase()),\n );\n }\n if (opts.databasePrefix !== undefined && opts.notDatabasePrefix !== undefined) {\n console.error(\n `refactor list: --database-prefix and --not-database-prefix are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.databasePrefix !== undefined) {\n if (typeof opts.databasePrefix !== 'string' || opts.databasePrefix.length === 0) {\n console.error(`refactor list: --database-prefix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const dbPrefixLower = opts.databasePrefix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.database === 'string' &&\n o.object.database.toLowerCase().startsWith(dbPrefixLower),\n );\n }\n if (opts.notDatabasePrefix !== undefined) {\n if (typeof opts.notDatabasePrefix !== 'string' || opts.notDatabasePrefix.length === 0) {\n console.error(`refactor list: --not-database-prefix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notDbPrefixLower = opts.notDatabasePrefix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.database === 'string' &&\n !o.object.database.toLowerCase().startsWith(notDbPrefixLower),\n );\n }\n if (\n opts.databasePrefixes !== undefined &&\n (opts.databasePrefix !== undefined || opts.notDatabasePrefix !== undefined)\n ) {\n console.error(\n `refactor list: --database-prefixes is mutually exclusive with --database-prefix and --not-database-prefix; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.databasePrefixes !== undefined) {\n if (\n typeof opts.databasePrefixes !== 'string' ||\n opts.databasePrefixes.trim().length === 0\n ) {\n console.error(\n `refactor list: --database-prefixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.databasePrefixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --database-prefixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.database !== 'string') return false;\n const dbLower = o.object.database.toLowerCase();\n return parsed.some((p) => dbLower.startsWith(p));\n });\n }\n if (\n opts.notDatabasePrefixes !== undefined &&\n (opts.databasePrefix !== undefined ||\n opts.notDatabasePrefix !== undefined ||\n opts.databasePrefixes !== undefined)\n ) {\n console.error(\n `refactor list: --not-database-prefixes is mutually exclusive with --database-prefix, --not-database-prefix, and --database-prefixes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDatabasePrefixes !== undefined) {\n if (\n typeof opts.notDatabasePrefixes !== 'string' ||\n opts.notDatabasePrefixes.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-database-prefixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notDatabasePrefixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-database-prefixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.database !== 'string') return false;\n const dbLower = o.object.database.toLowerCase();\n return !parsed.some((p) => dbLower.startsWith(p));\n });\n }\n if (opts.databaseSuffix !== undefined && opts.notDatabaseSuffix !== undefined) {\n console.error(\n `refactor list: --database-suffix and --not-database-suffix are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.databaseSuffix !== undefined) {\n if (typeof opts.databaseSuffix !== 'string' || opts.databaseSuffix.length === 0) {\n console.error(`refactor list: --database-suffix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const dbSuffixLower = opts.databaseSuffix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.database === 'string' &&\n o.object.database.toLowerCase().endsWith(dbSuffixLower),\n );\n }\n if (opts.notDatabaseSuffix !== undefined) {\n if (typeof opts.notDatabaseSuffix !== 'string' || opts.notDatabaseSuffix.length === 0) {\n console.error(`refactor list: --not-database-suffix must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notDbSuffixLower = opts.notDatabaseSuffix.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.database === 'string' &&\n !o.object.database.toLowerCase().endsWith(notDbSuffixLower),\n );\n }\n if (\n opts.databaseSuffixes !== undefined &&\n (opts.databaseSuffix !== undefined || opts.notDatabaseSuffix !== undefined)\n ) {\n console.error(\n `refactor list: --database-suffixes is mutually exclusive with --database-suffix and --not-database-suffix; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.databaseSuffixes !== undefined) {\n if (\n typeof opts.databaseSuffixes !== 'string' ||\n opts.databaseSuffixes.trim().length === 0\n ) {\n console.error(\n `refactor list: --database-suffixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.databaseSuffixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --database-suffixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.database !== 'string') return false;\n const dbLower = o.object.database.toLowerCase();\n return parsed.some((s) => dbLower.endsWith(s));\n });\n }\n if (\n opts.notDatabaseSuffixes !== undefined &&\n (opts.databaseSuffix !== undefined ||\n opts.notDatabaseSuffix !== undefined ||\n opts.databaseSuffixes !== undefined)\n ) {\n console.error(\n `refactor list: --not-database-suffixes is mutually exclusive with --database-suffix, --not-database-suffix, and --database-suffixes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDatabaseSuffixes !== undefined) {\n if (\n typeof opts.notDatabaseSuffixes !== 'string' ||\n opts.notDatabaseSuffixes.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-database-suffixes must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notDatabaseSuffixes\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-database-suffixes must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.database !== 'string') return false;\n const dbLower = o.object.database.toLowerCase();\n return !parsed.some((s) => dbLower.endsWith(s));\n });\n }\n if (opts.databaseExact !== undefined && opts.notDatabaseExact !== undefined) {\n console.error(\n `refactor list: --database-exact and --not-database-exact are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.databaseExact !== undefined) {\n if (typeof opts.databaseExact !== 'string' || opts.databaseExact.length === 0) {\n console.error(`refactor list: --database-exact must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const dbExactLower = opts.databaseExact.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.database === 'string' &&\n o.object.database.toLowerCase() === dbExactLower,\n );\n }\n if (opts.notDatabaseExact !== undefined) {\n if (typeof opts.notDatabaseExact !== 'string' || opts.notDatabaseExact.length === 0) {\n console.error(`refactor list: --not-database-exact must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notDbExactLower = opts.notDatabaseExact.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.database === 'string' &&\n o.object.database.toLowerCase() !== notDbExactLower,\n );\n }\n if (\n opts.databases !== undefined &&\n (opts.databaseExact !== undefined || opts.notDatabaseExact !== undefined)\n ) {\n console.error(\n `refactor list: --databases is mutually exclusive with --database-exact and --not-database-exact; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.databases !== undefined) {\n if (typeof opts.databases !== 'string' || opts.databases.trim().length === 0) {\n console.error(`refactor list: --databases must be a non-empty comma-separated list.`);\n process.exitCode = 1;\n return;\n }\n const parsed = opts.databases\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(`refactor list: --databases must contain at least one non-empty value.`);\n process.exitCode = 1;\n return;\n }\n const wantSet = new Set(parsed);\n operations = operations.filter(\n (o) =>\n typeof o.object?.database === 'string' &&\n wantSet.has(o.object.database.toLowerCase()),\n );\n }\n if (\n opts.notDatabases !== undefined &&\n (opts.databaseExact !== undefined ||\n opts.notDatabaseExact !== undefined ||\n opts.databases !== undefined)\n ) {\n console.error(\n `refactor list: --not-databases is mutually exclusive with --database-exact, --not-database-exact, and --databases; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDatabases !== undefined) {\n if (typeof opts.notDatabases !== 'string' || opts.notDatabases.trim().length === 0) {\n console.error(\n `refactor list: --not-databases must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notDatabases\n .split(',')\n .map((s) => s.trim().toLowerCase())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-databases must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const excludeSet = new Set(parsed);\n operations = operations.filter(\n (o) =>\n typeof o.object?.database === 'string' &&\n !excludeSet.has(o.object.database.toLowerCase()),\n );\n }\n if (opts.database !== undefined && opts.notDatabase !== undefined) {\n console.error(\n `refactor list: --database and --not-database are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.database !== undefined) {\n if (typeof opts.database !== 'string' || opts.database.length === 0) {\n console.error(`refactor list: --database must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const dbNeedleLower = opts.database.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.database === 'string' &&\n o.object.database.toLowerCase().includes(dbNeedleLower),\n );\n }\n if (opts.notDatabase !== undefined) {\n if (typeof opts.notDatabase !== 'string' || opts.notDatabase.length === 0) {\n console.error(`refactor list: --not-database must be a non-empty string.`);\n process.exitCode = 1;\n return;\n }\n const notDbNeedleLower = opts.notDatabase.toLowerCase();\n operations = operations.filter(\n (o) =>\n typeof o.object?.database === 'string' &&\n !o.object.database.toLowerCase().includes(notDbNeedleLower),\n );\n }\n if (\n opts.databaseContainsAny !== undefined &&\n (opts.database !== undefined || opts.notDatabase !== undefined)\n ) {\n console.error(\n `refactor list: --database-contains-any is mutually exclusive with --database and --not-database; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.databaseContainsAny !== undefined) {\n if (\n typeof opts.databaseContainsAny !== 'string' ||\n opts.databaseContainsAny.trim().length === 0\n ) {\n console.error(\n `refactor list: --database-contains-any must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.databaseContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --database-contains-any must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.database !== 'string') return false;\n const databaseLower = o.object.database.toLowerCase();\n return parsedLower.some((s) => databaseLower.includes(s));\n });\n }\n if (\n opts.notDatabaseContainsAny !== undefined &&\n (opts.database !== undefined ||\n opts.notDatabase !== undefined ||\n opts.databaseContainsAny !== undefined)\n ) {\n console.error(\n `refactor list: --not-database-contains-any is mutually exclusive with --database, --not-database, and --database-contains-any; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDatabaseContainsAny !== undefined) {\n if (\n typeof opts.notDatabaseContainsAny !== 'string' ||\n opts.notDatabaseContainsAny.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-database-contains-any must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notDatabaseContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-database-contains-any must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.database !== 'string') return true;\n const databaseLower = o.object.database.toLowerCase();\n return !parsedLower.some((s) => databaseLower.includes(s));\n });\n }\n if (\n opts.databaseContainsAll !== undefined &&\n (opts.database !== undefined ||\n opts.notDatabase !== undefined ||\n opts.databaseContainsAny !== undefined ||\n opts.notDatabaseContainsAny !== undefined)\n ) {\n console.error(\n `refactor list: --database-contains-all is mutually exclusive with --database, --not-database, --database-contains-any, and --not-database-contains-any; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.databaseContainsAll !== undefined) {\n if (\n typeof opts.databaseContainsAll !== 'string' ||\n opts.databaseContainsAll.trim().length === 0\n ) {\n console.error(\n `refactor list: --database-contains-all must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.databaseContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --database-contains-all must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.database !== 'string') return false;\n const databaseLower = o.object.database.toLowerCase();\n return parsedLower.every((s) => databaseLower.includes(s));\n });\n }\n if (\n opts.notDatabaseContainsAll !== undefined &&\n (opts.database !== undefined ||\n opts.notDatabase !== undefined ||\n opts.databaseContainsAny !== undefined ||\n opts.notDatabaseContainsAny !== undefined ||\n opts.databaseContainsAll !== undefined)\n ) {\n console.error(\n `refactor list: --not-database-contains-all is mutually exclusive with --database, --not-database, --database-contains-any, --not-database-contains-any, and --database-contains-all; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDatabaseContainsAll !== undefined) {\n if (\n typeof opts.notDatabaseContainsAll !== 'string' ||\n opts.notDatabaseContainsAll.trim().length === 0\n ) {\n console.error(\n `refactor list: --not-database-contains-all must be a non-empty comma-separated list.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsed = opts.notDatabaseContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parsed.length === 0) {\n console.error(\n `refactor list: --not-database-contains-all must contain at least one non-empty value.`,\n );\n process.exitCode = 1;\n return;\n }\n const parsedLower = parsed.map((s) => s.toLowerCase());\n operations = operations.filter((o) => {\n if (typeof o.object?.database !== 'string') return true;\n const databaseLower = o.object.database.toLowerCase();\n return !parsedLower.every((s) => databaseLower.includes(s));\n });\n }\n if (\n opts.databaseRegex !== undefined &&\n (opts.database !== undefined ||\n opts.notDatabase !== undefined ||\n opts.databaseContainsAny !== undefined ||\n opts.notDatabaseContainsAny !== undefined ||\n opts.databaseContainsAll !== undefined ||\n opts.notDatabaseContainsAll !== undefined)\n ) {\n console.error(\n `refactor list: --database-regex is mutually exclusive with --database, --not-database, --database-contains-any, --not-database-contains-any, --database-contains-all, and --not-database-contains-all; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.databaseRegex !== undefined) {\n if (typeof opts.databaseRegex !== 'string' || opts.databaseRegex.length === 0) {\n console.error(`refactor list: --database-regex must be a non-empty pattern.`);\n process.exitCode = 1;\n return;\n }\n let databasePattern: RegExp;\n try {\n databasePattern = new RegExp(opts.databaseRegex, 'i');\n } catch (err) {\n console.error(\n `refactor list: --database-regex invalid regex pattern: ${(err as Error).message}`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.database !== 'string') return false;\n return databasePattern.test(o.object.database);\n });\n }\n if (\n opts.notDatabaseRegex !== undefined &&\n (opts.database !== undefined ||\n opts.notDatabase !== undefined ||\n opts.databaseContainsAny !== undefined ||\n opts.notDatabaseContainsAny !== undefined ||\n opts.databaseContainsAll !== undefined ||\n opts.notDatabaseContainsAll !== undefined ||\n opts.databaseRegex !== undefined)\n ) {\n console.error(\n `refactor list: --not-database-regex is mutually exclusive with --database, --not-database, --database-contains-any, --not-database-contains-any, --database-contains-all, --not-database-contains-all, and --database-regex; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDatabaseRegex !== undefined) {\n if (typeof opts.notDatabaseRegex !== 'string' || opts.notDatabaseRegex.length === 0) {\n console.error(`refactor list: --not-database-regex must be a non-empty pattern.`);\n process.exitCode = 1;\n return;\n }\n let notDatabasePattern: RegExp;\n try {\n notDatabasePattern = new RegExp(opts.notDatabaseRegex, 'i');\n } catch (err) {\n console.error(\n `refactor list: --not-database-regex invalid regex pattern: ${(err as Error).message}`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.filter((o) => {\n if (typeof o.object?.database !== 'string') return true;\n return !notDatabasePattern.test(o.object.database);\n });\n }\n if (opts.nameMinLength !== undefined) {\n if (\n !Number.isFinite(opts.nameMinLength) ||\n !Number.isInteger(opts.nameMinLength) ||\n opts.nameMinLength < 0\n ) {\n console.error(\n `refactor list: --name-min-length ${JSON.stringify(opts.nameMinLength)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n const min = opts.nameMinLength;\n operations = operations.filter(\n (o) => typeof o.object?.name === 'string' && o.object.name.length >= min,\n );\n }\n if (opts.nameMaxLength !== undefined) {\n if (\n !Number.isFinite(opts.nameMaxLength) ||\n !Number.isInteger(opts.nameMaxLength) ||\n opts.nameMaxLength < 0\n ) {\n console.error(\n `refactor list: --name-max-length ${JSON.stringify(opts.nameMaxLength)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.nameMinLength !== undefined && opts.nameMinLength > opts.nameMaxLength) {\n console.error(\n `refactor list: --name-min-length ${opts.nameMinLength} is greater than --name-max-length ${opts.nameMaxLength}; range is empty by definition.`,\n );\n process.exitCode = 1;\n return;\n }\n const max = opts.nameMaxLength;\n operations = operations.filter(\n (o) => typeof o.object?.name === 'string' && o.object.name.length <= max,\n );\n }\n if (opts.schemaMinLength !== undefined) {\n if (\n !Number.isFinite(opts.schemaMinLength) ||\n !Number.isInteger(opts.schemaMinLength) ||\n opts.schemaMinLength < 0\n ) {\n console.error(\n `refactor list: --schema-min-length ${JSON.stringify(opts.schemaMinLength)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n const min = opts.schemaMinLength;\n operations = operations.filter(\n (o) => typeof o.object?.schema === 'string' && o.object.schema.length >= min,\n );\n }\n if (opts.schemaMaxLength !== undefined) {\n if (\n !Number.isFinite(opts.schemaMaxLength) ||\n !Number.isInteger(opts.schemaMaxLength) ||\n opts.schemaMaxLength < 0\n ) {\n console.error(\n `refactor list: --schema-max-length ${JSON.stringify(opts.schemaMaxLength)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.schemaMinLength !== undefined && opts.schemaMinLength > opts.schemaMaxLength) {\n console.error(\n `refactor list: --schema-min-length ${opts.schemaMinLength} is greater than --schema-max-length ${opts.schemaMaxLength}; range is empty by definition.`,\n );\n process.exitCode = 1;\n return;\n }\n const max = opts.schemaMaxLength;\n operations = operations.filter(\n (o) => typeof o.object?.schema === 'string' && o.object.schema.length <= max,\n );\n }\n if (opts.databaseMinLength !== undefined) {\n if (\n !Number.isFinite(opts.databaseMinLength) ||\n !Number.isInteger(opts.databaseMinLength) ||\n opts.databaseMinLength < 0\n ) {\n console.error(\n `refactor list: --database-min-length ${JSON.stringify(opts.databaseMinLength)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n const min = opts.databaseMinLength;\n operations = operations.filter(\n (o) => typeof o.object?.database === 'string' && o.object.database.length >= min,\n );\n }\n if (opts.databaseMaxLength !== undefined) {\n if (\n !Number.isFinite(opts.databaseMaxLength) ||\n !Number.isInteger(opts.databaseMaxLength) ||\n opts.databaseMaxLength < 0\n ) {\n console.error(\n `refactor list: --database-max-length ${JSON.stringify(opts.databaseMaxLength)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n if (\n opts.databaseMinLength !== undefined &&\n opts.databaseMinLength > opts.databaseMaxLength\n ) {\n console.error(\n `refactor list: --database-min-length ${opts.databaseMinLength} is greater than --database-max-length ${opts.databaseMaxLength}; range is empty by definition.`,\n );\n process.exitCode = 1;\n return;\n }\n const max = opts.databaseMaxLength;\n operations = operations.filter(\n (o) => typeof o.object?.database === 'string' && o.object.database.length <= max,\n );\n }\n if (opts.noteMinLength !== undefined) {\n if (\n !Number.isFinite(opts.noteMinLength) ||\n !Number.isInteger(opts.noteMinLength) ||\n opts.noteMinLength < 0\n ) {\n console.error(\n `refactor list: --note-min-length ${JSON.stringify(opts.noteMinLength)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n const min = opts.noteMinLength;\n operations = operations.filter((o) => typeof o.note === 'string' && o.note.length >= min);\n }\n if (opts.noteMaxLength !== undefined) {\n if (\n !Number.isFinite(opts.noteMaxLength) ||\n !Number.isInteger(opts.noteMaxLength) ||\n opts.noteMaxLength < 0\n ) {\n console.error(\n `refactor list: --note-max-length ${JSON.stringify(opts.noteMaxLength)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.noteMinLength !== undefined && opts.noteMinLength > opts.noteMaxLength) {\n console.error(\n `refactor list: --note-min-length ${opts.noteMinLength} is greater than --note-max-length ${opts.noteMaxLength}; range is empty by definition.`,\n );\n process.exitCode = 1;\n return;\n }\n const max = opts.noteMaxLength;\n operations = operations.filter((o) => typeof o.note === 'string' && o.note.length <= max);\n }\n if (opts.idMinLength !== undefined) {\n if (\n !Number.isFinite(opts.idMinLength) ||\n !Number.isInteger(opts.idMinLength) ||\n opts.idMinLength < 0\n ) {\n console.error(\n `refactor list: --id-min-length ${JSON.stringify(opts.idMinLength)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n const min = opts.idMinLength;\n operations = operations.filter((o) => typeof o.id === 'string' && o.id.length >= min);\n }\n if (opts.idMaxLength !== undefined) {\n if (\n !Number.isFinite(opts.idMaxLength) ||\n !Number.isInteger(opts.idMaxLength) ||\n opts.idMaxLength < 0\n ) {\n console.error(\n `refactor list: --id-max-length ${JSON.stringify(opts.idMaxLength)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.idMinLength !== undefined && opts.idMinLength > opts.idMaxLength) {\n console.error(\n `refactor list: --id-min-length ${opts.idMinLength} is greater than --id-max-length ${opts.idMaxLength}; range is empty by definition.`,\n );\n process.exitCode = 1;\n return;\n }\n const max = opts.idMaxLength;\n operations = operations.filter((o) => typeof o.id === 'string' && o.id.length <= max);\n }\n if (opts.hasDatabase && opts.missingDatabase) {\n console.error(\n `refactor list: --has-database and --missing-database are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.hasDatabase) {\n operations = operations.filter(\n (o) => typeof o.object?.database === 'string' && o.object.database.length > 0,\n );\n }\n if (opts.missingDatabase) {\n operations = operations.filter(\n (o) => typeof o.object?.database !== 'string' || o.object.database.length === 0,\n );\n }\n if (opts.hasSchema && opts.missingSchema) {\n console.error(\n `refactor list: --has-schema and --missing-schema are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.hasSchema) {\n operations = operations.filter(\n (o) => typeof o.object?.schema === 'string' && o.object.schema.length > 0,\n );\n }\n if (opts.missingSchema) {\n operations = operations.filter(\n (o) => typeof o.object?.schema !== 'string' || o.object.schema.length === 0,\n );\n }\n if (opts.hasNote && opts.missingNote) {\n console.error(\n `refactor list: --has-note and --missing-note are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.hasNote) {\n operations = operations.filter((o) => typeof o.note === 'string' && o.note.length > 0);\n }\n if (opts.missingNote) {\n operations = operations.filter((o) => typeof o.note !== 'string' || o.note.length === 0);\n }\n if (opts.last !== undefined && opts.first !== undefined) {\n console.error(`refactor list: --first and --last are mutually exclusive; pick one.`);\n process.exitCode = 1;\n return;\n }\n if (opts.last !== undefined) {\n if (!Number.isFinite(opts.last) || opts.last <= 0) {\n console.error(\n `refactor list: --last ${JSON.stringify(opts.last)} must be a positive integer.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.slice(-opts.last);\n }\n if (opts.first !== undefined) {\n if (!Number.isFinite(opts.first) || opts.first <= 0) {\n console.error(\n `refactor list: --first ${JSON.stringify(opts.first)} must be a positive integer.`,\n );\n process.exitCode = 1;\n return;\n }\n operations = operations.slice(0, opts.first);\n }\n if (opts.year !== undefined && opts.years !== undefined) {\n console.error(`refactor list: --year and --years are mutually exclusive; pick one.`);\n process.exitCode = 1;\n return;\n }\n if (opts.year !== undefined) {\n if (!Number.isFinite(opts.year) || !Number.isInteger(opts.year) || opts.year < 0) {\n console.error(\n `refactor list: --year ${JSON.stringify(opts.year)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n const year = opts.year;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return d.getUTCFullYear() === year;\n });\n }\n if (opts.years !== undefined) {\n const parts = opts.years\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --years requires at least one year value.`);\n process.exitCode = 1;\n return;\n }\n const years: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0) {\n console.error(\n `refactor list: --years entry ${JSON.stringify(p)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n years.push(n);\n }\n const yearSet = new Set(years);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return yearSet.has(d.getUTCFullYear());\n });\n }\n if (opts.notYear !== undefined && (opts.year !== undefined || opts.years !== undefined)) {\n console.error(\n `refactor list: --not-year is mutually exclusive with --year and --years; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notYear !== undefined) {\n if (\n !Number.isFinite(opts.notYear) ||\n !Number.isInteger(opts.notYear) ||\n opts.notYear < 0\n ) {\n console.error(\n `refactor list: --not-year ${JSON.stringify(opts.notYear)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n const year = opts.notYear;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return d.getUTCFullYear() !== year;\n });\n }\n if (\n opts.notYears !== undefined &&\n (opts.year !== undefined || opts.years !== undefined || opts.notYear !== undefined)\n ) {\n console.error(\n `refactor list: --not-years is mutually exclusive with --year, --years, and --not-year; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notYears !== undefined) {\n const parts = opts.notYears\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --not-years requires at least one year value.`);\n process.exitCode = 1;\n return;\n }\n const years: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0) {\n console.error(\n `refactor list: --not-years entry ${JSON.stringify(p)} must be a non-negative integer.`,\n );\n process.exitCode = 1;\n return;\n }\n years.push(n);\n }\n const yearSet = new Set(years);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return !yearSet.has(d.getUTCFullYear());\n });\n }\n if (opts.month !== undefined && opts.months !== undefined) {\n console.error(`refactor list: --month and --months are mutually exclusive; pick one.`);\n process.exitCode = 1;\n return;\n }\n if (opts.month !== undefined) {\n if (\n !Number.isFinite(opts.month) ||\n !Number.isInteger(opts.month) ||\n opts.month < 1 ||\n opts.month > 12\n ) {\n console.error(\n `refactor list: --month ${JSON.stringify(opts.month)} must be an integer in [1, 12].`,\n );\n process.exitCode = 1;\n return;\n }\n const monthIndex = opts.month - 1;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return d.getUTCMonth() === monthIndex;\n });\n }\n if (opts.months !== undefined) {\n const parts = opts.months\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --months requires at least one month value.`);\n process.exitCode = 1;\n return;\n }\n const monthIndexes: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 12) {\n console.error(\n `refactor list: --months entry ${JSON.stringify(p)} must be an integer in [1, 12].`,\n );\n process.exitCode = 1;\n return;\n }\n monthIndexes.push(n - 1);\n }\n const monthSet = new Set(monthIndexes);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return monthSet.has(d.getUTCMonth());\n });\n }\n if (\n opts.notMonth !== undefined &&\n (opts.month !== undefined || opts.months !== undefined)\n ) {\n console.error(\n `refactor list: --not-month is mutually exclusive with --month and --months; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notMonth !== undefined) {\n if (\n !Number.isFinite(opts.notMonth) ||\n !Number.isInteger(opts.notMonth) ||\n opts.notMonth < 1 ||\n opts.notMonth > 12\n ) {\n console.error(\n `refactor list: --not-month ${JSON.stringify(opts.notMonth)} must be an integer in [1, 12].`,\n );\n process.exitCode = 1;\n return;\n }\n const monthIndex = opts.notMonth - 1;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return d.getUTCMonth() !== monthIndex;\n });\n }\n if (\n opts.notMonths !== undefined &&\n (opts.month !== undefined || opts.months !== undefined || opts.notMonth !== undefined)\n ) {\n console.error(\n `refactor list: --not-months is mutually exclusive with --month, --months, and --not-month; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notMonths !== undefined) {\n const parts = opts.notMonths\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --not-months requires at least one month value.`);\n process.exitCode = 1;\n return;\n }\n const monthIndexes: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 12) {\n console.error(\n `refactor list: --not-months entry ${JSON.stringify(p)} must be an integer in [1, 12].`,\n );\n process.exitCode = 1;\n return;\n }\n monthIndexes.push(n - 1);\n }\n const monthSet = new Set(monthIndexes);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return !monthSet.has(d.getUTCMonth());\n });\n }\n if (opts.dayOfWeek !== undefined && opts.daysOfWeek !== undefined) {\n console.error(\n `refactor list: --day-of-week and --days-of-week are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.dayOfWeek !== undefined) {\n if (\n !Number.isFinite(opts.dayOfWeek) ||\n !Number.isInteger(opts.dayOfWeek) ||\n opts.dayOfWeek < 0 ||\n opts.dayOfWeek > 6\n ) {\n console.error(\n `refactor list: --day-of-week ${JSON.stringify(opts.dayOfWeek)} must be an integer in [0, 6].`,\n );\n process.exitCode = 1;\n return;\n }\n const dow = opts.dayOfWeek;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return d.getUTCDay() === dow;\n });\n }\n if (opts.daysOfWeek !== undefined) {\n const parts = opts.daysOfWeek\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --days-of-week requires at least one day value.`);\n process.exitCode = 1;\n return;\n }\n const dows: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 6) {\n console.error(\n `refactor list: --days-of-week entry ${JSON.stringify(p)} must be an integer in [0, 6].`,\n );\n process.exitCode = 1;\n return;\n }\n dows.push(n);\n }\n const dowSet = new Set(dows);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return dowSet.has(d.getUTCDay());\n });\n }\n if (\n opts.notDayOfWeek !== undefined &&\n (opts.dayOfWeek !== undefined || opts.daysOfWeek !== undefined)\n ) {\n console.error(\n `refactor list: --not-day-of-week is mutually exclusive with --day-of-week and --days-of-week; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDayOfWeek !== undefined) {\n if (\n !Number.isFinite(opts.notDayOfWeek) ||\n !Number.isInteger(opts.notDayOfWeek) ||\n opts.notDayOfWeek < 0 ||\n opts.notDayOfWeek > 6\n ) {\n console.error(\n `refactor list: --not-day-of-week ${JSON.stringify(opts.notDayOfWeek)} must be an integer in [0, 6].`,\n );\n process.exitCode = 1;\n return;\n }\n const dow = opts.notDayOfWeek;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return d.getUTCDay() !== dow;\n });\n }\n if (\n opts.notDaysOfWeek !== undefined &&\n (opts.dayOfWeek !== undefined ||\n opts.daysOfWeek !== undefined ||\n opts.notDayOfWeek !== undefined)\n ) {\n console.error(\n `refactor list: --not-days-of-week is mutually exclusive with --day-of-week, --days-of-week, and --not-day-of-week; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDaysOfWeek !== undefined) {\n const parts = opts.notDaysOfWeek\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --not-days-of-week requires at least one day value.`);\n process.exitCode = 1;\n return;\n }\n const dows: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 6) {\n console.error(\n `refactor list: --not-days-of-week entry ${JSON.stringify(p)} must be an integer in [0, 6].`,\n );\n process.exitCode = 1;\n return;\n }\n dows.push(n);\n }\n const dowSet = new Set(dows);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return !dowSet.has(d.getUTCDay());\n });\n }\n if (opts.hour !== undefined) {\n if (\n !Number.isFinite(opts.hour) ||\n !Number.isInteger(opts.hour) ||\n opts.hour < 0 ||\n opts.hour > 23\n ) {\n console.error(\n `refactor list: --hour ${JSON.stringify(opts.hour)} must be an integer in [0, 23].`,\n );\n process.exitCode = 1;\n return;\n }\n const hr = opts.hour;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return d.getUTCHours() === hr;\n });\n }\n if (opts.hour !== undefined && opts.hours !== undefined) {\n console.error(`refactor list: --hour and --hours are mutually exclusive; pick one.`);\n process.exitCode = 1;\n return;\n }\n if (opts.hours !== undefined) {\n const parts = opts.hours\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --hours requires at least one hour value.`);\n process.exitCode = 1;\n return;\n }\n const hours: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 23) {\n console.error(\n `refactor list: --hours entry ${JSON.stringify(p)} must be an integer in [0, 23].`,\n );\n process.exitCode = 1;\n return;\n }\n hours.push(n);\n }\n const hourSet = new Set(hours);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return hourSet.has(d.getUTCHours());\n });\n }\n if (opts.notHour !== undefined && (opts.hour !== undefined || opts.hours !== undefined)) {\n console.error(\n `refactor list: --not-hour is mutually exclusive with --hour and --hours; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notHour !== undefined) {\n if (\n !Number.isFinite(opts.notHour) ||\n !Number.isInteger(opts.notHour) ||\n opts.notHour < 0 ||\n opts.notHour > 23\n ) {\n console.error(\n `refactor list: --not-hour ${JSON.stringify(opts.notHour)} must be an integer in [0, 23].`,\n );\n process.exitCode = 1;\n return;\n }\n const hr = opts.notHour;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return d.getUTCHours() !== hr;\n });\n }\n if (\n opts.notHours !== undefined &&\n (opts.hour !== undefined || opts.hours !== undefined || opts.notHour !== undefined)\n ) {\n console.error(\n `refactor list: --not-hours is mutually exclusive with --hour, --hours, and --not-hour; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notHours !== undefined) {\n const parts = opts.notHours\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --not-hours requires at least one hour value.`);\n process.exitCode = 1;\n return;\n }\n const hours: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 23) {\n console.error(\n `refactor list: --not-hours entry ${JSON.stringify(p)} must be an integer in [0, 23].`,\n );\n process.exitCode = 1;\n return;\n }\n hours.push(n);\n }\n const hourSet = new Set(hours);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return !hourSet.has(d.getUTCHours());\n });\n }\n if (opts.minute !== undefined) {\n if (\n !Number.isFinite(opts.minute) ||\n !Number.isInteger(opts.minute) ||\n opts.minute < 0 ||\n opts.minute > 59\n ) {\n console.error(\n `refactor list: --minute ${JSON.stringify(opts.minute)} must be an integer in [0, 59].`,\n );\n process.exitCode = 1;\n return;\n }\n const mn = opts.minute;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return d.getUTCMinutes() === mn;\n });\n }\n if (opts.minute !== undefined && opts.minutes !== undefined) {\n console.error(`refactor list: --minute and --minutes are mutually exclusive; pick one.`);\n process.exitCode = 1;\n return;\n }\n if (opts.minutes !== undefined) {\n const parts = opts.minutes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --minutes requires at least one minute value.`);\n process.exitCode = 1;\n return;\n }\n const minutes: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 59) {\n console.error(\n `refactor list: --minutes entry ${JSON.stringify(p)} must be an integer in [0, 59].`,\n );\n process.exitCode = 1;\n return;\n }\n minutes.push(n);\n }\n const minuteSet = new Set(minutes);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return minuteSet.has(d.getUTCMinutes());\n });\n }\n if (\n opts.notMinute !== undefined &&\n (opts.minute !== undefined || opts.minutes !== undefined)\n ) {\n console.error(\n `refactor list: --not-minute is mutually exclusive with --minute and --minutes; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notMinute !== undefined) {\n if (\n !Number.isFinite(opts.notMinute) ||\n !Number.isInteger(opts.notMinute) ||\n opts.notMinute < 0 ||\n opts.notMinute > 59\n ) {\n console.error(\n `refactor list: --not-minute ${JSON.stringify(opts.notMinute)} must be an integer in [0, 59].`,\n );\n process.exitCode = 1;\n return;\n }\n const mn = opts.notMinute;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return d.getUTCMinutes() !== mn;\n });\n }\n if (\n opts.notMinutes !== undefined &&\n (opts.minute !== undefined || opts.minutes !== undefined || opts.notMinute !== undefined)\n ) {\n console.error(\n `refactor list: --not-minutes is mutually exclusive with --minute, --minutes, and --not-minute; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notMinutes !== undefined) {\n const parts = opts.notMinutes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --not-minutes requires at least one minute value.`);\n process.exitCode = 1;\n return;\n }\n const minutes: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 59) {\n console.error(\n `refactor list: --not-minutes entry ${JSON.stringify(p)} must be an integer in [0, 59].`,\n );\n process.exitCode = 1;\n return;\n }\n minutes.push(n);\n }\n const minuteSet = new Set(minutes);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return !minuteSet.has(d.getUTCMinutes());\n });\n }\n if (opts.second !== undefined) {\n if (\n !Number.isFinite(opts.second) ||\n !Number.isInteger(opts.second) ||\n opts.second < 0 ||\n opts.second > 59\n ) {\n console.error(\n `refactor list: --second ${JSON.stringify(opts.second)} must be an integer in [0, 59].`,\n );\n process.exitCode = 1;\n return;\n }\n const sc = opts.second;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return d.getUTCSeconds() === sc;\n });\n }\n if (opts.second !== undefined && opts.seconds !== undefined) {\n console.error(`refactor list: --second and --seconds are mutually exclusive; pick one.`);\n process.exitCode = 1;\n return;\n }\n if (opts.seconds !== undefined) {\n const parts = opts.seconds\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --seconds requires at least one second value.`);\n process.exitCode = 1;\n return;\n }\n const seconds: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 59) {\n console.error(\n `refactor list: --seconds entry ${JSON.stringify(p)} must be an integer in [0, 59].`,\n );\n process.exitCode = 1;\n return;\n }\n seconds.push(n);\n }\n const secondSet = new Set(seconds);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return secondSet.has(d.getUTCSeconds());\n });\n }\n if (\n opts.notSecond !== undefined &&\n (opts.second !== undefined || opts.seconds !== undefined)\n ) {\n console.error(\n `refactor list: --not-second is mutually exclusive with --second and --seconds; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notSecond !== undefined) {\n if (\n !Number.isFinite(opts.notSecond) ||\n !Number.isInteger(opts.notSecond) ||\n opts.notSecond < 0 ||\n opts.notSecond > 59\n ) {\n console.error(\n `refactor list: --not-second ${JSON.stringify(opts.notSecond)} must be an integer in [0, 59].`,\n );\n process.exitCode = 1;\n return;\n }\n const sc = opts.notSecond;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return d.getUTCSeconds() !== sc;\n });\n }\n if (\n opts.notSeconds !== undefined &&\n (opts.second !== undefined || opts.seconds !== undefined || opts.notSecond !== undefined)\n ) {\n console.error(\n `refactor list: --not-seconds is mutually exclusive with --second, --seconds, and --not-second; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notSeconds !== undefined) {\n const parts = opts.notSeconds\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --not-seconds requires at least one second value.`);\n process.exitCode = 1;\n return;\n }\n const seconds: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 59) {\n console.error(\n `refactor list: --not-seconds entry ${JSON.stringify(p)} must be an integer in [0, 59].`,\n );\n process.exitCode = 1;\n return;\n }\n seconds.push(n);\n }\n const secondSet = new Set(seconds);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return !secondSet.has(d.getUTCSeconds());\n });\n }\n if (opts.dayOfMonth !== undefined) {\n if (\n !Number.isFinite(opts.dayOfMonth) ||\n !Number.isInteger(opts.dayOfMonth) ||\n opts.dayOfMonth < 1 ||\n opts.dayOfMonth > 31\n ) {\n console.error(\n `refactor list: --day-of-month ${JSON.stringify(opts.dayOfMonth)} must be an integer in [1, 31].`,\n );\n process.exitCode = 1;\n return;\n }\n const dm = opts.dayOfMonth;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return d.getUTCDate() === dm;\n });\n }\n if (opts.dayOfMonth !== undefined && opts.daysOfMonth !== undefined) {\n console.error(\n `refactor list: --day-of-month and --days-of-month are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.daysOfMonth !== undefined) {\n const parts = opts.daysOfMonth\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --days-of-month requires at least one day value.`);\n process.exitCode = 1;\n return;\n }\n const days: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 31) {\n console.error(\n `refactor list: --days-of-month entry ${JSON.stringify(p)} must be an integer in [1, 31].`,\n );\n process.exitCode = 1;\n return;\n }\n days.push(n);\n }\n const daySet = new Set(days);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return daySet.has(d.getUTCDate());\n });\n }\n if (\n opts.notDayOfMonth !== undefined &&\n (opts.dayOfMonth !== undefined || opts.daysOfMonth !== undefined)\n ) {\n console.error(\n `refactor list: --not-day-of-month is mutually exclusive with --day-of-month and --days-of-month; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDayOfMonth !== undefined) {\n if (\n !Number.isFinite(opts.notDayOfMonth) ||\n !Number.isInteger(opts.notDayOfMonth) ||\n opts.notDayOfMonth < 1 ||\n opts.notDayOfMonth > 31\n ) {\n console.error(\n `refactor list: --not-day-of-month ${JSON.stringify(opts.notDayOfMonth)} must be an integer in [1, 31].`,\n );\n process.exitCode = 1;\n return;\n }\n const dm = opts.notDayOfMonth;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return d.getUTCDate() !== dm;\n });\n }\n if (\n opts.notDaysOfMonth !== undefined &&\n (opts.dayOfMonth !== undefined ||\n opts.daysOfMonth !== undefined ||\n opts.notDayOfMonth !== undefined)\n ) {\n console.error(\n `refactor list: --not-days-of-month is mutually exclusive with --day-of-month, --days-of-month, and --not-day-of-month; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDaysOfMonth !== undefined) {\n const parts = opts.notDaysOfMonth\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --not-days-of-month requires at least one day value.`);\n process.exitCode = 1;\n return;\n }\n const days: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 31) {\n console.error(\n `refactor list: --not-days-of-month entry ${JSON.stringify(p)} must be an integer in [1, 31].`,\n );\n process.exitCode = 1;\n return;\n }\n days.push(n);\n }\n const daySet = new Set(days);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return !daySet.has(d.getUTCDate());\n });\n }\n if (opts.quarter !== undefined) {\n if (\n !Number.isFinite(opts.quarter) ||\n !Number.isInteger(opts.quarter) ||\n opts.quarter < 1 ||\n opts.quarter > 4\n ) {\n console.error(\n `refactor list: --quarter ${JSON.stringify(opts.quarter)} must be an integer in [1, 4].`,\n );\n process.exitCode = 1;\n return;\n }\n const q = opts.quarter;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return Math.floor(d.getUTCMonth() / 3) + 1 === q;\n });\n }\n if (opts.quarter !== undefined && opts.quarters !== undefined) {\n console.error(\n `refactor list: --quarter and --quarters are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.quarters !== undefined) {\n const parts = opts.quarters\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --quarters requires at least one quarter value.`);\n process.exitCode = 1;\n return;\n }\n const quarters: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 4) {\n console.error(\n `refactor list: --quarters entry ${JSON.stringify(p)} must be an integer in [1, 4].`,\n );\n process.exitCode = 1;\n return;\n }\n quarters.push(n);\n }\n const quarterSet = new Set(quarters);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return quarterSet.has(Math.floor(d.getUTCMonth() / 3) + 1);\n });\n }\n if (\n opts.notQuarter !== undefined &&\n (opts.quarter !== undefined || opts.quarters !== undefined)\n ) {\n console.error(\n `refactor list: --not-quarter is mutually exclusive with --quarter and --quarters; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notQuarter !== undefined) {\n if (\n !Number.isFinite(opts.notQuarter) ||\n !Number.isInteger(opts.notQuarter) ||\n opts.notQuarter < 1 ||\n opts.notQuarter > 4\n ) {\n console.error(\n `refactor list: --not-quarter ${JSON.stringify(opts.notQuarter)} must be an integer in [1, 4].`,\n );\n process.exitCode = 1;\n return;\n }\n const q = opts.notQuarter;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return Math.floor(d.getUTCMonth() / 3) + 1 !== q;\n });\n }\n if (\n opts.notQuarters !== undefined &&\n (opts.quarter !== undefined ||\n opts.quarters !== undefined ||\n opts.notQuarter !== undefined)\n ) {\n console.error(\n `refactor list: --not-quarters is mutually exclusive with --quarter, --quarters, and --not-quarter; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notQuarters !== undefined) {\n const parts = opts.notQuarters\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --not-quarters requires at least one quarter value.`);\n process.exitCode = 1;\n return;\n }\n const quarters: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 4) {\n console.error(\n `refactor list: --not-quarters entry ${JSON.stringify(p)} must be an integer in [1, 4].`,\n );\n process.exitCode = 1;\n return;\n }\n quarters.push(n);\n }\n const quarterSet = new Set(quarters);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return !quarterSet.has(Math.floor(d.getUTCMonth() / 3) + 1);\n });\n }\n if (opts.dayOfYear !== undefined) {\n if (\n !Number.isFinite(opts.dayOfYear) ||\n !Number.isInteger(opts.dayOfYear) ||\n opts.dayOfYear < 1 ||\n opts.dayOfYear > 366\n ) {\n console.error(\n `refactor list: --day-of-year ${JSON.stringify(opts.dayOfYear)} must be an integer in [1, 366].`,\n );\n process.exitCode = 1;\n return;\n }\n const dy = opts.dayOfYear;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n const startOfYear = Date.UTC(d.getUTCFullYear(), 0, 1);\n return Math.floor((d.getTime() - startOfYear) / 86400000) + 1 === dy;\n });\n }\n if (opts.dayOfYear !== undefined && opts.daysOfYear !== undefined) {\n console.error(\n `refactor list: --day-of-year and --days-of-year are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.daysOfYear !== undefined) {\n const parts = opts.daysOfYear\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --days-of-year requires at least one day-of-year value.`);\n process.exitCode = 1;\n return;\n }\n const days: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 366) {\n console.error(\n `refactor list: --days-of-year entry ${JSON.stringify(p)} must be an integer in [1, 366].`,\n );\n process.exitCode = 1;\n return;\n }\n days.push(n);\n }\n const daySet = new Set(days);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n const startOfYear = Date.UTC(d.getUTCFullYear(), 0, 1);\n return daySet.has(Math.floor((d.getTime() - startOfYear) / 86400000) + 1);\n });\n }\n if (\n opts.notDayOfYear !== undefined &&\n (opts.dayOfYear !== undefined || opts.daysOfYear !== undefined)\n ) {\n console.error(\n `refactor list: --not-day-of-year is mutually exclusive with --day-of-year and --days-of-year; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDayOfYear !== undefined) {\n if (\n !Number.isFinite(opts.notDayOfYear) ||\n !Number.isInteger(opts.notDayOfYear) ||\n opts.notDayOfYear < 1 ||\n opts.notDayOfYear > 366\n ) {\n console.error(\n `refactor list: --not-day-of-year ${JSON.stringify(opts.notDayOfYear)} must be an integer in [1, 366].`,\n );\n process.exitCode = 1;\n return;\n }\n const dy = opts.notDayOfYear;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n const startOfYear = Date.UTC(d.getUTCFullYear(), 0, 1);\n return Math.floor((d.getTime() - startOfYear) / 86400000) + 1 !== dy;\n });\n }\n if (\n opts.notDaysOfYear !== undefined &&\n (opts.dayOfYear !== undefined ||\n opts.daysOfYear !== undefined ||\n opts.notDayOfYear !== undefined)\n ) {\n console.error(\n `refactor list: --not-days-of-year is mutually exclusive with --day-of-year, --days-of-year, and --not-day-of-year; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notDaysOfYear !== undefined) {\n const parts = opts.notDaysOfYear\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(\n `refactor list: --not-days-of-year requires at least one day-of-year value.`,\n );\n process.exitCode = 1;\n return;\n }\n const days: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 366) {\n console.error(\n `refactor list: --not-days-of-year entry ${JSON.stringify(p)} must be an integer in [1, 366].`,\n );\n process.exitCode = 1;\n return;\n }\n days.push(n);\n }\n const daySet = new Set(days);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n const startOfYear = Date.UTC(d.getUTCFullYear(), 0, 1);\n return !daySet.has(Math.floor((d.getTime() - startOfYear) / 86400000) + 1);\n });\n }\n if (opts.weekOfYear !== undefined) {\n if (\n !Number.isFinite(opts.weekOfYear) ||\n !Number.isInteger(opts.weekOfYear) ||\n opts.weekOfYear < 1 ||\n opts.weekOfYear > 53\n ) {\n console.error(\n `refactor list: --week-of-year ${JSON.stringify(opts.weekOfYear)} must be an integer in [1, 53].`,\n );\n process.exitCode = 1;\n return;\n }\n const w = opts.weekOfYear;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n const startOfYear = Date.UTC(d.getUTCFullYear(), 0, 1);\n return Math.floor((d.getTime() - startOfYear) / 86400000 / 7) + 1 === w;\n });\n }\n if (opts.weekOfYear !== undefined && opts.weeksOfYear !== undefined) {\n console.error(\n `refactor list: --week-of-year and --weeks-of-year are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.weeksOfYear !== undefined) {\n const parts = opts.weeksOfYear\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(\n `refactor list: --weeks-of-year requires at least one week-of-year value.`,\n );\n process.exitCode = 1;\n return;\n }\n const weeks: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 53) {\n console.error(\n `refactor list: --weeks-of-year entry ${JSON.stringify(p)} must be an integer in [1, 53].`,\n );\n process.exitCode = 1;\n return;\n }\n weeks.push(n);\n }\n const weekSet = new Set(weeks);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n const startOfYear = Date.UTC(d.getUTCFullYear(), 0, 1);\n return weekSet.has(Math.floor((d.getTime() - startOfYear) / 86400000 / 7) + 1);\n });\n }\n if (\n opts.notWeekOfYear !== undefined &&\n (opts.weekOfYear !== undefined || opts.weeksOfYear !== undefined)\n ) {\n console.error(\n `refactor list: --not-week-of-year is mutually exclusive with --week-of-year and --weeks-of-year; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notWeekOfYear !== undefined) {\n if (\n !Number.isFinite(opts.notWeekOfYear) ||\n !Number.isInteger(opts.notWeekOfYear) ||\n opts.notWeekOfYear < 1 ||\n opts.notWeekOfYear > 53\n ) {\n console.error(\n `refactor list: --not-week-of-year ${JSON.stringify(opts.notWeekOfYear)} must be an integer in [1, 53].`,\n );\n process.exitCode = 1;\n return;\n }\n const w = opts.notWeekOfYear;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n const startOfYear = Date.UTC(d.getUTCFullYear(), 0, 1);\n return Math.floor((d.getTime() - startOfYear) / 86400000 / 7) + 1 !== w;\n });\n }\n if (\n opts.notWeeksOfYear !== undefined &&\n (opts.weekOfYear !== undefined ||\n opts.weeksOfYear !== undefined ||\n opts.notWeekOfYear !== undefined)\n ) {\n console.error(\n `refactor list: --not-weeks-of-year is mutually exclusive with --week-of-year, --weeks-of-year, and --not-week-of-year; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notWeeksOfYear !== undefined) {\n const parts = opts.notWeeksOfYear\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(\n `refactor list: --not-weeks-of-year requires at least one week-of-year value.`,\n );\n process.exitCode = 1;\n return;\n }\n const weeks: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 53) {\n console.error(\n `refactor list: --not-weeks-of-year entry ${JSON.stringify(p)} must be an integer in [1, 53].`,\n );\n process.exitCode = 1;\n return;\n }\n weeks.push(n);\n }\n const weekSet = new Set(weeks);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n const startOfYear = Date.UTC(d.getUTCFullYear(), 0, 1);\n return !weekSet.has(Math.floor((d.getTime() - startOfYear) / 86400000 / 7) + 1);\n });\n }\n if (opts.weekOfMonth !== undefined) {\n if (\n !Number.isFinite(opts.weekOfMonth) ||\n !Number.isInteger(opts.weekOfMonth) ||\n opts.weekOfMonth < 1 ||\n opts.weekOfMonth > 5\n ) {\n console.error(\n `refactor list: --week-of-month ${JSON.stringify(opts.weekOfMonth)} must be an integer in [1, 5].`,\n );\n process.exitCode = 1;\n return;\n }\n const w = opts.weekOfMonth;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return Math.floor((d.getUTCDate() - 1) / 7) + 1 === w;\n });\n }\n if (opts.weekOfMonth !== undefined && opts.weeksOfMonth !== undefined) {\n console.error(\n `refactor list: --week-of-month and --weeks-of-month are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.weeksOfMonth !== undefined) {\n const parts = opts.weeksOfMonth\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(\n `refactor list: --weeks-of-month requires at least one week-of-month value.`,\n );\n process.exitCode = 1;\n return;\n }\n const weeks: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 5) {\n console.error(\n `refactor list: --weeks-of-month entry ${JSON.stringify(p)} must be an integer in [1, 5].`,\n );\n process.exitCode = 1;\n return;\n }\n weeks.push(n);\n }\n const weekSet = new Set(weeks);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return weekSet.has(Math.floor((d.getUTCDate() - 1) / 7) + 1);\n });\n }\n if (\n opts.notWeekOfMonth !== undefined &&\n (opts.weekOfMonth !== undefined || opts.weeksOfMonth !== undefined)\n ) {\n console.error(\n `refactor list: --not-week-of-month is mutually exclusive with --week-of-month and --weeks-of-month; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notWeekOfMonth !== undefined) {\n if (\n !Number.isFinite(opts.notWeekOfMonth) ||\n !Number.isInteger(opts.notWeekOfMonth) ||\n opts.notWeekOfMonth < 1 ||\n opts.notWeekOfMonth > 5\n ) {\n console.error(\n `refactor list: --not-week-of-month ${JSON.stringify(opts.notWeekOfMonth)} must be an integer in [1, 5].`,\n );\n process.exitCode = 1;\n return;\n }\n const w = opts.notWeekOfMonth;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return Math.floor((d.getUTCDate() - 1) / 7) + 1 !== w;\n });\n }\n if (\n opts.notWeeksOfMonth !== undefined &&\n (opts.weekOfMonth !== undefined ||\n opts.weeksOfMonth !== undefined ||\n opts.notWeekOfMonth !== undefined)\n ) {\n console.error(\n `refactor list: --not-weeks-of-month is mutually exclusive with --week-of-month, --weeks-of-month, and --not-week-of-month; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notWeeksOfMonth !== undefined) {\n const parts = opts.notWeeksOfMonth\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(\n `refactor list: --not-weeks-of-month requires at least one week-of-month value.`,\n );\n process.exitCode = 1;\n return;\n }\n const weeks: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 1 || n > 5) {\n console.error(\n `refactor list: --not-weeks-of-month entry ${JSON.stringify(p)} must be an integer in [1, 5].`,\n );\n process.exitCode = 1;\n return;\n }\n weeks.push(n);\n }\n const weekSet = new Set(weeks);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return !weekSet.has(Math.floor((d.getUTCDate() - 1) / 7) + 1);\n });\n }\n if (opts.millisecond !== undefined) {\n if (\n !Number.isFinite(opts.millisecond) ||\n !Number.isInteger(opts.millisecond) ||\n opts.millisecond < 0 ||\n opts.millisecond > 999\n ) {\n console.error(\n `refactor list: --millisecond ${JSON.stringify(opts.millisecond)} must be an integer in [0, 999].`,\n );\n process.exitCode = 1;\n return;\n }\n const ms = opts.millisecond;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return d.getUTCMilliseconds() === ms;\n });\n }\n if (opts.millisecond !== undefined && opts.milliseconds !== undefined) {\n console.error(\n `refactor list: --millisecond and --milliseconds are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.milliseconds !== undefined) {\n const parts = opts.milliseconds\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(`refactor list: --milliseconds requires at least one millisecond value.`);\n process.exitCode = 1;\n return;\n }\n const ms: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 999) {\n console.error(\n `refactor list: --milliseconds entry ${JSON.stringify(p)} must be an integer in [0, 999].`,\n );\n process.exitCode = 1;\n return;\n }\n ms.push(n);\n }\n const msSet = new Set(ms);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return msSet.has(d.getUTCMilliseconds());\n });\n }\n if (\n opts.notMillisecond !== undefined &&\n (opts.millisecond !== undefined || opts.milliseconds !== undefined)\n ) {\n console.error(\n `refactor list: --not-millisecond is mutually exclusive with --millisecond and --milliseconds; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notMillisecond !== undefined) {\n if (\n !Number.isFinite(opts.notMillisecond) ||\n !Number.isInteger(opts.notMillisecond) ||\n opts.notMillisecond < 0 ||\n opts.notMillisecond > 999\n ) {\n console.error(\n `refactor list: --not-millisecond ${JSON.stringify(opts.notMillisecond)} must be an integer in [0, 999].`,\n );\n process.exitCode = 1;\n return;\n }\n const ms = opts.notMillisecond;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return d.getUTCMilliseconds() !== ms;\n });\n }\n if (\n opts.notMilliseconds !== undefined &&\n (opts.millisecond !== undefined ||\n opts.milliseconds !== undefined ||\n opts.notMillisecond !== undefined)\n ) {\n console.error(\n `refactor list: --not-milliseconds is mutually exclusive with --millisecond, --milliseconds, and --not-millisecond; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.notMilliseconds !== undefined) {\n const parts = opts.notMilliseconds\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(\n `refactor list: --not-milliseconds requires at least one millisecond value.`,\n );\n process.exitCode = 1;\n return;\n }\n const ms: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 999) {\n console.error(\n `refactor list: --not-milliseconds entry ${JSON.stringify(p)} must be an integer in [0, 999].`,\n );\n process.exitCode = 1;\n return;\n }\n ms.push(n);\n }\n const msSet = new Set(ms);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return true;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return true;\n return !msSet.has(d.getUTCMilliseconds());\n });\n }\n if (opts.minuteOfDay !== undefined) {\n if (\n !Number.isFinite(opts.minuteOfDay) ||\n !Number.isInteger(opts.minuteOfDay) ||\n opts.minuteOfDay < 0 ||\n opts.minuteOfDay > 1439\n ) {\n console.error(\n `refactor list: --minute-of-day ${JSON.stringify(opts.minuteOfDay)} must be an integer in [0, 1439].`,\n );\n process.exitCode = 1;\n return;\n }\n const mod = opts.minuteOfDay;\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return d.getUTCHours() * 60 + d.getUTCMinutes() === mod;\n });\n }\n if (opts.minuteOfDay !== undefined && opts.minutesOfDay !== undefined) {\n console.error(\n `refactor list: --minute-of-day and --minutes-of-day are mutually exclusive; pick one.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.minutesOfDay !== undefined) {\n const parts = opts.minutesOfDay\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (parts.length === 0) {\n console.error(\n `refactor list: --minutes-of-day requires at least one minute-of-day value.`,\n );\n process.exitCode = 1;\n return;\n }\n const mods: number[] = [];\n for (const p of parts) {\n const n = Number(p);\n if (!Number.isFinite(n) || !Number.isInteger(n) || n < 0 || n > 1439) {\n console.error(\n `refactor list: --minutes-of-day entry ${JSON.stringify(p)} must be an integer in [0, 1439].`,\n );\n process.exitCode = 1;\n return;\n }\n mods.push(n);\n }\n const modSet = new Set(mods);\n operations = operations.filter((o) => {\n if (typeof o.timestamp !== 'string') return false;\n const d = new Date(o.timestamp);\n if (Number.isNaN(d.getTime())) return false;\n return modSet.has(d.getUTCHours() * 60 + d.getUTCMinutes());\n });\n }\n if (opts.reverse) {\n // Reverse the displayed/JSON order AFTER --last so callers asking\n // for \"most recent 5, newest on top\" get exactly that.\n operations = [...operations].reverse();\n }\n if (opts.count && opts.summary) {\n console.error(`refactor list: --count and --summary are mutually exclusive; pick one.`);\n process.exitCode = 1;\n return;\n }\n if (opts.csv && (opts.json || opts.count || opts.summary)) {\n console.error(\n `refactor list: --csv is mutually exclusive with --json, --count, --summary; pick one output mode.`,\n );\n process.exitCode = 1;\n return;\n }\n if (opts.count) {\n if (opts.json) {\n process.stdout.write(JSON.stringify({ count: operations.length }) + '\\n');\n } else {\n process.stdout.write(`${operations.length}\\n`);\n }\n return;\n }\n if (opts.summary) {\n const byType: Record<string, number> = {};\n for (const op of operations) {\n byType[op.type] = (byType[op.type] ?? 0) + 1;\n }\n if (opts.json) {\n process.stdout.write(JSON.stringify({ total: operations.length, byType }) + '\\n');\n } else {\n console.log(`Refactor log summary: ${logPath} (${operations.length} op(s) total)`);\n const kinds = Object.keys(byType).sort();\n for (const kind of kinds) {\n console.log(` ${kind}: ${byType[kind]}`);\n }\n }\n return;\n }\n if (opts.csv) {\n // RFC 4180: quote a field if it contains comma, double-quote, CR or LF.\n // Escape any embedded `\"` by doubling them (`\"\"`).\n const csvEscape = (raw: unknown): string => {\n if (raw === undefined || raw === null) return '';\n const s = String(raw);\n if (/[\",\\r\\n]/.test(s)) return `\"${s.replace(/\"/g, '\"\"')}\"`;\n return s;\n };\n const headers = [\n 'id',\n 'timestamp',\n 'type',\n 'database',\n 'schema',\n 'name',\n 'objectType',\n 'note',\n ];\n const lines = [headers.join(',')];\n for (const op of operations) {\n lines.push(\n [\n csvEscape(op.id),\n csvEscape(op.timestamp),\n csvEscape(op.type),\n csvEscape(op.object?.database),\n csvEscape(op.object?.schema),\n csvEscape(op.object?.name),\n csvEscape(op.object?.objectType),\n csvEscape(op.note),\n ].join(','),\n );\n }\n process.stdout.write(lines.join('\\n') + '\\n');\n return;\n }\n if (opts.json) {\n process.stdout.write(JSON.stringify({ ...log, operations }, null, 2) + '\\n');\n return;\n }\n const annotations: string[] = [];\n if (wantKind) annotations.push(`matching type=${wantKind}`);\n if (excludeKind) annotations.push(`excluding type=${excludeKind}`);\n if (wantKindSet !== undefined) annotations.push(`types=${[...wantKindSet].join(',')}`);\n if (excludeKindSet !== undefined)\n annotations.push(`not-types=${[...excludeKindSet].join(',')}`);\n if (sinceMs !== undefined)\n annotations.push(`since=${opts.since ?? `now-${opts.sinceRelative}`}`);\n if (untilMs !== undefined)\n annotations.push(`until=${opts.until ?? `now-${opts.untilRelative}`}`);\n if (opts.id !== undefined) annotations.push(`id=${opts.id}`);\n if (opts.notId !== undefined) annotations.push(`not-id=${opts.notId}`);\n if (opts.ids !== undefined) {\n const parsed = opts.ids\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`ids=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notIds !== undefined) {\n const parsed = opts.notIds\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-ids=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.idPrefix !== undefined) annotations.push(`id-prefix=${opts.idPrefix}`);\n if (opts.notIdPrefix !== undefined) annotations.push(`not-id-prefix=${opts.notIdPrefix}`);\n if (opts.idPrefixes !== undefined) {\n const parsed = opts.idPrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`id-prefixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notIdPrefixes !== undefined) {\n const parsed = opts.notIdPrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-id-prefixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.idSuffix !== undefined) annotations.push(`id-suffix=${opts.idSuffix}`);\n if (opts.notIdSuffix !== undefined) annotations.push(`not-id-suffix=${opts.notIdSuffix}`);\n if (opts.idSuffixes !== undefined) {\n const parsed = opts.idSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`id-suffixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notIdSuffixes !== undefined) {\n const parsed = opts.notIdSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-id-suffixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.idContains !== undefined) annotations.push(`id-contains=${opts.idContains}`);\n if (opts.notIdContains !== undefined)\n annotations.push(`not-id-contains=${opts.notIdContains}`);\n if (opts.idContainsAny !== undefined) {\n const parsed = opts.idContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`id-contains-any=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notIdContainsAny !== undefined) {\n const parsed = opts.notIdContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-id-contains-any=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.idContainsAll !== undefined) {\n const parsed = opts.idContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`id-contains-all=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notIdContainsAll !== undefined) {\n const parsed = opts.notIdContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-id-contains-all=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.idRegex !== undefined)\n annotations.push(`id-regex=${JSON.stringify(opts.idRegex)}`);\n if (opts.notIdRegex !== undefined)\n annotations.push(`not-id-regex=${JSON.stringify(opts.notIdRegex)}`);\n if (opts.noteContains !== undefined)\n annotations.push(`note-contains=${JSON.stringify(opts.noteContains)}`);\n if (opts.notNoteContains !== undefined)\n annotations.push(`not-note-contains=${JSON.stringify(opts.notNoteContains)}`);\n if (opts.noteContainsAny !== undefined) {\n const parsed = opts.noteContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`note-contains-any=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNoteContainsAny !== undefined) {\n const parsed = opts.notNoteContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `not-note-contains-any=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.noteContainsAll !== undefined) {\n const parsed = opts.noteContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`note-contains-all=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNoteContainsAll !== undefined) {\n const parsed = opts.notNoteContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `not-note-contains-all=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.noteRegex !== undefined)\n annotations.push(`note-regex=${JSON.stringify(opts.noteRegex)}`);\n if (opts.notNoteRegex !== undefined)\n annotations.push(`not-note-regex=${JSON.stringify(opts.notNoteRegex)}`);\n if (opts.notePrefix !== undefined)\n annotations.push(`note-prefix=${JSON.stringify(opts.notePrefix)}`);\n if (opts.notNotePrefix !== undefined)\n annotations.push(`not-note-prefix=${JSON.stringify(opts.notNotePrefix)}`);\n if (opts.notePrefixes !== undefined) {\n const parsed = opts.notePrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`note-prefixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNotePrefixes !== undefined) {\n const parsed = opts.notNotePrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-note-prefixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.noteSuffix !== undefined)\n annotations.push(`note-suffix=${JSON.stringify(opts.noteSuffix)}`);\n if (opts.notNoteSuffix !== undefined)\n annotations.push(`not-note-suffix=${JSON.stringify(opts.notNoteSuffix)}`);\n if (opts.noteSuffixes !== undefined) {\n const parsed = opts.noteSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`note-suffixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNoteSuffixes !== undefined) {\n const parsed = opts.notNoteSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-note-suffixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.noteExact !== undefined)\n annotations.push(`note-exact=${JSON.stringify(opts.noteExact)}`);\n if (opts.notes !== undefined) {\n const parsed = opts.notes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`notes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNotes !== undefined) {\n const parsed = opts.notNotes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-notes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNoteExact !== undefined)\n annotations.push(`not-note-exact=${JSON.stringify(opts.notNoteExact)}`);\n if (opts.objectType !== undefined)\n annotations.push(`object-type=${opts.objectType.toUpperCase()}`);\n if (opts.objectTypes !== undefined) {\n const parsed = opts.objectTypes\n .split(',')\n .map((s) => s.trim().toUpperCase())\n .filter((s) => s.length > 0);\n annotations.push(`object-types=${parsed.join(',')}`);\n }\n if (opts.notObjectTypes !== undefined) {\n const parsed = opts.notObjectTypes\n .split(',')\n .map((s) => s.trim().toUpperCase())\n .filter((s) => s.length > 0);\n annotations.push(`not-object-types=${parsed.join(',')}`);\n }\n if (opts.notObjectType !== undefined)\n annotations.push(`not-object-type=${opts.notObjectType.toUpperCase()}`);\n if (opts.name !== undefined) annotations.push(`name=${JSON.stringify(opts.name)}`);\n if (opts.notName !== undefined)\n annotations.push(`not-name=${JSON.stringify(opts.notName)}`);\n if (opts.nameContainsAny !== undefined) {\n const parsed = opts.nameContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`name-contains-any=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNameContainsAny !== undefined) {\n const parsed = opts.notNameContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `not-name-contains-any=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.nameContainsAll !== undefined) {\n const parsed = opts.nameContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`name-contains-all=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNameContainsAll !== undefined) {\n const parsed = opts.notNameContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `not-name-contains-all=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.nameRegex !== undefined)\n annotations.push(`name-regex=${JSON.stringify(opts.nameRegex)}`);\n if (opts.notNameRegex !== undefined)\n annotations.push(`not-name-regex=${JSON.stringify(opts.notNameRegex)}`);\n if (opts.namePrefix !== undefined)\n annotations.push(`name-prefix=${JSON.stringify(opts.namePrefix)}`);\n if (opts.notNamePrefix !== undefined)\n annotations.push(`not-name-prefix=${JSON.stringify(opts.notNamePrefix)}`);\n if (opts.namePrefixes !== undefined) {\n const parsed = opts.namePrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`name-prefixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNamePrefixes !== undefined) {\n const parsed = opts.notNamePrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-name-prefixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.nameSuffix !== undefined)\n annotations.push(`name-suffix=${JSON.stringify(opts.nameSuffix)}`);\n if (opts.notNameSuffix !== undefined)\n annotations.push(`not-name-suffix=${JSON.stringify(opts.notNameSuffix)}`);\n if (opts.nameSuffixes !== undefined) {\n const parsed = opts.nameSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`name-suffixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNameSuffixes !== undefined) {\n const parsed = opts.notNameSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-name-suffixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.nameExact !== undefined)\n annotations.push(`name-exact=${JSON.stringify(opts.nameExact)}`);\n if (opts.names !== undefined) {\n const parsed = opts.names\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`names=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNames !== undefined) {\n const parsed = opts.notNames\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-names=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notNameExact !== undefined)\n annotations.push(`not-name-exact=${JSON.stringify(opts.notNameExact)}`);\n if (opts.schema !== undefined) annotations.push(`schema=${JSON.stringify(opts.schema)}`);\n if (opts.notSchema !== undefined)\n annotations.push(`not-schema=${JSON.stringify(opts.notSchema)}`);\n if (opts.schemaContainsAny !== undefined) {\n const parsed = opts.schemaContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`schema-contains-any=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notSchemaContainsAny !== undefined) {\n const parsed = opts.notSchemaContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `not-schema-contains-any=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.schemaContainsAll !== undefined) {\n const parsed = opts.schemaContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`schema-contains-all=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notSchemaContainsAll !== undefined) {\n const parsed = opts.notSchemaContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `not-schema-contains-all=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.schemaRegex !== undefined)\n annotations.push(`schema-regex=${JSON.stringify(opts.schemaRegex)}`);\n if (opts.notSchemaRegex !== undefined)\n annotations.push(`not-schema-regex=${JSON.stringify(opts.notSchemaRegex)}`);\n if (opts.schemaPrefix !== undefined)\n annotations.push(`schema-prefix=${JSON.stringify(opts.schemaPrefix)}`);\n if (opts.notSchemaPrefix !== undefined)\n annotations.push(`not-schema-prefix=${JSON.stringify(opts.notSchemaPrefix)}`);\n if (opts.schemaPrefixes !== undefined) {\n const parsed = opts.schemaPrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`schema-prefixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notSchemaPrefixes !== undefined) {\n const parsed = opts.notSchemaPrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-schema-prefixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.schemaSuffix !== undefined)\n annotations.push(`schema-suffix=${JSON.stringify(opts.schemaSuffix)}`);\n if (opts.notSchemaSuffix !== undefined)\n annotations.push(`not-schema-suffix=${JSON.stringify(opts.notSchemaSuffix)}`);\n if (opts.schemaSuffixes !== undefined) {\n const parsed = opts.schemaSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`schema-suffixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notSchemaSuffixes !== undefined) {\n const parsed = opts.notSchemaSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-schema-suffixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.schemaExact !== undefined)\n annotations.push(`schema-exact=${JSON.stringify(opts.schemaExact)}`);\n if (opts.schemas !== undefined) {\n const parsed = opts.schemas\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`schemas=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notSchemas !== undefined) {\n const parsed = opts.notSchemas\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-schemas=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notSchemaExact !== undefined)\n annotations.push(`not-schema-exact=${JSON.stringify(opts.notSchemaExact)}`);\n if (opts.database !== undefined)\n annotations.push(`database=${JSON.stringify(opts.database)}`);\n if (opts.notDatabase !== undefined)\n annotations.push(`not-database=${JSON.stringify(opts.notDatabase)}`);\n if (opts.databaseContainsAny !== undefined) {\n const parsed = opts.databaseContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `database-contains-any=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.notDatabaseContainsAny !== undefined) {\n const parsed = opts.notDatabaseContainsAny\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `not-database-contains-any=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.databaseContainsAll !== undefined) {\n const parsed = opts.databaseContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `database-contains-all=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.notDatabaseContainsAll !== undefined) {\n const parsed = opts.notDatabaseContainsAll\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `not-database-contains-all=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.databaseRegex !== undefined)\n annotations.push(`database-regex=${JSON.stringify(opts.databaseRegex)}`);\n if (opts.notDatabaseRegex !== undefined)\n annotations.push(`not-database-regex=${JSON.stringify(opts.notDatabaseRegex)}`);\n if (opts.databasePrefix !== undefined)\n annotations.push(`database-prefix=${JSON.stringify(opts.databasePrefix)}`);\n if (opts.notDatabasePrefix !== undefined)\n annotations.push(`not-database-prefix=${JSON.stringify(opts.notDatabasePrefix)}`);\n if (opts.databasePrefixes !== undefined) {\n const parsed = opts.databasePrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`database-prefixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notDatabasePrefixes !== undefined) {\n const parsed = opts.notDatabasePrefixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `not-database-prefixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.databaseSuffix !== undefined)\n annotations.push(`database-suffix=${JSON.stringify(opts.databaseSuffix)}`);\n if (opts.notDatabaseSuffix !== undefined)\n annotations.push(`not-database-suffix=${JSON.stringify(opts.notDatabaseSuffix)}`);\n if (opts.databaseSuffixes !== undefined) {\n const parsed = opts.databaseSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`database-suffixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notDatabaseSuffixes !== undefined) {\n const parsed = opts.notDatabaseSuffixes\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(\n `not-database-suffixes=${parsed.map((s) => JSON.stringify(s)).join(',')}`,\n );\n }\n if (opts.databaseExact !== undefined)\n annotations.push(`database-exact=${JSON.stringify(opts.databaseExact)}`);\n if (opts.databases !== undefined) {\n const parsed = opts.databases\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`databases=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notDatabases !== undefined) {\n const parsed = opts.notDatabases\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n annotations.push(`not-databases=${parsed.map((s) => JSON.stringify(s)).join(',')}`);\n }\n if (opts.notDatabaseExact !== undefined)\n annotations.push(`not-database-exact=${JSON.stringify(opts.notDatabaseExact)}`);\n if (opts.nameMinLength !== undefined)\n annotations.push(`name-min-length=${opts.nameMinLength}`);\n if (opts.nameMaxLength !== undefined)\n annotations.push(`name-max-length=${opts.nameMaxLength}`);\n if (opts.schemaMinLength !== undefined)\n annotations.push(`schema-min-length=${opts.schemaMinLength}`);\n if (opts.schemaMaxLength !== undefined)\n annotations.push(`schema-max-length=${opts.schemaMaxLength}`);\n if (opts.databaseMinLength !== undefined)\n annotations.push(`database-min-length=${opts.databaseMinLength}`);\n if (opts.databaseMaxLength !== undefined)\n annotations.push(`database-max-length=${opts.databaseMaxLength}`);\n if (opts.noteMinLength !== undefined)\n annotations.push(`note-min-length=${opts.noteMinLength}`);\n if (opts.noteMaxLength !== undefined)\n annotations.push(`note-max-length=${opts.noteMaxLength}`);\n if (opts.idMinLength !== undefined) annotations.push(`id-min-length=${opts.idMinLength}`);\n if (opts.idMaxLength !== undefined) annotations.push(`id-max-length=${opts.idMaxLength}`);\n if (opts.year !== undefined) annotations.push(`year=${opts.year}`);\n if (opts.years !== undefined) annotations.push(`years=${opts.years}`);\n if (opts.notYear !== undefined) annotations.push(`not-year=${opts.notYear}`);\n if (opts.notYears !== undefined) annotations.push(`not-years=${opts.notYears}`);\n if (opts.month !== undefined) annotations.push(`month=${opts.month}`);\n if (opts.months !== undefined) annotations.push(`months=${opts.months}`);\n if (opts.notMonth !== undefined) annotations.push(`not-month=${opts.notMonth}`);\n if (opts.notMonths !== undefined) annotations.push(`not-months=${opts.notMonths}`);\n if (opts.dayOfWeek !== undefined) annotations.push(`day-of-week=${opts.dayOfWeek}`);\n if (opts.daysOfWeek !== undefined) annotations.push(`days-of-week=${opts.daysOfWeek}`);\n if (opts.notDayOfWeek !== undefined)\n annotations.push(`not-day-of-week=${opts.notDayOfWeek}`);\n if (opts.notDaysOfWeek !== undefined)\n annotations.push(`not-days-of-week=${opts.notDaysOfWeek}`);\n if (opts.hour !== undefined) annotations.push(`hour=${opts.hour}`);\n if (opts.hours !== undefined) annotations.push(`hours=${opts.hours}`);\n if (opts.notHour !== undefined) annotations.push(`not-hour=${opts.notHour}`);\n if (opts.notHours !== undefined) annotations.push(`not-hours=${opts.notHours}`);\n if (opts.minute !== undefined) annotations.push(`minute=${opts.minute}`);\n if (opts.minutes !== undefined) annotations.push(`minutes=${opts.minutes}`);\n if (opts.notMinute !== undefined) annotations.push(`not-minute=${opts.notMinute}`);\n if (opts.notMinutes !== undefined) annotations.push(`not-minutes=${opts.notMinutes}`);\n if (opts.second !== undefined) annotations.push(`second=${opts.second}`);\n if (opts.seconds !== undefined) annotations.push(`seconds=${opts.seconds}`);\n if (opts.notSecond !== undefined) annotations.push(`not-second=${opts.notSecond}`);\n if (opts.notSeconds !== undefined) annotations.push(`not-seconds=${opts.notSeconds}`);\n if (opts.dayOfMonth !== undefined) annotations.push(`day-of-month=${opts.dayOfMonth}`);\n if (opts.daysOfMonth !== undefined) annotations.push(`days-of-month=${opts.daysOfMonth}`);\n if (opts.notDayOfMonth !== undefined)\n annotations.push(`not-day-of-month=${opts.notDayOfMonth}`);\n if (opts.notDaysOfMonth !== undefined)\n annotations.push(`not-days-of-month=${opts.notDaysOfMonth}`);\n if (opts.quarter !== undefined) annotations.push(`quarter=${opts.quarter}`);\n if (opts.quarters !== undefined) annotations.push(`quarters=${opts.quarters}`);\n if (opts.notQuarter !== undefined) annotations.push(`not-quarter=${opts.notQuarter}`);\n if (opts.notQuarters !== undefined) annotations.push(`not-quarters=${opts.notQuarters}`);\n if (opts.dayOfYear !== undefined) annotations.push(`day-of-year=${opts.dayOfYear}`);\n if (opts.daysOfYear !== undefined) annotations.push(`days-of-year=${opts.daysOfYear}`);\n if (opts.notDayOfYear !== undefined)\n annotations.push(`not-day-of-year=${opts.notDayOfYear}`);\n if (opts.notDaysOfYear !== undefined)\n annotations.push(`not-days-of-year=${opts.notDaysOfYear}`);\n if (opts.weekOfYear !== undefined) annotations.push(`week-of-year=${opts.weekOfYear}`);\n if (opts.weeksOfYear !== undefined) annotations.push(`weeks-of-year=${opts.weeksOfYear}`);\n if (opts.notWeekOfYear !== undefined)\n annotations.push(`not-week-of-year=${opts.notWeekOfYear}`);\n if (opts.notWeeksOfYear !== undefined)\n annotations.push(`not-weeks-of-year=${opts.notWeeksOfYear}`);\n if (opts.weekOfMonth !== undefined) annotations.push(`week-of-month=${opts.weekOfMonth}`);\n if (opts.weeksOfMonth !== undefined)\n annotations.push(`weeks-of-month=${opts.weeksOfMonth}`);\n if (opts.notWeekOfMonth !== undefined)\n annotations.push(`not-week-of-month=${opts.notWeekOfMonth}`);\n if (opts.notWeeksOfMonth !== undefined)\n annotations.push(`not-weeks-of-month=${opts.notWeeksOfMonth}`);\n if (opts.millisecond !== undefined) annotations.push(`millisecond=${opts.millisecond}`);\n if (opts.milliseconds !== undefined) annotations.push(`milliseconds=${opts.milliseconds}`);\n if (opts.notMillisecond !== undefined)\n annotations.push(`not-millisecond=${opts.notMillisecond}`);\n if (opts.notMilliseconds !== undefined)\n annotations.push(`not-milliseconds=${opts.notMilliseconds}`);\n if (opts.minuteOfDay !== undefined) annotations.push(`minute-of-day=${opts.minuteOfDay}`);\n if (opts.minutesOfDay !== undefined)\n annotations.push(`minutes-of-day=${opts.minutesOfDay}`);\n if (opts.hasDatabase) annotations.push(`has-database=true`);\n if (opts.missingDatabase) annotations.push(`missing-database=true`);\n if (opts.hasSchema) annotations.push(`has-schema=true`);\n if (opts.missingSchema) annotations.push(`missing-schema=true`);\n if (opts.hasNote) annotations.push(`has-note=true`);\n if (opts.missingNote) annotations.push(`missing-note=true`);\n if (opts.last !== undefined) annotations.push(`last=${opts.last}`);\n if (opts.first !== undefined) annotations.push(`first=${opts.first}`);\n if (opts.reverse) annotations.push(`reverse=true`);\n if (!opts.bare) {\n console.log(\n `Refactor log: ${logPath} (${operations.length} op(s)${\n annotations.length > 0 ? `, ${annotations.join(', ')}` : ''\n })`,\n );\n }\n for (const op of operations) {\n console.log(` [${op.timestamp}] ${op.type} ${describe(op)} id=${op.id}`);\n if (op.note) console.log(` note: ${op.note}`);\n }\n },\n );\n\n cmd\n .command('rename-object')\n .description(\n 'Rewrite every reference to <from> with <to> across one or more SQL files. ' +\n 'Uses the shipped planRenameObject + applyRenamePlan substrate; default ' +\n 'prints a per-file occurrence summary to stdout, --apply writes the files.',\n )\n .argument('<files...>', 'SQL files to scan + rewrite')\n .requiredOption('--from <fqn>', 'Old fully-qualified name (e.g. cat.sch.old_table)')\n .requiredOption('--to <fqn>', 'New fully-qualified name (e.g. cat.sch.new_table)')\n .option(\n '--rewrite-bare',\n 'Also rewrite bare unqualified references to the name (dangerous — opt-in)',\n false,\n )\n .option('--apply', 'Write the rewritten SQL back to each file', false)\n .option(\n '--preview-diff',\n 'Emit a Markdown unified-diff preview instead of an occurrence summary (REF.5)',\n false,\n )\n .option('--json', 'Emit machine-readable JSON describing the plan', false)\n .option(\n '--log <path>',\n `Also append a RENAME_OBJECT op to <path> (default: ${DEFAULT_LOG}) so compare emits ALTER … RENAME`,\n )\n .option(\n '--object-type <type>',\n 'Databricks object type for the recorded op (TABLE, VIEW, …). Required with --log',\n )\n .action(\n async (\n files: string[],\n opts: {\n from: string;\n to: string;\n rewriteBare?: boolean;\n apply?: boolean;\n previewDiff?: boolean;\n json?: boolean;\n log?: string;\n objectType?: string;\n },\n ) => {\n if (!files || files.length === 0) {\n console.error('rename-object: at least one <file> argument is required');\n process.exitCode = 1;\n return;\n }\n if (opts.log !== undefined && !opts.objectType) {\n console.error('rename-object: --log requires --object-type <type>');\n process.exitCode = 1;\n return;\n }\n const sources: refactoring.RenameSource[] = [];\n for (const f of files) {\n const abs = path.resolve(f);\n const content = await fs.readFile(abs, 'utf8');\n sources.push({ path: abs, content });\n }\n let plan: refactoring.RenameObjectPlan;\n try {\n plan = planRenameObject(sources, opts.from, opts.to, {\n rewriteBareName: !!opts.rewriteBare,\n });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n if (opts.json) {\n process.stdout.write(\n JSON.stringify({ ok: false, errorCode: 'PLAN_FAILED', reason: message }) + '\\n',\n );\n } else {\n console.error(`rename-object: ${message}`);\n }\n process.exitCode = 2;\n return;\n }\n\n const blockingConflicts = plan.conflicts.filter(\n (c) => c.kind === 'TARGET_NAME_ALREADY_DEFINED' || c.kind === 'AMBIGUOUS_BARE_NAME',\n );\n const planJsonPayload = {\n ok: blockingConflicts.length === 0,\n from: plan.from.raw,\n to: plan.to.raw,\n totalOccurrences: plan.totalOccurrences,\n fileCount: plan.changes.length,\n changes: plan.changes.map((c) => ({\n path: c.path,\n occurrences: c.occurrences.length,\n })),\n conflicts: plan.conflicts.map((c) => ({\n path: c.path,\n kind: c.kind,\n message: c.message,\n })),\n applied: false as boolean,\n };\n\n if (plan.totalOccurrences === 0) {\n if (opts.json) {\n process.stdout.write(JSON.stringify(planJsonPayload) + '\\n');\n } else {\n console.log(\n `rename-object: no occurrences of '${plan.from.raw}' found in ${sources.length} file(s).`,\n );\n }\n return;\n }\n\n if (blockingConflicts.length > 0) {\n if (opts.json) {\n process.stdout.write(JSON.stringify(planJsonPayload) + '\\n');\n } else {\n console.error(\n `rename-object refused: ${blockingConflicts.length} blocking conflict(s).`,\n );\n for (const c of blockingConflicts) {\n console.error(` ${c.kind} (${c.path || '<global>'}): ${c.message}`);\n }\n }\n process.exitCode = 2;\n return;\n }\n\n if (opts.apply) {\n const rewritten = applyRenamePlan(sources, plan);\n for (const [filePath, content] of rewritten) {\n await fs.writeFile(filePath, content, 'utf8');\n }\n planJsonPayload.applied = true;\n }\n\n let recordedLogPath: string | undefined;\n if (opts.log !== undefined && opts.objectType) {\n const logPath = path.resolve(opts.log === '' ? DEFAULT_LOG : opts.log);\n const log = await ensureLogExists(logPath);\n // DDT's ParsedFqn names the top container `catalog`; the\n // RefactorOperation shape (cross-platform parity) calls the\n // same field `database`, so we map catalog → database here.\n const topContainer = plan.from.catalog;\n const op = {\n type: 'RENAME_OBJECT' as const,\n object: {\n ...(topContainer ? { database: topContainer } : {}),\n ...(plan.from.schema ? { schema: plan.from.schema } : {}),\n name: plan.from.name,\n objectType: opts.objectType as never,\n },\n details: { oldName: plan.from.name, newName: plan.to.name },\n };\n const updated = appendOperation(log, op);\n await fs.mkdir(path.dirname(logPath), { recursive: true });\n await saveRefactorLog(logPath, updated);\n recordedLogPath = logPath;\n }\n\n if (opts.json) {\n if (recordedLogPath !== undefined) {\n (planJsonPayload as Record<string, unknown>)['recordedLogPath'] = recordedLogPath;\n }\n process.stdout.write(JSON.stringify(planJsonPayload) + '\\n');\n return;\n }\n if (opts.previewDiff) {\n const diff = buildRefactorDiff(sources, plan, `Rename ${plan.from.raw} → ${plan.to.raw}`);\n const md = renderRefactorDiffMarkdown(diff);\n process.stdout.write(md);\n if (!md.endsWith('\\n')) process.stdout.write('\\n');\n return;\n }\n const verb = opts.apply ? 'Rewrote' : 'Would rewrite';\n console.log(\n `${verb} ${plan.totalOccurrences} occurrence(s) of '${plan.from.raw}' → '${plan.to.raw}' across ${plan.changes.length} file(s):`,\n );\n for (const change of plan.changes) {\n console.log(` ${change.path} — ${change.occurrences.length} occurrence(s)`);\n }\n if (recordedLogPath !== undefined) {\n console.log(`Recorded RENAME_OBJECT op in ${recordedLogPath}.`);\n }\n if (!opts.apply) {\n console.log('Re-run with --apply to write the changes.');\n }\n },\n );\n\n cmd\n .command('move-object')\n .description(\n 'Move an object across catalogs / schemas, rewriting every reference ' +\n 'across one or more SQL files. Pure text transform on top of planMoveObject + ' +\n 'planRenameObject + applyRenamePlan. Default prints summary, --apply writes files.',\n )\n .argument('<files...>', 'SQL files to scan + rewrite')\n .requiredOption('--from <fqn>', 'Source 3-part FQN (catalog.schema.name)')\n .requiredOption(\n '--to <container>',\n 'Destination container — 1-part (newcat) or 2-part (newcat.newschema)',\n )\n .option(\n '--rewrite-bare',\n 'Also rewrite bare unqualified references (dangerous — opt-in)',\n false,\n )\n .option('--apply', 'Write the rewritten SQL back to each file', false)\n .option(\n '--preview-diff',\n 'Emit a Markdown unified-diff preview instead of an occurrence summary (REF.5)',\n false,\n )\n .option('--json', 'Emit machine-readable JSON describing the plan', false)\n .option(\n '--log <path>',\n `Also append a MOVE_OBJECT op to <path> (default: ${DEFAULT_LOG}) so compare emits ALTER … RENAME`,\n )\n .option(\n '--object-type <type>',\n 'Databricks object type for the recorded op (TABLE, VIEW, …). Required with --log',\n )\n .action(\n async (\n files: string[],\n opts: {\n from: string;\n to: string;\n rewriteBare?: boolean;\n apply?: boolean;\n previewDiff?: boolean;\n json?: boolean;\n log?: string;\n objectType?: string;\n },\n ) => {\n if (!files || files.length === 0) {\n console.error('move-object: at least one <file> argument is required');\n process.exitCode = 1;\n return;\n }\n if (opts.log !== undefined && !opts.objectType) {\n console.error('move-object: --log requires --object-type <type>');\n process.exitCode = 1;\n return;\n }\n const sources: refactoring.RenameSource[] = [];\n for (const f of files) {\n const abs = path.resolve(f);\n const content = await fs.readFile(abs, 'utf8');\n sources.push({ path: abs, content });\n }\n let result: refactoring.MoveObjectPlanResult;\n try {\n result = planMoveObject({\n sources,\n fromFqn: opts.from,\n toContainer: opts.to,\n options: { rewriteBareName: !!opts.rewriteBare },\n });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n if (opts.json) {\n process.stdout.write(\n JSON.stringify({ ok: false, errorCode: 'PLAN_FAILED', reason: message }) + '\\n',\n );\n } else {\n console.error(`move-object: ${message}`);\n }\n process.exitCode = 2;\n return;\n }\n\n if (!result.ok) {\n if (opts.json) {\n process.stdout.write(\n JSON.stringify({\n ok: false,\n errorCode: result.error.errorCode,\n message: result.error.message,\n }) + '\\n',\n );\n } else {\n console.error(\n `move-object refused: ${result.error.errorCode} — ${result.error.message}`,\n );\n }\n process.exitCode = 2;\n return;\n }\n\n const { plan } = result;\n const blockingConflicts = plan.conflicts.filter(\n (c) => c.kind === 'TARGET_NAME_ALREADY_DEFINED' || c.kind === 'AMBIGUOUS_BARE_NAME',\n );\n const planJsonPayload = {\n ok: blockingConflicts.length === 0,\n kind: plan.kind,\n from: plan.from.raw,\n toFqn: plan.toFqn,\n totalOccurrences: plan.totalOccurrences,\n fileCount: plan.changes.length,\n changes: plan.changes.map((c) => ({\n path: c.path,\n occurrences: c.occurrences.length,\n })),\n conflicts: plan.conflicts.map((c) => ({\n path: c.path,\n kind: c.kind,\n message: c.message,\n })),\n applied: false as boolean,\n };\n\n if (plan.totalOccurrences === 0) {\n if (opts.json) {\n process.stdout.write(JSON.stringify(planJsonPayload) + '\\n');\n } else {\n console.log(\n `move-object: no occurrences of '${plan.from.raw}' found in ${sources.length} file(s).`,\n );\n }\n return;\n }\n\n if (blockingConflicts.length > 0) {\n if (opts.json) {\n process.stdout.write(JSON.stringify(planJsonPayload) + '\\n');\n } else {\n console.error(`move-object refused: ${blockingConflicts.length} blocking conflict(s).`);\n for (const c of blockingConflicts) {\n console.error(` ${c.kind} (${c.path || '<global>'}): ${c.message}`);\n }\n }\n process.exitCode = 2;\n return;\n }\n\n if (opts.apply) {\n const rewritten = applyRenamePlan(sources, plan);\n for (const [filePath, content] of rewritten) {\n await fs.writeFile(filePath, content, 'utf8');\n }\n planJsonPayload.applied = true;\n }\n\n let recordedLogPath: string | undefined;\n if (opts.log !== undefined && opts.objectType) {\n const logPath = path.resolve(opts.log === '' ? DEFAULT_LOG : opts.log);\n const log = await ensureLogExists(logPath);\n // DDT's ParsedFqn names the top container `catalog`; the\n // RefactorOperation shape (cross-platform parity) calls the\n // same field `database`, so we map catalog → database here.\n const fromTop = plan.from.catalog;\n const toParsed = splitFqn(plan.toFqn);\n const op = {\n type: 'MOVE_OBJECT' as const,\n object: {\n ...(fromTop ? { database: fromTop } : {}),\n ...(plan.from.schema ? { schema: plan.from.schema } : {}),\n name: plan.from.name,\n objectType: opts.objectType as never,\n },\n details: {\n oldFqn: {\n ...(fromTop ? { database: fromTop } : {}),\n ...(plan.from.schema ? { schema: plan.from.schema } : {}),\n name: plan.from.name,\n },\n newFqn: toParsed,\n },\n };\n const updated = appendOperation(log, op);\n await fs.mkdir(path.dirname(logPath), { recursive: true });\n await saveRefactorLog(logPath, updated);\n recordedLogPath = logPath;\n }\n\n if (opts.json) {\n if (recordedLogPath !== undefined) {\n (planJsonPayload as Record<string, unknown>)['recordedLogPath'] = recordedLogPath;\n }\n process.stdout.write(JSON.stringify(planJsonPayload) + '\\n');\n return;\n }\n if (opts.previewDiff) {\n const diff = buildRefactorDiff(\n sources,\n plan,\n `Move ${plan.from.raw} → ${plan.toFqn} (${plan.kind})`,\n );\n const md = renderRefactorDiffMarkdown(diff);\n process.stdout.write(md);\n if (!md.endsWith('\\n')) process.stdout.write('\\n');\n return;\n }\n const verb = opts.apply ? 'Rewrote' : 'Would rewrite';\n console.log(\n `${verb} ${plan.totalOccurrences} occurrence(s) of '${plan.from.raw}' → '${plan.toFqn}' (${plan.kind}) across ${plan.changes.length} file(s):`,\n );\n for (const change of plan.changes) {\n console.log(` ${change.path} — ${change.occurrences.length} occurrence(s)`);\n }\n if (recordedLogPath !== undefined) {\n console.log(`Recorded MOVE_OBJECT op in ${recordedLogPath}.`);\n }\n if (!opts.apply) {\n console.log('Re-run with --apply to write the changes.');\n }\n },\n );\n\n cmd\n .command('extract-cte')\n .description(\n 'Extract a SQL subquery (selected by byte range) into a CTE. ' +\n 'Pure text transform — prints rewritten SQL to stdout unless --apply.',\n )\n .argument('<file>', 'SQL file to rewrite')\n .requiredOption('--select-range <range>', 'Byte range \"<start>-<end>\" (0-based, end exclusive)')\n .option('--cte-name <name>', 'Identifier for the new CTE (default: cte_extracted)')\n .option('--apply', 'Write the rewritten SQL back to <file> instead of stdout', false)\n .option('--json', 'Emit machine-readable JSON describing the rewrite', false)\n .action(\n async (\n file: string,\n opts: { selectRange: string; cteName?: string; apply?: boolean; json?: boolean },\n ) => {\n const range = parseSelectRange(opts.selectRange);\n if (range === null) {\n if (opts.json) {\n process.stdout.write(\n JSON.stringify({\n ok: false,\n errorCode: 'INVALID_SELECT_RANGE',\n reason: `--select-range must look like \"<start>-<end>\" with integer offsets; got ${JSON.stringify(opts.selectRange)}`,\n }) + '\\n',\n );\n } else {\n console.error(\n `Invalid --select-range; expected \"<start>-<end>\" (got ${JSON.stringify(opts.selectRange)}).`,\n );\n }\n process.exitCode = 1;\n return;\n }\n const filePath = path.resolve(file);\n const sql = await fs.readFile(filePath, 'utf8');\n const result: refactoring.ExtractCteResult = extractCte({\n sql,\n startOffset: range.start,\n endOffset: range.end,\n ...(opts.cteName ? { cteName: opts.cteName } : {}),\n });\n\n if (!result.ok || !result.occurrence) {\n const payload = {\n ok: false,\n errorCode: result.errorCode ?? 'UNKNOWN',\n reason: result.reason ?? 'extractCte refused without a reason',\n };\n if (opts.json) {\n process.stdout.write(JSON.stringify(payload) + '\\n');\n } else {\n console.error(`extract-cte refused: ${payload.errorCode} — ${payload.reason}`);\n }\n process.exitCode = 2;\n return;\n }\n\n const { cteName, subqueryText, rewrittenSql, hasExistingWith } = result.occurrence;\n if (opts.apply) {\n await fs.writeFile(filePath, rewrittenSql, 'utf8');\n }\n if (opts.json) {\n process.stdout.write(\n JSON.stringify({\n ok: true,\n cteName,\n subqueryText,\n rewrittenSql,\n hasExistingWith,\n applied: !!opts.apply,\n filePath,\n }) + '\\n',\n );\n return;\n }\n if (opts.apply) {\n console.log(\n `Wrote ${filePath} (CTE ${cteName}${hasExistingWith ? ', appended to existing WITH' : ', new WITH clause'}).`,\n );\n } else {\n process.stdout.write(rewrittenSql);\n if (!rewrittenSql.endsWith('\\n')) process.stdout.write('\\n');\n }\n },\n );\n\n cmd\n .command('remove')\n .description('Remove a refactor op from the log by its id.')\n .requiredOption('--id <uuid>', 'Operation id (from `refactor list`)')\n .option('--log <path>', `Path to refactor.json (default: ${DEFAULT_LOG})`)\n .action(async (opts: { id: string; log?: string }) => {\n const logPath = path.resolve(opts.log ?? DEFAULT_LOG);\n const log = await ensureLogExists(logPath);\n const before = log.operations.length;\n const remaining = log.operations.filter((o) => o.id !== opts.id);\n if (remaining.length === before) {\n console.error(`No operation with id ${opts.id} in ${logPath}`);\n process.exitCode = 1;\n return;\n }\n await saveRefactorLog(logPath, { ...log, operations: remaining });\n console.log(`Removed ${before - remaining.length} op(s) from ${logPath}`);\n });\n\n return cmd;\n}\n\nconst VALID_OP_KINDS = [\n 'RENAME_OBJECT',\n 'RENAME_COLUMN',\n 'MOVE_OBJECT',\n 'CHANGE_COLUMN_TYPE',\n 'DROP_COLUMN',\n 'ADD_CONSTRAINT',\n] as const;\n\nfunction parseSelectRange(raw: string): { start: number; end: number } | null {\n if (typeof raw !== 'string') return null;\n const match = /^(-?\\d+)\\s*-\\s*(-?\\d+)$/.exec(raw.trim());\n if (!match) return null;\n const start = Number.parseInt(match[1]!, 10);\n const end = Number.parseInt(match[2]!, 10);\n if (!Number.isInteger(start) || !Number.isInteger(end)) return null;\n return { start, end };\n}\n\nfunction describe(op: refactoring.RefactorOperation): string {\n switch (op.type) {\n case 'RENAME_OBJECT':\n return `${op.object.objectType} ${fqnString(op.object)} → ${op.details.newName}`;\n case 'RENAME_COLUMN':\n return `${fqnString(op.object)}.${op.details.oldName} → ${op.details.newName}`;\n case 'MOVE_OBJECT':\n return `${fqnString(op.object)} → ${[\n op.details.newFqn.database,\n op.details.newFqn.schema,\n op.details.newFqn.name,\n ]\n .filter(Boolean)\n .join('.')}`;\n case 'CHANGE_COLUMN_TYPE':\n return `${fqnString(op.object)}.${op.details.column} ${op.details.oldType} → ${op.details.newType}`;\n case 'DROP_COLUMN':\n return `${fqnString(op.object)}.${op.details.column} (drop)`;\n case 'ADD_CONSTRAINT': {\n const kind = op.details.constraintKind.toLowerCase().replace(/_/g, ' ');\n const cols = op.details.columns.join(', ');\n const src = op.details.fromSuggester ? ' [suggested]' : '';\n return `${fqnString(op.object)}: ADD ${kind} (${cols})${src}`;\n }\n }\n}\n\nfunction fqnString(o: { database?: string; schema?: string; name: string }): string {\n return [o.database, o.schema, o.name].filter(Boolean).join('.');\n}\n"],"mappings":"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IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,MAAM,SAAS,GAAG,EAAE;AAAA,EACvB,EACC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","names":[]}