@memberjunction/cli 6.1.4 → 6.2.0-edge.1

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 (235) hide show
  1. package/README.md +18 -7
  2. package/dist/baseline/cli-helpers.d.ts +4 -0
  3. package/dist/baseline/cli-helpers.d.ts.map +1 -1
  4. package/dist/baseline/cli-helpers.js +18 -10
  5. package/dist/baseline/cli-helpers.js.map +1 -1
  6. package/dist/baseline/comparator.d.ts +5 -3
  7. package/dist/baseline/comparator.d.ts.map +1 -1
  8. package/dist/baseline/comparator.js +142 -138
  9. package/dist/baseline/comparator.js.map +1 -1
  10. package/dist/baseline/connection.d.ts +8 -6
  11. package/dist/baseline/connection.d.ts.map +1 -1
  12. package/dist/baseline/connection.js +16 -12
  13. package/dist/baseline/connection.js.map +1 -1
  14. package/dist/baseline/data-dumper.d.ts +7 -3
  15. package/dist/baseline/data-dumper.d.ts.map +1 -1
  16. package/dist/baseline/data-dumper.js +33 -25
  17. package/dist/baseline/data-dumper.js.map +1 -1
  18. package/dist/baseline/emitter.d.ts +5 -3
  19. package/dist/baseline/emitter.d.ts.map +1 -1
  20. package/dist/baseline/emitter.js +114 -110
  21. package/dist/baseline/emitter.js.map +1 -1
  22. package/dist/baseline/index.d.ts +7 -7
  23. package/dist/baseline/index.d.ts.map +1 -1
  24. package/dist/baseline/index.js +7 -7
  25. package/dist/baseline/index.js.map +1 -1
  26. package/dist/baseline/introspector-mssql.d.ts +2 -0
  27. package/dist/baseline/introspector-mssql.d.ts.map +1 -1
  28. package/dist/baseline/introspector-mssql.js +68 -64
  29. package/dist/baseline/introspector-mssql.js.map +1 -1
  30. package/dist/baseline/introspector-postgres.d.ts +2 -0
  31. package/dist/baseline/introspector-postgres.d.ts.map +1 -1
  32. package/dist/baseline/introspector-postgres.js +34 -30
  33. package/dist/baseline/introspector-postgres.js.map +1 -1
  34. package/dist/baseline/report.d.ts +4 -0
  35. package/dist/baseline/report.d.ts.map +1 -1
  36. package/dist/baseline/report.js +25 -17
  37. package/dist/baseline/report.js.map +1 -1
  38. package/dist/baseline/types.d.ts +71 -71
  39. package/dist/baseline/util.d.ts +54 -6
  40. package/dist/baseline/util.d.ts.map +1 -1
  41. package/dist/baseline/util.js +112 -36
  42. package/dist/baseline/util.js.map +1 -1
  43. package/dist/commands/agent/init.d.ts +23 -0
  44. package/dist/commands/agent/init.d.ts.map +1 -0
  45. package/dist/commands/agent/init.js +222 -0
  46. package/dist/commands/agent/init.js.map +1 -0
  47. package/dist/commands/ai/actions/list.js +7 -7
  48. package/dist/commands/ai/actions/run.js +7 -7
  49. package/dist/commands/ai/agents/list.js +7 -7
  50. package/dist/commands/ai/agents/run.js +9 -9
  51. package/dist/commands/ai/audit/agent-run.js +7 -7
  52. package/dist/commands/ai/prompts/run.js +7 -7
  53. package/dist/commands/app/check-updates.js +5 -5
  54. package/dist/commands/app/disable.js +2 -2
  55. package/dist/commands/app/enable.js +2 -2
  56. package/dist/commands/app/info.js +2 -2
  57. package/dist/commands/app/install.js +2 -2
  58. package/dist/commands/app/list.js +2 -2
  59. package/dist/commands/app/remove.js +4 -4
  60. package/dist/commands/app/upgrade.js +2 -2
  61. package/dist/commands/artifacts/reclassify.js +2 -2
  62. package/dist/commands/baseline/build.js +31 -31
  63. package/dist/commands/baseline/build.js.map +1 -1
  64. package/dist/commands/baseline/compare.js +36 -36
  65. package/dist/commands/baseline/roundtrip.js +56 -54
  66. package/dist/commands/baseline/roundtrip.js.map +1 -1
  67. package/dist/commands/bundle/index.js +4 -4
  68. package/dist/commands/clean/index.js +3 -3
  69. package/dist/commands/codegen/manifest.d.ts +2 -0
  70. package/dist/commands/codegen/manifest.d.ts.map +1 -1
  71. package/dist/commands/codegen/manifest.js +8 -4
  72. package/dist/commands/codegen/manifest.js.map +1 -1
  73. package/dist/commands/dev/workspace/index.d.ts +2 -0
  74. package/dist/commands/dev/workspace/index.d.ts.map +1 -1
  75. package/dist/commands/dev/workspace/index.js +8 -4
  76. package/dist/commands/dev/workspace/index.js.map +1 -1
  77. package/dist/commands/doctor/index.d.ts +6 -4
  78. package/dist/commands/doctor/index.d.ts.map +1 -1
  79. package/dist/commands/doctor/index.js +43 -18
  80. package/dist/commands/doctor/index.js.map +1 -1
  81. package/dist/commands/install/claude.d.ts +2 -0
  82. package/dist/commands/install/claude.d.ts.map +1 -1
  83. package/dist/commands/install/claude.js +11 -7
  84. package/dist/commands/install/claude.js.map +1 -1
  85. package/dist/commands/install/index.js +3 -3
  86. package/dist/commands/migrate/convert.d.ts +21 -0
  87. package/dist/commands/migrate/convert.d.ts.map +1 -1
  88. package/dist/commands/migrate/convert.js +22 -6
  89. package/dist/commands/migrate/convert.js.map +1 -1
  90. package/dist/commands/migrate/create.js +2 -2
  91. package/dist/commands/migrate/index.js +16 -16
  92. package/dist/commands/sync/file-reset.js +2 -2
  93. package/dist/commands/sync/init.js +3 -3
  94. package/dist/commands/test/compare.js +6 -6
  95. package/dist/commands/test/history.js +6 -6
  96. package/dist/commands/test/list.js +6 -6
  97. package/dist/commands/test/regression/build.js +5 -5
  98. package/dist/commands/test/regression/compare.js +3 -3
  99. package/dist/commands/test/regression/down.js +4 -4
  100. package/dist/commands/test/regression/export.js +4 -4
  101. package/dist/commands/test/regression/gen-forms.js +3 -3
  102. package/dist/commands/test/regression/remote.js +10 -10
  103. package/dist/commands/test/regression/up.js +6 -6
  104. package/dist/commands/test/run.js +6 -6
  105. package/dist/commands/test/scripts.d.ts +13 -0
  106. package/dist/commands/test/scripts.d.ts.map +1 -0
  107. package/dist/commands/test/scripts.js +50 -0
  108. package/dist/commands/test/scripts.js.map +1 -0
  109. package/dist/commands/test/suite.js +6 -6
  110. package/dist/commands/test/validate.js +6 -6
  111. package/dist/commands/translate-sql/index.js +25 -25
  112. package/dist/commands/update/claude.js +7 -7
  113. package/dist/commands/usage.js +4 -4
  114. package/dist/config.d.ts +175 -1
  115. package/dist/config.d.ts.map +1 -1
  116. package/dist/config.js +23 -9
  117. package/dist/config.js.map +1 -1
  118. package/dist/hooks/postrun.js +2 -2
  119. package/dist/hooks/prerun.js +2 -2
  120. package/dist/hooks/prerun.js.map +1 -1
  121. package/dist/init-templates/citizen-builder/.agents/skills/new-agent/SKILL.md +66 -0
  122. package/dist/init-templates/citizen-builder/.agents/skills/package-agent/SKILL.md +69 -0
  123. package/dist/init-templates/citizen-builder/.agents/skills/test-agent/SKILL.md +61 -0
  124. package/dist/init-templates/citizen-builder/.claude/skills/new-agent/SKILL.md +66 -0
  125. package/dist/init-templates/citizen-builder/.claude/skills/package-agent/SKILL.md +69 -0
  126. package/dist/init-templates/citizen-builder/.claude/skills/test-agent/SKILL.md +61 -0
  127. package/dist/init-templates/citizen-builder/.env.example +30 -0
  128. package/dist/init-templates/citizen-builder/AGENTS.md +331 -0
  129. package/dist/init-templates/citizen-builder/README.md +259 -0
  130. package/dist/init-templates/citizen-builder/docker/Dockerfile +16 -0
  131. package/dist/init-templates/citizen-builder/docker-compose.yml +59 -0
  132. package/dist/init-templates/citizen-builder/docs/ENTERPRISE_ORG_SETUP.md +73 -0
  133. package/dist/init-templates/citizen-builder/docs/PROMOTION_GUIDE.md +70 -0
  134. package/dist/init-templates/citizen-builder/metadata/.mj-sync.json +7 -0
  135. package/dist/init-templates/citizen-builder/metadata/agents/.customer-insight-agent.json +55 -0
  136. package/dist/init-templates/citizen-builder/metadata/agents/.mj-sync.json +45 -0
  137. package/dist/init-templates/citizen-builder/metadata/prompts/.customer-insight-prompt.json +15 -0
  138. package/dist/init-templates/citizen-builder/metadata/prompts/.mj-sync.json +45 -0
  139. package/dist/init-templates/citizen-builder/metadata/prompts/templates/customer-insight.template.md +18 -0
  140. package/dist/init-templates/citizen-builder/scripts/bootstrap.sh +47 -0
  141. package/dist/init-templates/citizen-builder/scripts/docker-entrypoint.sh +184 -0
  142. package/dist/init-templates/citizen-builder/scripts/generate-capabilities.sh +74 -0
  143. package/dist/init-templates/citizen-builder/scripts/query-run-history.sh +34 -0
  144. package/dist/init-templates/citizen-builder/scripts/sync-metadata.sh +14 -0
  145. package/dist/init-templates/remote-mj/README.md +4 -4
  146. package/dist/lib/claude-pack/ManagedBlockEditor.d.ts +6 -0
  147. package/dist/lib/claude-pack/ManagedBlockEditor.d.ts.map +1 -1
  148. package/dist/lib/claude-pack/ManagedBlockEditor.js +18 -6
  149. package/dist/lib/claude-pack/ManagedBlockEditor.js.map +1 -1
  150. package/dist/lib/claude-pack/PackFetcher.d.ts +8 -3
  151. package/dist/lib/claude-pack/PackFetcher.d.ts.map +1 -1
  152. package/dist/lib/claude-pack/PackFetcher.js +26 -18
  153. package/dist/lib/claude-pack/PackFetcher.js.map +1 -1
  154. package/dist/lib/claude-pack/PackInstaller.d.ts +6 -2
  155. package/dist/lib/claude-pack/PackInstaller.d.ts.map +1 -1
  156. package/dist/lib/claude-pack/PackInstaller.js +19 -13
  157. package/dist/lib/claude-pack/PackInstaller.js.map +1 -1
  158. package/dist/lib/claude-pack/PackMerger.d.ts +8 -0
  159. package/dist/lib/claude-pack/PackMerger.d.ts.map +1 -1
  160. package/dist/lib/claude-pack/PackMerger.js +63 -57
  161. package/dist/lib/claude-pack/PackMerger.js.map +1 -1
  162. package/dist/lib/claude-pack/PackOutputFormatter.d.ts +4 -0
  163. package/dist/lib/claude-pack/PackOutputFormatter.d.ts.map +1 -1
  164. package/dist/lib/claude-pack/PackOutputFormatter.js +10 -2
  165. package/dist/lib/claude-pack/PackOutputFormatter.js.map +1 -1
  166. package/dist/lib/claude-pack/PackPaths.d.ts +12 -0
  167. package/dist/lib/claude-pack/PackPaths.d.ts.map +1 -1
  168. package/dist/lib/claude-pack/PackPaths.js +31 -7
  169. package/dist/lib/claude-pack/PackPaths.js.map +1 -1
  170. package/dist/lib/claude-pack/PackTypes.d.ts +18 -14
  171. package/dist/lib/claude-pack/PackTypes.d.ts.map +1 -1
  172. package/dist/lib/claude-pack/PackTypes.js +11 -3
  173. package/dist/lib/claude-pack/PackTypes.js.map +1 -1
  174. package/dist/lib/claude-pack/SettingsMerger.d.ts +10 -0
  175. package/dist/lib/claude-pack/SettingsMerger.d.ts.map +1 -1
  176. package/dist/lib/claude-pack/SettingsMerger.js +36 -16
  177. package/dist/lib/claude-pack/SettingsMerger.js.map +1 -1
  178. package/dist/lib/cli-plugins.d.ts +2 -0
  179. package/dist/lib/cli-plugins.d.ts.map +1 -1
  180. package/dist/lib/cli-plugins.js +8 -4
  181. package/dist/lib/cli-plugins.js.map +1 -1
  182. package/dist/lib/db-preflight.d.ts +2 -0
  183. package/dist/lib/db-preflight.d.ts.map +1 -1
  184. package/dist/lib/db-preflight.js +12 -8
  185. package/dist/lib/db-preflight.js.map +1 -1
  186. package/dist/lib/db-version.d.ts +2 -0
  187. package/dist/lib/db-version.d.ts.map +1 -1
  188. package/dist/lib/db-version.js +5 -1
  189. package/dist/lib/db-version.js.map +1 -1
  190. package/dist/lib/derived-usage.d.ts +14 -8
  191. package/dist/lib/derived-usage.d.ts.map +1 -1
  192. package/dist/lib/derived-usage.js +30 -18
  193. package/dist/lib/derived-usage.js.map +1 -1
  194. package/dist/lib/domain-profiles.d.ts +4 -2
  195. package/dist/lib/domain-profiles.d.ts.map +1 -1
  196. package/dist/lib/domain-profiles.js +53 -49
  197. package/dist/lib/domain-profiles.js.map +1 -1
  198. package/dist/lib/domain-usage-command.js +4 -4
  199. package/dist/lib/dynamic-packages.d.ts +4 -2
  200. package/dist/lib/dynamic-packages.d.ts.map +1 -1
  201. package/dist/lib/dynamic-packages.js +9 -5
  202. package/dist/lib/dynamic-packages.js.map +1 -1
  203. package/dist/lib/format-compat.d.ts +9 -7
  204. package/dist/lib/format-compat.d.ts.map +1 -1
  205. package/dist/lib/format-compat.js +12 -8
  206. package/dist/lib/format-compat.js.map +1 -1
  207. package/dist/lib/interactive-guard.d.ts +16 -0
  208. package/dist/lib/interactive-guard.d.ts.map +1 -1
  209. package/dist/lib/interactive-guard.js +18 -6
  210. package/dist/lib/interactive-guard.js.map +1 -1
  211. package/dist/lib/migration-fetch.d.ts +16 -4
  212. package/dist/lib/migration-fetch.d.ts.map +1 -1
  213. package/dist/lib/migration-fetch.js +30 -18
  214. package/dist/lib/migration-fetch.js.map +1 -1
  215. package/dist/lib/regression/docker-helpers.d.ts +24 -0
  216. package/dist/lib/regression/docker-helpers.d.ts.map +1 -1
  217. package/dist/lib/regression/docker-helpers.js +46 -10
  218. package/dist/lib/regression/docker-helpers.js.map +1 -1
  219. package/dist/lib/usage-render.d.ts +6 -0
  220. package/dist/lib/usage-render.d.ts.map +1 -1
  221. package/dist/lib/usage-render.js +15 -3
  222. package/dist/lib/usage-render.js.map +1 -1
  223. package/dist/translate-sql/groundTruth.d.ts +3 -3
  224. package/dist/translate-sql/groundTruth.js +40 -40
  225. package/dist/translate-sql/reportGenerator.d.ts +7 -7
  226. package/dist/translate-sql/reportGenerator.js +18 -18
  227. package/dist/translate-sql/ruleTranslator.d.ts +3 -3
  228. package/dist/translate-sql/ruleTranslator.js +8 -8
  229. package/dist/translate-sql/ruleTranslator.js.map +1 -1
  230. package/dist/utils/open-app-context.d.ts +21 -0
  231. package/dist/utils/open-app-context.d.ts.map +1 -1
  232. package/dist/utils/open-app-context.js +26 -10
  233. package/dist/utils/open-app-context.js.map +1 -1
  234. package/oclif.manifest.json +1216 -1058
  235. package/package.json +22 -22
@@ -28,13 +28,17 @@ const PKG_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'
28
28
  * who only `npm i -g @memberjunction/cli` still have it. Returns the first path
29
29
  * that exists, or the bundled path (so the caller can surface a clear error).
30
30
  */
31
- export function resolveStandaloneCompose(monorepoRelPath) {
31
+ export function ResolveStandaloneCompose(monorepoRelPath) {
32
32
  const monorepo = path.resolve(monorepoRelPath);
33
33
  if (existsSync(monorepo))
34
34
  return monorepo;
35
35
  const bundled = path.join(PKG_ROOT, 'regression-compose', path.basename(monorepoRelPath));
36
36
  return existsSync(bundled) ? bundled : monorepo;
37
37
  }
38
+ /** @deprecated Use {@link ResolveStandaloneCompose}. */
39
+ export function resolveStandaloneCompose(monorepoRelPath) {
40
+ return ResolveStandaloneCompose(monorepoRelPath);
41
+ }
38
42
  export const ENV_FILE = `${REGRESSION_DIR}/.env.test`;
39
43
  export const TARGETS_DIR = `${REGRESSION_DIR}/targets`;
40
44
  export const LOAD_TARGET_SCRIPT = `${REGRESSION_DIR}/scripts/load-target-profile.cjs`;
@@ -53,7 +57,7 @@ export const AGENTIC_TEST_RUNNER_IMAGE = 'memberjunction/agentic-test-runner:lat
53
57
  * print a helpful message and exit. Phase 4 still requires the user to be in
54
58
  * the monorepo; Phase 8 will publish the docker image and lift this guard.
55
59
  */
56
- export function requireMonorepoRoot() {
60
+ export function RequireMonorepoRoot() {
57
61
  if (!existsSync(COMPOSE_FILE)) {
58
62
  process.stderr.write(`✗ Expected to find ${COMPOSE_FILE} relative to the current directory.\n` +
59
63
  ` 'mj test regression *' commands must be run from the MemberJunction\n` +
@@ -62,6 +66,10 @@ export function requireMonorepoRoot() {
62
66
  process.exit(1);
63
67
  }
64
68
  }
69
+ /** @deprecated Use {@link RequireMonorepoRoot}. */
70
+ export function requireMonorepoRoot() {
71
+ return RequireMonorepoRoot();
72
+ }
65
73
  /**
66
74
  * Soft check — returns true when there's an MJ monorepo at-or-above cwd.
67
75
  * Used by commands (compare, up, export, remote) to pick monorepo-relative
@@ -71,7 +79,7 @@ export function requireMonorepoRoot() {
71
79
  * The sentinel is the regression base compose file: it lives in every
72
80
  * monorepo checkout and is never present in an external `npm i -g` install.
73
81
  */
74
- export function isInsideMonorepo(startDir = process.cwd()) {
82
+ export function IsInsideMonorepo(startDir = process.cwd()) {
75
83
  let dir = path.resolve(startDir);
76
84
  const root = path.parse(dir).root;
77
85
  while (dir !== root) {
@@ -81,16 +89,24 @@ export function isInsideMonorepo(startDir = process.cwd()) {
81
89
  }
82
90
  return false;
83
91
  }
92
+ /** @deprecated Use {@link IsInsideMonorepo}. */
93
+ export function isInsideMonorepo(startDir = process.cwd()) {
94
+ return IsInsideMonorepo(startDir);
95
+ }
84
96
  /** Returns true when `<cwd>/<ENV_FILE>` exists (e.g. user copied .env.test.example). */
85
- export function envFileExists() {
97
+ export function EnvFileExists() {
86
98
  return existsSync(ENV_FILE);
87
99
  }
100
+ /** @deprecated Use {@link EnvFileExists}. */
101
+ export function envFileExists() {
102
+ return EnvFileExists();
103
+ }
88
104
  /**
89
105
  * Spawn a child process inheriting stdio. Resolves with the exit code.
90
106
  * The promise NEVER rejects on a non-zero exit code — callers inspect the
91
107
  * resolved number and propagate it to the user.
92
108
  */
93
- export function spawnInherit(command, args, options = {}) {
109
+ export function SpawnInherit(command, args, options = {}) {
94
110
  return new Promise((resolve) => {
95
111
  const child = spawn(command, args, {
96
112
  stdio: 'inherit',
@@ -103,12 +119,16 @@ export function spawnInherit(command, args, options = {}) {
103
119
  });
104
120
  });
105
121
  }
122
+ /** @deprecated Use {@link SpawnInherit}. */
123
+ export function spawnInherit(command, args, options = {}) {
124
+ return SpawnInherit(command, args, options);
125
+ }
106
126
  /**
107
127
  * Capture stdout from a child process (stderr inherited so errors surface).
108
128
  * Resolves with { code, stdout }. Used by the remote subcommand to read the
109
129
  * target-profile loader's JSON output without printing it to the user.
110
130
  */
111
- export function spawnCapture(command, args, options = {}) {
131
+ export function SpawnCapture(command, args, options = {}) {
112
132
  return new Promise((resolve) => {
113
133
  const child = spawn(command, args, {
114
134
  stdio: ['inherit', 'pipe', 'inherit'],
@@ -126,6 +146,10 @@ export function spawnCapture(command, args, options = {}) {
126
146
  });
127
147
  });
128
148
  }
149
+ /** @deprecated Use {@link SpawnCapture}. */
150
+ export function spawnCapture(command, args, options = {}) {
151
+ return SpawnCapture(command, args, options);
152
+ }
129
153
  /**
130
154
  * Build the base `docker compose -f <file> --env-file <file>` argument list.
131
155
  * Optionally prepends a profile and additional overlay files (Mode D).
@@ -136,12 +160,12 @@ export function spawnCapture(command, args, options = {}) {
136
160
  * directory (the base compose file at `docker/regression/`), NOT against the
137
161
  * overlay's own location.
138
162
  */
139
- export function dockerComposeArgs(profile, extra = [], overlays = []) {
163
+ export function DockerComposeArgs(profile, extra = [], overlays = []) {
140
164
  const args = ['compose', '-f', COMPOSE_FILE];
141
165
  for (const overlay of overlays) {
142
166
  args.push('-f', overlay);
143
167
  }
144
- if (envFileExists()) {
168
+ if (EnvFileExists()) {
145
169
  args.push('--env-file', ENV_FILE);
146
170
  }
147
171
  if (profile) {
@@ -149,6 +173,10 @@ export function dockerComposeArgs(profile, extra = [], overlays = []) {
149
173
  }
150
174
  return args.concat(extra);
151
175
  }
176
+ /** @deprecated Use {@link DockerComposeArgs}. */
177
+ export function dockerComposeArgs(profile, extra = [], overlays = []) {
178
+ return DockerComposeArgs(profile, extra, overlays);
179
+ }
152
180
  /**
153
181
  * Resolve a target-profile argument to an absolute path. Accepts:
154
182
  * - "staging-mj" → docker/regression/targets/staging-mj.target.json
@@ -156,7 +184,7 @@ export function dockerComposeArgs(profile, extra = [], overlays = []) {
156
184
  * - "./my/elsewhere.target.json" → ./my/elsewhere.target.json (passthrough)
157
185
  * - absolute path → unchanged
158
186
  */
159
- export function resolveTargetPath(input) {
187
+ export function ResolveTargetPath(input) {
160
188
  if (path.isAbsolute(input))
161
189
  return input;
162
190
  if (input.includes('/'))
@@ -164,13 +192,17 @@ export function resolveTargetPath(input) {
164
192
  const withSuffix = input.endsWith('.target.json') ? input : `${input}.target.json`;
165
193
  return path.resolve(TARGETS_DIR, withSuffix);
166
194
  }
195
+ /** @deprecated Use {@link ResolveTargetPath}. */
196
+ export function resolveTargetPath(input) {
197
+ return ResolveTargetPath(input);
198
+ }
167
199
  /**
168
200
  * Build a `docker run …` argument list for the published image (external,
169
201
  * no-monorepo path). Mounts are [hostPath, containerPath] pairs; envFile is
170
202
  * injected with `--env-file`; `host.docker.internal` is always mapped so a DB
171
203
  * published on the host is reachable on Linux too.
172
204
  */
173
- export function dockerRunArgs(image, subArgs, opts = {}) {
205
+ export function DockerRunArgs(image, subArgs, opts = {}) {
174
206
  const args = ['run', '--rm', '--add-host', 'host.docker.internal:host-gateway'];
175
207
  if (opts.envFile && existsSync(opts.envFile)) {
176
208
  args.push('--env-file', opts.envFile);
@@ -181,4 +213,8 @@ export function dockerRunArgs(image, subArgs, opts = {}) {
181
213
  args.push(image, ...subArgs);
182
214
  return args;
183
215
  }
216
+ /** @deprecated Use {@link DockerRunArgs}. */
217
+ export function dockerRunArgs(image, subArgs, opts = {}) {
218
+ return DockerRunArgs(image, subArgs, opts);
219
+ }
184
220
  //# sourceMappingURL=docker-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker-helpers.js","sourceRoot":"","sources":["../../../src/lib/regression/docker-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker-helpers.js","sourceRoot":"","sources":["../../../src/lib/regression/docker-helpers.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,16 @@ type LogFn = (message: string) => void;
5
5
  * {@link SerializeResult} the runtime host uses (single source of truth). For
6
6
  * `text`, the caller supplies pre-rendered human lines.
7
7
  */
8
+ export declare function EmitUsage(log: LogFn, format: OutputFormat, result: MJCLIResult, textLines: string[]): void;
9
+ /** @deprecated Use {@link EmitUsage}. */
8
10
  export declare function emitUsage(log: LogFn, format: OutputFormat, result: MJCLIResult, textLines: string[]): void;
9
11
  /** Human-readable tier-1 domain map. */
12
+ export declare function RenderDomainMap(map: UsageDomainMap): string[];
13
+ /** @deprecated Use {@link RenderDomainMap}. */
10
14
  export declare function renderDomainMap(map: UsageDomainMap): string[];
11
15
  /** Human-readable tier-2 domain detail. */
16
+ export declare function RenderDomainDetail(detail: UsageDomainDetail): string[];
17
+ /** @deprecated Use {@link RenderDomainDetail}. */
12
18
  export declare function renderDomainDetail(detail: UsageDomainDetail): string[];
13
19
  export {};
14
20
  //# sourceMappingURL=usage-render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage-render.d.ts","sourceRoot":"","sources":["../../src/lib/usage-render.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAoB,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/J,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvC;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAO1G;AAED,wCAAwC;AACxC,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAa7D;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAsBtE"}
1
+ {"version":3,"file":"usage-render.d.ts","sourceRoot":"","sources":["../../src/lib/usage-render.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAoB,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/J,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvC;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAO1G;AAED,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAE1G;AAED,wCAAwC;AACxC,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAa7D;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAE7D;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAsBtE;AAED,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAEtE"}
@@ -5,7 +5,7 @@ import { SerializeResult } from '@memberjunction/cli-core';
5
5
  * {@link SerializeResult} the runtime host uses (single source of truth). For
6
6
  * `text`, the caller supplies pre-rendered human lines.
7
7
  */
8
- export function emitUsage(log, format, result, textLines) {
8
+ export function EmitUsage(log, format, result, textLines) {
9
9
  if (format === 'json' || format === 'md') {
10
10
  // Pretty only when a human is watching; a pipe gets one compact line.
11
11
  log(SerializeResult(result, format, { pretty: process.stdout.isTTY === true }));
@@ -14,8 +14,12 @@ export function emitUsage(log, format, result, textLines) {
14
14
  textLines.forEach((line) => log(line));
15
15
  }
16
16
  }
17
+ /** @deprecated Use {@link EmitUsage}. */
18
+ export function emitUsage(log, format, result, textLines) {
19
+ return EmitUsage(log, format, result, textLines);
20
+ }
17
21
  /** Human-readable tier-1 domain map. */
18
- export function renderDomainMap(map) {
22
+ export function RenderDomainMap(map) {
19
23
  const lines = [];
20
24
  lines.push(chalk.bold('\nmj — command domains'));
21
25
  lines.push(chalk.gray(map.guidance) + '\n');
@@ -29,8 +33,12 @@ export function renderDomainMap(map) {
29
33
  lines.push(chalk.gray('Next: `mj <domain> usage` for that domain\'s commands, flags, and timeouts.'));
30
34
  return lines;
31
35
  }
36
+ /** @deprecated Use {@link RenderDomainMap}. */
37
+ export function renderDomainMap(map) {
38
+ return RenderDomainMap(map);
39
+ }
32
40
  /** Human-readable tier-2 domain detail. */
33
- export function renderDomainDetail(detail) {
41
+ export function RenderDomainDetail(detail) {
34
42
  const lines = [];
35
43
  lines.push(chalk.bold(`\nmj ${detail.domain} — commands`));
36
44
  if (detail.commands.length === 0) {
@@ -56,6 +64,10 @@ export function renderDomainDetail(detail) {
56
64
  }
57
65
  return lines;
58
66
  }
67
+ /** @deprecated Use {@link RenderDomainDetail}. */
68
+ export function renderDomainDetail(detail) {
69
+ return RenderDomainDetail(detail);
70
+ }
59
71
  function formatRuntime(cmd) {
60
72
  const r = cmd.runtime;
61
73
  const secs = r.typicalSeconds ? `~${r.typicalSeconds}s` : '';
@@ -1 +1 @@
1
- {"version":3,"file":"usage-render.js","sourceRoot":"","sources":["../../src/lib/usage-render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage-render.js","sourceRoot":"","sources":["../../src/lib/usage-render.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,15 @@ import { DatabasePlatform } from '@memberjunction/core';
3
3
  * A single translation example pairing source and target SQL.
4
4
  */
5
5
  export interface TranslationExample {
6
- source: {
6
+ Source: {
7
7
  platform: DatabasePlatform;
8
8
  sql: string;
9
9
  };
10
- target: {
10
+ Target: {
11
11
  platform: DatabasePlatform;
12
12
  sql: string;
13
13
  };
14
- category: string;
14
+ Category: string;
15
15
  }
16
16
  /**
17
17
  * Ground truth translation examples for SQL Server ↔ PostgreSQL.
@@ -5,75 +5,75 @@
5
5
  export const GROUND_TRUTH_EXAMPLES = [
6
6
  // Identifier quoting
7
7
  {
8
- source: { platform: 'sqlserver', sql: "[Status] = 'Active' AND [Name] LIKE 'J%'" },
9
- target: { platform: 'postgresql', sql: '"Status" = \'Active\' AND "Name" LIKE \'J%\'' },
10
- category: 'identifier-quoting'
8
+ Source: { platform: 'sqlserver', sql: "[Status] = 'Active' AND [Name] LIKE 'J%'" },
9
+ Target: { platform: 'postgresql', sql: '"Status" = \'Active\' AND "Name" LIKE \'J%\'' },
10
+ Category: 'identifier-quoting'
11
11
  },
12
12
  // Boolean literals
13
13
  {
14
- source: { platform: 'sqlserver', sql: "[IsActive] = 1 AND [IsAdmin] = 0" },
15
- target: { platform: 'postgresql', sql: '"IsActive" = true AND "IsAdmin" = false' },
16
- category: 'boolean-literal'
14
+ Source: { platform: 'sqlserver', sql: "[IsActive] = 1 AND [IsAdmin] = 0" },
15
+ Target: { platform: 'postgresql', sql: '"IsActive" = true AND "IsAdmin" = false' },
16
+ Category: 'boolean-literal'
17
17
  },
18
18
  // TOP → LIMIT
19
19
  {
20
- source: { platform: 'sqlserver', sql: "SELECT TOP 10 [Name], [Email] FROM [__mj].[vwUsers] WHERE [IsActive] = 1 ORDER BY [Name]" },
21
- target: { platform: 'postgresql', sql: 'SELECT "Name", "Email" FROM __mj."vwUsers" WHERE "IsActive" = true ORDER BY "Name" LIMIT 10' },
22
- category: 'top-to-limit'
20
+ Source: { platform: 'sqlserver', sql: "SELECT TOP 10 [Name], [Email] FROM [__mj].[vwUsers] WHERE [IsActive] = 1 ORDER BY [Name]" },
21
+ Target: { platform: 'postgresql', sql: 'SELECT "Name", "Email" FROM __mj."vwUsers" WHERE "IsActive" = true ORDER BY "Name" LIMIT 10' },
22
+ Category: 'top-to-limit'
23
23
  },
24
24
  // GETUTCDATE → NOW()
25
25
  {
26
- source: { platform: 'sqlserver', sql: "[CreatedAt] > GETUTCDATE() - 30" },
27
- target: { platform: 'postgresql', sql: '"CreatedAt" > NOW() - INTERVAL \'30 days\'' },
28
- category: 'date-function'
26
+ Source: { platform: 'sqlserver', sql: "[CreatedAt] > GETUTCDATE() - 30" },
27
+ Target: { platform: 'postgresql', sql: '"CreatedAt" > NOW() - INTERVAL \'30 days\'' },
28
+ Category: 'date-function'
29
29
  },
30
30
  // ISNULL → COALESCE
31
31
  {
32
- source: { platform: 'sqlserver', sql: "ISNULL([MiddleName], '') + ' ' + [LastName]" },
33
- target: { platform: 'postgresql', sql: "COALESCE(\"MiddleName\", '') || ' ' || \"LastName\"" },
34
- category: 'null-function'
32
+ Source: { platform: 'sqlserver', sql: "ISNULL([MiddleName], '') + ' ' + [LastName]" },
33
+ Target: { platform: 'postgresql', sql: "COALESCE(\"MiddleName\", '') || ' ' || \"LastName\"" },
34
+ Category: 'null-function'
35
35
  },
36
36
  // String concatenation (+ → ||)
37
37
  {
38
- source: { platform: 'sqlserver', sql: "[FirstName] + ' ' + [LastName]" },
39
- target: { platform: 'postgresql', sql: '"FirstName" || \' \' || "LastName"' },
40
- category: 'string-concat'
38
+ Source: { platform: 'sqlserver', sql: "[FirstName] + ' ' + [LastName]" },
39
+ Target: { platform: 'postgresql', sql: '"FirstName" || \' \' || "LastName"' },
40
+ Category: 'string-concat'
41
41
  },
42
42
  // CONVERT → CAST
43
43
  {
44
- source: { platform: 'sqlserver', sql: "CONVERT(NVARCHAR(50), [Price])" },
45
- target: { platform: 'postgresql', sql: 'CAST("Price" AS VARCHAR(50))' },
46
- category: 'type-conversion'
44
+ Source: { platform: 'sqlserver', sql: "CONVERT(NVARCHAR(50), [Price])" },
45
+ Target: { platform: 'postgresql', sql: 'CAST("Price" AS VARCHAR(50))' },
46
+ Category: 'type-conversion'
47
47
  },
48
48
  // IIF → CASE
49
49
  {
50
- source: { platform: 'sqlserver', sql: "IIF([Status] = 1, 'Active', 'Inactive')" },
51
- target: { platform: 'postgresql', sql: "CASE WHEN \"Status\" = true THEN 'Active' ELSE 'Inactive' END" },
52
- category: 'conditional'
50
+ Source: { platform: 'sqlserver', sql: "IIF([Status] = 1, 'Active', 'Inactive')" },
51
+ Target: { platform: 'postgresql', sql: "CASE WHEN \"Status\" = true THEN 'Active' ELSE 'Inactive' END" },
52
+ Category: 'conditional'
53
53
  },
54
54
  // DATEADD → interval arithmetic
55
55
  {
56
- source: { platform: 'sqlserver', sql: "DATEADD(day, -7, GETUTCDATE())" },
57
- target: { platform: 'postgresql', sql: "NOW() - INTERVAL '7 days'" },
58
- category: 'date-arithmetic'
56
+ Source: { platform: 'sqlserver', sql: "DATEADD(day, -7, GETUTCDATE())" },
57
+ Target: { platform: 'postgresql', sql: "NOW() - INTERVAL '7 days'" },
58
+ Category: 'date-arithmetic'
59
59
  },
60
60
  // DATEDIFF → EXTRACT/date_part
61
61
  {
62
- source: { platform: 'sqlserver', sql: "DATEDIFF(day, [StartDate], [EndDate])" },
63
- target: { platform: 'postgresql', sql: 'EXTRACT(DAY FROM ("EndDate" - "StartDate"))::integer' },
64
- category: 'date-diff'
62
+ Source: { platform: 'sqlserver', sql: "DATEDIFF(day, [StartDate], [EndDate])" },
63
+ Target: { platform: 'postgresql', sql: 'EXTRACT(DAY FROM ("EndDate" - "StartDate"))::integer' },
64
+ Category: 'date-diff'
65
65
  },
66
66
  // Schema-qualified with brackets
67
67
  {
68
- source: { platform: 'sqlserver', sql: "SELECT * FROM [__mj].[vwEntities] WHERE [SchemaName] = '__mj'" },
69
- target: { platform: 'postgresql', sql: 'SELECT * FROM __mj."vwEntities" WHERE "SchemaName" = \'__mj\'' },
70
- category: 'schema-qualified'
68
+ Source: { platform: 'sqlserver', sql: "SELECT * FROM [__mj].[vwEntities] WHERE [SchemaName] = '__mj'" },
69
+ Target: { platform: 'postgresql', sql: 'SELECT * FROM __mj."vwEntities" WHERE "SchemaName" = \'__mj\'' },
70
+ Category: 'schema-qualified'
71
71
  },
72
72
  // Complex WHERE clause
73
73
  {
74
- source: { platform: 'sqlserver', sql: "[EntityID] IN (SELECT [ID] FROM [__mj].[vwEntities] WHERE [IncludeInAPI] = 1)" },
75
- target: { platform: 'postgresql', sql: '"EntityID" IN (SELECT "ID" FROM __mj."vwEntities" WHERE "IncludeInAPI" = true)' },
76
- category: 'subquery'
74
+ Source: { platform: 'sqlserver', sql: "[EntityID] IN (SELECT [ID] FROM [__mj].[vwEntities] WHERE [IncludeInAPI] = 1)" },
75
+ Target: { platform: 'postgresql', sql: '"EntityID" IN (SELECT "ID" FROM __mj."vwEntities" WHERE "IncludeInAPI" = true)' },
76
+ Category: 'subquery'
77
77
  },
78
78
  ];
79
79
  /**
@@ -81,13 +81,13 @@ export const GROUND_TRUTH_EXAMPLES = [
81
81
  */
82
82
  export function BuildGroundTruthPromptSection(from, to, maxExamples = 8) {
83
83
  const relevant = GROUND_TRUTH_EXAMPLES
84
- .filter(e => e.source.platform === from && e.target.platform === to)
84
+ .filter(e => e.Source.platform === from && e.Target.platform === to)
85
85
  .slice(0, maxExamples);
86
86
  if (relevant.length === 0)
87
87
  return '';
88
- const lines = relevant.map((ex, i) => `Example ${i + 1} (${ex.category}):\n` +
89
- ` Source (${from}): ${ex.source.sql}\n` +
90
- ` Target (${to}): ${ex.target.sql}`);
88
+ const lines = relevant.map((ex, i) => `Example ${i + 1} (${ex.Category}):\n` +
89
+ ` Source (${from}): ${ex.Source.sql}\n` +
90
+ ` Target (${to}): ${ex.Target.sql}`);
91
91
  return `## Translation Examples\n\n${lines.join('\n\n')}`;
92
92
  }
93
93
  //# sourceMappingURL=groundTruth.js.map
@@ -5,19 +5,19 @@ import { SQLClassification } from './classifier.js';
5
5
  */
6
6
  export interface TranslationReportItem {
7
7
  /** Source identifier (e.g., "Query: User Activity Report") */
8
- source: string;
8
+ Source: string;
9
9
  /** The original SQL fragment */
10
- originalSQL: string;
10
+ OriginalSQL: string;
11
11
  /** How the SQL was classified */
12
- classification: SQLClassification;
12
+ Classification: SQLClassification;
13
13
  /** The translated SQL (null if not translated) */
14
- translatedSQL: string | null;
14
+ TranslatedSQL: string | null;
15
15
  /** Translation method used */
16
- method: 'rule-based' | 'llm' | 'skipped' | 'flagged';
16
+ Method: 'rule-based' | 'llm' | 'skipped' | 'flagged';
17
17
  /** Dialect markers found */
18
- markers: string[];
18
+ Markers: string[];
19
19
  /** Any error or note */
20
- note?: string;
20
+ Note?: string;
21
21
  }
22
22
  /**
23
23
  * Generates a markdown report from translation results.
@@ -24,45 +24,45 @@ export function GenerateTranslationReport(items, from, to) {
24
24
  if (summary.ruleBased > 0 || summary.llm > 0) {
25
25
  lines.push(`## Translations`);
26
26
  lines.push('');
27
- const translated = items.filter(i => i.method === 'rule-based' || i.method === 'llm');
27
+ const translated = items.filter(i => i.Method === 'rule-based' || i.Method === 'llm');
28
28
  for (const item of translated) {
29
- lines.push(`### ${item.source}`);
30
- lines.push(`**Method:** ${item.method} | **Markers:** ${item.markers.join(', ') || 'none'}`);
29
+ lines.push(`### ${item.Source}`);
30
+ lines.push(`**Method:** ${item.Method} | **Markers:** ${item.Markers.join(', ') || 'none'}`);
31
31
  lines.push('');
32
32
  lines.push('**Original:**');
33
33
  lines.push('```sql');
34
- lines.push(item.originalSQL);
34
+ lines.push(item.OriginalSQL);
35
35
  lines.push('```');
36
36
  lines.push('');
37
37
  lines.push('**Translated:**');
38
38
  lines.push('```sql');
39
- lines.push(item.translatedSQL || '-- Translation failed');
39
+ lines.push(item.TranslatedSQL || '-- Translation failed');
40
40
  lines.push('```');
41
- if (item.note) {
42
- lines.push(`> ${item.note}`);
41
+ if (item.Note) {
42
+ lines.push(`> ${item.Note}`);
43
43
  }
44
44
  lines.push('');
45
45
  }
46
46
  }
47
47
  // Flagged items
48
- const flagged = items.filter(i => i.method === 'flagged');
48
+ const flagged = items.filter(i => i.Method === 'flagged');
49
49
  if (flagged.length > 0) {
50
50
  lines.push(`## Flagged for Human Review`);
51
51
  lines.push('');
52
52
  for (const item of flagged) {
53
- lines.push(`### ${item.source}`);
54
- lines.push(`**Markers:** ${item.markers.join(', ')}`);
53
+ lines.push(`### ${item.Source}`);
54
+ lines.push(`**Markers:** ${item.Markers.join(', ')}`);
55
55
  lines.push('```sql');
56
- lines.push(item.originalSQL);
56
+ lines.push(item.OriginalSQL);
57
57
  lines.push('```');
58
- if (item.note) {
59
- lines.push(`> ${item.note}`);
58
+ if (item.Note) {
59
+ lines.push(`> ${item.Note}`);
60
60
  }
61
61
  lines.push('');
62
62
  }
63
63
  }
64
64
  // Standard SQL items (collapsed)
65
- const standard = items.filter(i => i.classification === 'standard');
65
+ const standard = items.filter(i => i.Classification === 'standard');
66
66
  if (standard.length > 0) {
67
67
  lines.push(`## Standard SQL (No Translation Needed)`);
68
68
  lines.push('');
@@ -74,10 +74,10 @@ export function GenerateTranslationReport(items, from, to) {
74
74
  function buildSummary(items) {
75
75
  return {
76
76
  total: items.length,
77
- standard: items.filter(i => i.classification === 'standard').length,
78
- ruleBased: items.filter(i => i.method === 'rule-based').length,
79
- llm: items.filter(i => i.method === 'llm').length,
80
- flagged: items.filter(i => i.method === 'flagged').length,
77
+ standard: items.filter(i => i.Classification === 'standard').length,
78
+ ruleBased: items.filter(i => i.Method === 'rule-based').length,
79
+ llm: items.filter(i => i.Method === 'llm').length,
80
+ flagged: items.filter(i => i.Method === 'flagged').length,
81
81
  };
82
82
  }
83
83
  //# sourceMappingURL=reportGenerator.js.map
@@ -3,9 +3,9 @@ import { DatabasePlatform } from '@memberjunction/core';
3
3
  * Result of a rule-based SQL translation.
4
4
  */
5
5
  export interface RuleTranslationResult {
6
- success: boolean;
7
- translatedSQL: string;
8
- appliedRules: string[];
6
+ Success: boolean;
7
+ TranslatedSQL: string;
8
+ AppliedRules: string[];
9
9
  }
10
10
  /**
11
11
  * Translates SQL Server SQL to PostgreSQL using deterministic, rule-based transformations.
@@ -10,7 +10,7 @@
10
10
  */
11
11
  export function RuleBasedTranslate(sql, from, to) {
12
12
  if (from === to) {
13
- return { success: true, translatedSQL: sql, appliedRules: [] };
13
+ return { Success: true, TranslatedSQL: sql, AppliedRules: [] };
14
14
  }
15
15
  if (from === 'sqlserver' && to === 'postgresql') {
16
16
  return translateSqlServerToPostgres(sql);
@@ -18,7 +18,7 @@ export function RuleBasedTranslate(sql, from, to) {
18
18
  if (from === 'postgresql' && to === 'sqlserver') {
19
19
  return translatePostgresToSqlServer(sql);
20
20
  }
21
- return { success: false, translatedSQL: sql, appliedRules: [] };
21
+ return { Success: false, TranslatedSQL: sql, AppliedRules: [] };
22
22
  }
23
23
  function translateSqlServerToPostgres(sql) {
24
24
  let result = sql;
@@ -40,9 +40,9 @@ function translateSqlServerToPostgres(sql) {
40
40
  appliedRules.push('bit-0-to-false');
41
41
  }
42
42
  return {
43
- success: appliedRules.length > 0,
44
- translatedSQL: result,
45
- appliedRules
43
+ Success: appliedRules.length > 0,
44
+ TranslatedSQL: result,
45
+ AppliedRules: appliedRules
46
46
  };
47
47
  }
48
48
  function translatePostgresToSqlServer(sql) {
@@ -66,9 +66,9 @@ function translatePostgresToSqlServer(sql) {
66
66
  appliedRules.push('false-to-bit-0');
67
67
  }
68
68
  return {
69
- success: appliedRules.length > 0,
70
- translatedSQL: result,
71
- appliedRules
69
+ Success: appliedRules.length > 0,
70
+ TranslatedSQL: result,
71
+ AppliedRules: appliedRules
72
72
  };
73
73
  }
74
74
  //# sourceMappingURL=ruleTranslator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ruleTranslator.js","sourceRoot":"","sources":["../../src/translate-sql/ruleTranslator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruleTranslator.js","sourceRoot":"","sources":["../../src/translate-sql/ruleTranslator.ts"],"names":[],"mappings":"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"}