@memberjunction/cli 3.3.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/README.md +28 -0
  2. package/bin/dev.cmd +2 -2
  3. package/bin/dev.js +5 -6
  4. package/bin/run.cmd +3 -3
  5. package/bin/run.js +14 -5
  6. package/dist/commands/ai/actions/list.d.ts +1 -0
  7. package/dist/commands/ai/actions/list.d.ts.map +1 -0
  8. package/dist/commands/ai/actions/list.js +14 -19
  9. package/dist/commands/ai/actions/list.js.map +1 -0
  10. package/dist/commands/ai/actions/run.d.ts +2 -1
  11. package/dist/commands/ai/actions/run.d.ts.map +1 -0
  12. package/dist/commands/ai/actions/run.js +24 -29
  13. package/dist/commands/ai/actions/run.js.map +1 -0
  14. package/dist/commands/ai/agents/list.d.ts +1 -0
  15. package/dist/commands/ai/agents/list.d.ts.map +1 -0
  16. package/dist/commands/ai/agents/list.js +14 -19
  17. package/dist/commands/ai/agents/list.js.map +1 -0
  18. package/dist/commands/ai/agents/run.d.ts +2 -1
  19. package/dist/commands/ai/agents/run.d.ts.map +1 -0
  20. package/dist/commands/ai/agents/run.js +20 -25
  21. package/dist/commands/ai/agents/run.js.map +1 -0
  22. package/dist/commands/ai/audit/agent-run.d.ts +7 -6
  23. package/dist/commands/ai/audit/agent-run.d.ts.map +1 -0
  24. package/dist/commands/ai/audit/agent-run.js +35 -63
  25. package/dist/commands/ai/audit/agent-run.js.map +1 -0
  26. package/dist/commands/ai/audit/index.d.ts +1 -0
  27. package/dist/commands/ai/audit/index.d.ts.map +1 -0
  28. package/dist/commands/ai/audit/index.js +5 -7
  29. package/dist/commands/ai/audit/index.js.map +1 -0
  30. package/dist/commands/ai/index.d.ts +1 -0
  31. package/dist/commands/ai/index.d.ts.map +1 -0
  32. package/dist/commands/ai/index.js +5 -7
  33. package/dist/commands/ai/index.js.map +1 -0
  34. package/dist/commands/ai/prompts/list.d.ts +1 -0
  35. package/dist/commands/ai/prompts/list.d.ts.map +1 -0
  36. package/dist/commands/ai/prompts/list.js +18 -23
  37. package/dist/commands/ai/prompts/list.js.map +1 -0
  38. package/dist/commands/ai/prompts/run.d.ts +6 -5
  39. package/dist/commands/ai/prompts/run.d.ts.map +1 -0
  40. package/dist/commands/ai/prompts/run.js +22 -27
  41. package/dist/commands/ai/prompts/run.js.map +1 -0
  42. package/dist/commands/bump/index.d.ts +2 -1
  43. package/dist/commands/bump/index.d.ts.map +1 -0
  44. package/dist/commands/bump/index.js +24 -52
  45. package/dist/commands/bump/index.js.map +1 -0
  46. package/dist/commands/clean/index.d.ts +3 -2
  47. package/dist/commands/clean/index.d.ts.map +1 -0
  48. package/dist/commands/clean/index.js +16 -22
  49. package/dist/commands/clean/index.js.map +1 -0
  50. package/dist/commands/codegen/index.d.ts +3 -2
  51. package/dist/commands/codegen/index.d.ts.map +1 -0
  52. package/dist/commands/codegen/index.js +14 -17
  53. package/dist/commands/codegen/index.js.map +1 -0
  54. package/dist/commands/codegen/manifest.d.ts +15 -0
  55. package/dist/commands/codegen/manifest.d.ts.map +1 -0
  56. package/dist/commands/codegen/manifest.js +65 -0
  57. package/dist/commands/codegen/manifest.js.map +1 -0
  58. package/dist/commands/dbdoc/analyze.d.ts +2 -1
  59. package/dist/commands/dbdoc/analyze.d.ts.map +1 -0
  60. package/dist/commands/dbdoc/analyze.js +11 -36
  61. package/dist/commands/dbdoc/analyze.js.map +1 -0
  62. package/dist/commands/dbdoc/export-sample-queries.d.ts +2 -1
  63. package/dist/commands/dbdoc/export-sample-queries.d.ts.map +1 -0
  64. package/dist/commands/dbdoc/export-sample-queries.js +19 -44
  65. package/dist/commands/dbdoc/export-sample-queries.js.map +1 -0
  66. package/dist/commands/dbdoc/export.d.ts +3 -2
  67. package/dist/commands/dbdoc/export.d.ts.map +1 -0
  68. package/dist/commands/dbdoc/export.js +20 -45
  69. package/dist/commands/dbdoc/export.js.map +1 -0
  70. package/dist/commands/dbdoc/generate-queries.d.ts +4 -3
  71. package/dist/commands/dbdoc/generate-queries.d.ts.map +1 -0
  72. package/dist/commands/dbdoc/generate-queries.js +14 -39
  73. package/dist/commands/dbdoc/generate-queries.js.map +1 -0
  74. package/dist/commands/dbdoc/index.d.ts +1 -0
  75. package/dist/commands/dbdoc/index.d.ts.map +1 -0
  76. package/dist/commands/dbdoc/index.js +5 -7
  77. package/dist/commands/dbdoc/index.js.map +1 -0
  78. package/dist/commands/dbdoc/init.d.ts +1 -0
  79. package/dist/commands/dbdoc/init.d.ts.map +1 -0
  80. package/dist/commands/dbdoc/init.js +7 -32
  81. package/dist/commands/dbdoc/init.js.map +1 -0
  82. package/dist/commands/dbdoc/reset.d.ts +1 -0
  83. package/dist/commands/dbdoc/reset.d.ts.map +1 -0
  84. package/dist/commands/dbdoc/reset.js +10 -35
  85. package/dist/commands/dbdoc/reset.js.map +1 -0
  86. package/dist/commands/dbdoc/review.d.ts +10 -0
  87. package/dist/commands/dbdoc/review.js +81 -0
  88. package/dist/commands/dbdoc/status.d.ts +2 -1
  89. package/dist/commands/dbdoc/status.d.ts.map +1 -0
  90. package/dist/commands/dbdoc/status.js +10 -35
  91. package/dist/commands/dbdoc/status.js.map +1 -0
  92. package/dist/commands/install/index.d.ts +76 -75
  93. package/dist/commands/install/index.d.ts.map +1 -0
  94. package/dist/commands/install/index.js +81 -111
  95. package/dist/commands/install/index.js.map +1 -0
  96. package/dist/commands/migrate/index.d.ts +4 -1
  97. package/dist/commands/migrate/index.d.ts.map +1 -0
  98. package/dist/commands/migrate/index.js +83 -73
  99. package/dist/commands/migrate/index.js.map +1 -0
  100. package/dist/commands/querygen/export.d.ts +1 -0
  101. package/dist/commands/querygen/export.d.ts.map +1 -0
  102. package/dist/commands/querygen/export.js +15 -17
  103. package/dist/commands/querygen/export.js.map +1 -0
  104. package/dist/commands/querygen/generate.d.ts +8 -7
  105. package/dist/commands/querygen/generate.d.ts.map +1 -0
  106. package/dist/commands/querygen/generate.js +28 -30
  107. package/dist/commands/querygen/generate.js.map +1 -0
  108. package/dist/commands/querygen/validate.d.ts +1 -0
  109. package/dist/commands/querygen/validate.d.ts.map +1 -0
  110. package/dist/commands/querygen/validate.js +15 -17
  111. package/dist/commands/querygen/validate.js.map +1 -0
  112. package/dist/commands/sync/file-reset.d.ts +3 -2
  113. package/dist/commands/sync/file-reset.d.ts.map +1 -0
  114. package/dist/commands/sync/file-reset.js +36 -64
  115. package/dist/commands/sync/file-reset.js.map +1 -0
  116. package/dist/commands/sync/init.d.ts +1 -0
  117. package/dist/commands/sync/init.d.ts.map +1 -0
  118. package/dist/commands/sync/init.js +16 -21
  119. package/dist/commands/sync/init.js.map +1 -0
  120. package/dist/commands/sync/pull.d.ts +7 -6
  121. package/dist/commands/sync/pull.d.ts.map +1 -0
  122. package/dist/commands/sync/pull.js +46 -51
  123. package/dist/commands/sync/pull.js.map +1 -0
  124. package/dist/commands/sync/push.d.ts +4 -3
  125. package/dist/commands/sync/push.d.ts.map +1 -0
  126. package/dist/commands/sync/push.js +44 -49
  127. package/dist/commands/sync/push.js.map +1 -0
  128. package/dist/commands/sync/status.d.ts +4 -3
  129. package/dist/commands/sync/status.d.ts.map +1 -0
  130. package/dist/commands/sync/status.js +28 -33
  131. package/dist/commands/sync/status.js.map +1 -0
  132. package/dist/commands/sync/validate.d.ts +3 -2
  133. package/dist/commands/sync/validate.d.ts.map +1 -0
  134. package/dist/commands/sync/validate.js +31 -59
  135. package/dist/commands/sync/validate.js.map +1 -0
  136. package/dist/commands/sync/watch.d.ts +3 -2
  137. package/dist/commands/sync/watch.d.ts.map +1 -0
  138. package/dist/commands/sync/watch.js +34 -63
  139. package/dist/commands/sync/watch.js.map +1 -0
  140. package/dist/commands/test/compare.d.ts +6 -5
  141. package/dist/commands/test/compare.d.ts.map +1 -0
  142. package/dist/commands/test/compare.js +20 -22
  143. package/dist/commands/test/compare.js.map +1 -0
  144. package/dist/commands/test/history.d.ts +6 -5
  145. package/dist/commands/test/history.d.ts.map +1 -0
  146. package/dist/commands/test/history.js +17 -19
  147. package/dist/commands/test/history.js.map +1 -0
  148. package/dist/commands/test/index.d.ts +1 -0
  149. package/dist/commands/test/index.d.ts.map +1 -0
  150. package/dist/commands/test/index.js +6 -8
  151. package/dist/commands/test/index.js.map +1 -0
  152. package/dist/commands/test/list.d.ts +5 -4
  153. package/dist/commands/test/list.d.ts.map +1 -0
  154. package/dist/commands/test/list.js +18 -20
  155. package/dist/commands/test/list.js.map +1 -0
  156. package/dist/commands/test/run.d.ts +5 -4
  157. package/dist/commands/test/run.d.ts.map +1 -0
  158. package/dist/commands/test/run.js +19 -21
  159. package/dist/commands/test/run.js.map +1 -0
  160. package/dist/commands/test/suite.d.ts +4 -3
  161. package/dist/commands/test/suite.d.ts.map +1 -0
  162. package/dist/commands/test/suite.js +17 -19
  163. package/dist/commands/test/suite.js.map +1 -0
  164. package/dist/commands/test/validate.d.ts +4 -3
  165. package/dist/commands/test/validate.d.ts.map +1 -0
  166. package/dist/commands/test/validate.js +19 -21
  167. package/dist/commands/test/validate.js.map +1 -0
  168. package/dist/config.d.ts +76 -38
  169. package/dist/config.d.ts.map +1 -0
  170. package/dist/config.js +108 -60
  171. package/dist/config.js.map +1 -0
  172. package/dist/hooks/init.d.ts +1 -0
  173. package/dist/hooks/init.d.ts.map +1 -0
  174. package/dist/hooks/init.js +5 -29
  175. package/dist/hooks/init.js.map +1 -0
  176. package/dist/hooks/prerun.d.ts +1 -0
  177. package/dist/hooks/prerun.d.ts.map +1 -0
  178. package/dist/hooks/prerun.js +4 -8
  179. package/dist/hooks/prerun.js.map +1 -0
  180. package/dist/index.d.ts +1 -0
  181. package/dist/index.d.ts.map +1 -0
  182. package/dist/index.js +2 -5
  183. package/dist/index.js.map +1 -0
  184. package/package.json +32 -30
  185. package/oclif.manifest.json +0 -2504
package/dist/config.d.ts CHANGED
@@ -14,47 +14,84 @@ declare const mjConfigSchema: z.ZodObject<{
14
14
  mjRepoUrl: z.ZodCatch<z.ZodString>;
15
15
  baselineVersion: z.ZodDefault<z.ZodOptional<z.ZodString>>;
16
16
  baselineOnMigrate: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
17
+ SQLOutput: z.ZodOptional<z.ZodObject<{
18
+ schemaPlaceholders: z.ZodOptional<z.ZodArray<z.ZodObject<{
19
+ schema: z.ZodString;
20
+ placeholder: z.ZodString;
21
+ }, "strip", z.ZodTypeAny, {
22
+ schema?: string;
23
+ placeholder?: string;
24
+ }, {
25
+ schema?: string;
26
+ placeholder?: string;
27
+ }>, "many">>;
28
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
29
+ schemaPlaceholders: z.ZodOptional<z.ZodArray<z.ZodObject<{
30
+ schema: z.ZodString;
31
+ placeholder: z.ZodString;
32
+ }, "strip", z.ZodTypeAny, {
33
+ schema?: string;
34
+ placeholder?: string;
35
+ }, {
36
+ schema?: string;
37
+ placeholder?: string;
38
+ }>, "many">>;
39
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
40
+ schemaPlaceholders: z.ZodOptional<z.ZodArray<z.ZodObject<{
41
+ schema: z.ZodString;
42
+ placeholder: z.ZodString;
43
+ }, "strip", z.ZodTypeAny, {
44
+ schema?: string;
45
+ placeholder?: string;
46
+ }, {
47
+ schema?: string;
48
+ placeholder?: string;
49
+ }>, "many">>;
50
+ }, z.ZodTypeAny, "passthrough">>>;
17
51
  }, "strip", z.ZodTypeAny, {
18
- dbHost: string;
19
- dbDatabase: string;
20
- dbPort: number;
21
- codeGenLogin: string;
22
- codeGenPassword: string;
23
- migrationsLocation: string;
24
- dbTrustServerCertificate: boolean;
25
- coreSchema: string;
26
- cleanDisabled: boolean;
27
- mjRepoUrl: string;
28
- baselineVersion: string;
29
- baselineOnMigrate: boolean;
52
+ dbHost?: string;
53
+ dbDatabase?: string;
54
+ dbPort?: number;
55
+ codeGenLogin?: string;
56
+ codeGenPassword?: string;
57
+ migrationsLocation?: string;
58
+ dbTrustServerCertificate?: boolean;
59
+ coreSchema?: string;
60
+ cleanDisabled?: boolean;
61
+ mjRepoUrl?: string;
62
+ baselineVersion?: string;
63
+ baselineOnMigrate?: boolean;
64
+ SQLOutput?: {
65
+ schemaPlaceholders?: {
66
+ schema?: string;
67
+ placeholder?: string;
68
+ }[];
69
+ } & {
70
+ [k: string]: unknown;
71
+ };
30
72
  }, {
31
- dbDatabase: string;
32
- codeGenLogin: string;
33
- codeGenPassword: string;
34
- dbHost?: string | undefined;
35
- dbPort?: number | undefined;
36
- migrationsLocation?: string | undefined;
37
- dbTrustServerCertificate?: boolean | undefined;
38
- coreSchema?: string | undefined;
39
- cleanDisabled?: boolean | undefined;
73
+ dbHost?: string;
74
+ dbDatabase?: string;
75
+ dbPort?: number;
76
+ codeGenLogin?: string;
77
+ codeGenPassword?: string;
78
+ migrationsLocation?: string;
79
+ dbTrustServerCertificate?: boolean;
80
+ coreSchema?: string;
81
+ cleanDisabled?: boolean;
40
82
  mjRepoUrl?: unknown;
41
- baselineVersion?: string | undefined;
42
- baselineOnMigrate?: boolean | undefined;
83
+ baselineVersion?: string;
84
+ baselineOnMigrate?: boolean;
85
+ SQLOutput?: {
86
+ schemaPlaceholders?: {
87
+ schema?: string;
88
+ placeholder?: string;
89
+ }[];
90
+ } & {
91
+ [k: string]: unknown;
92
+ };
43
93
  }>;
44
- export declare const config: {
45
- dbHost: string;
46
- dbDatabase: string;
47
- dbPort: number;
48
- codeGenLogin: string;
49
- codeGenPassword: string;
50
- migrationsLocation: string;
51
- dbTrustServerCertificate: boolean;
52
- coreSchema: string;
53
- cleanDisabled: boolean;
54
- mjRepoUrl: string;
55
- baselineVersion: string;
56
- baselineOnMigrate: boolean;
57
- } | undefined;
94
+ export declare const config: MJConfig | undefined;
58
95
  /**
59
96
  * Get validated config for commands that require database connection.
60
97
  * Throws error if config is invalid.
@@ -72,5 +109,6 @@ export declare const getOptionalConfig: () => Partial<MJConfig> | undefined;
72
109
  */
73
110
  export declare const updatedConfig: () => MJConfig | undefined;
74
111
  export declare const createFlywayUrl: (mjConfig: MJConfig) => string;
75
- export declare const getFlywayConfig: (mjConfig: MJConfig, tag?: string) => Promise<FlywayConfig>;
112
+ export declare const getFlywayConfig: (mjConfig: MJConfig, tag?: string, schema?: string, dir?: string) => Promise<FlywayConfig>;
76
113
  export {};
114
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAI5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AA4CtD,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBlB,CAAC;AAsBH,eAAO,MAAM,MAAM,EAAqB,QAAQ,GAAG,SAAS,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAO,QASrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,SAGxD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,QAAO,QAAQ,GAAG,SAU3C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,UAAU,QAAQ,WAIjD,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,QAAQ,EAClB,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,MAAM,MAAM,KACX,OAAO,CAAC,YAAY,CA6EtB,CAAC"}
package/dist/config.js CHANGED
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFlywayConfig = exports.createFlywayUrl = exports.updatedConfig = exports.getOptionalConfig = exports.getValidatedConfig = exports.config = void 0;
4
- const cosmiconfig_1 = require("cosmiconfig");
5
- const node_fs_1 = require("node:fs");
6
- const node_os_1 = require("node:os");
7
- const simple_git_1 = require("simple-git");
8
- const zod_1 = require("zod");
9
- const config_1 = require("@memberjunction/config");
1
+ import { cosmiconfigSync } from 'cosmiconfig';
2
+ import { mkdtempSync } from 'node:fs';
3
+ import { tmpdir } from 'node:os';
4
+ import { simpleGit } from 'simple-git';
5
+ import { z } from 'zod';
6
+ import { mergeConfigs, parseBooleanEnv } from '@memberjunction/config';
10
7
  const MJ_REPO_URL = 'https://github.com/MemberJunction/MJ.git';
11
8
  /**
12
9
  * Default database configuration for MJCLI.
@@ -16,64 +13,75 @@ const DEFAULT_CLI_CONFIG = {
16
13
  dbHost: process.env.DB_HOST ?? 'localhost',
17
14
  dbPort: process.env.DB_PORT ? parseInt(process.env.DB_PORT) : 1433,
18
15
  dbDatabase: process.env.DB_DATABASE ?? '',
19
- dbTrustServerCertificate: process.env.DB_TRUST_SERVER_CERTIFICATE === 'true' || process.env.DB_TRUST_SERVER_CERTIFICATE === '1',
16
+ dbTrustServerCertificate: parseBooleanEnv(process.env.DB_TRUST_SERVER_CERTIFICATE),
20
17
  codeGenLogin: process.env.CODEGEN_DB_USERNAME ?? '',
21
18
  codeGenPassword: process.env.CODEGEN_DB_PASSWORD ?? '',
22
19
  coreSchema: '__mj',
23
20
  cleanDisabled: true,
24
- baselineVersion: '202601122300',
21
+ baselineVersion: '202602061600',
25
22
  baselineOnMigrate: true,
26
23
  mjRepoUrl: MJ_REPO_URL,
27
24
  migrationsLocation: 'filesystem:./migrations',
28
25
  };
29
- const explorer = (0, cosmiconfig_1.cosmiconfigSync)('mj', { searchStrategy: 'global' });
26
+ const explorer = cosmiconfigSync('mj', { searchStrategy: 'global' });
30
27
  const searchResult = explorer.search(process.cwd());
31
28
  // Merge user config with DEFAULT_CLI_CONFIG to support minimal config
32
29
  // This allows database fields to come from environment variables
33
30
  const mergedConfig = searchResult?.config
34
- ? (0, config_1.mergeConfigs)(DEFAULT_CLI_CONFIG, searchResult.config)
31
+ ? mergeConfigs(DEFAULT_CLI_CONFIG, searchResult.config)
35
32
  : DEFAULT_CLI_CONFIG;
36
33
  // Create a result object with merged config for backward compatibility
37
34
  const result = searchResult
38
35
  ? { ...searchResult, config: mergedConfig }
39
36
  : { config: mergedConfig, filepath: '', isEmpty: false };
37
+ // Schema placeholder configuration for cross-schema references
38
+ const schemaPlaceholderSchema = z.object({
39
+ schema: z.string(),
40
+ placeholder: z.string(),
41
+ });
40
42
  // Schema for database-dependent config (required fields)
41
- const mjConfigSchema = zod_1.z.object({
42
- dbHost: zod_1.z.string().default('localhost'),
43
- dbDatabase: zod_1.z.string(),
44
- dbPort: zod_1.z.number({ coerce: true }).default(1433),
45
- codeGenLogin: zod_1.z.string(),
46
- codeGenPassword: zod_1.z.string(),
47
- migrationsLocation: zod_1.z.string().optional().default('filesystem:./migrations'),
48
- dbTrustServerCertificate: zod_1.z.coerce.boolean().default(false),
49
- coreSchema: zod_1.z.string().optional().default('__mj'),
50
- cleanDisabled: zod_1.z.boolean().optional().default(true),
51
- mjRepoUrl: zod_1.z.string().url().catch(MJ_REPO_URL),
52
- baselineVersion: zod_1.z.string().optional().default('202601122300'),
53
- baselineOnMigrate: zod_1.z.boolean().optional().default(true),
43
+ const mjConfigSchema = z.object({
44
+ dbHost: z.string().default('localhost'),
45
+ dbDatabase: z.string(),
46
+ dbPort: z.number({ coerce: true }).default(1433),
47
+ codeGenLogin: z.string(),
48
+ codeGenPassword: z.string(),
49
+ migrationsLocation: z.string().optional().default('filesystem:./migrations'),
50
+ dbTrustServerCertificate: z.coerce.boolean().default(false),
51
+ coreSchema: z.string().optional().default('__mj'),
52
+ cleanDisabled: z.boolean().optional().default(true),
53
+ mjRepoUrl: z.string().url().catch(MJ_REPO_URL),
54
+ baselineVersion: z.string().optional().default('202602061600'),
55
+ baselineOnMigrate: z.boolean().optional().default(true),
56
+ SQLOutput: z.object({
57
+ schemaPlaceholders: z.array(schemaPlaceholderSchema).optional(),
58
+ }).passthrough().optional(),
54
59
  });
55
60
  // Schema for non-database commands (all fields optional)
56
- const mjConfigSchemaOptional = zod_1.z.object({
57
- dbHost: zod_1.z.string().optional(),
58
- dbDatabase: zod_1.z.string().optional(),
59
- dbPort: zod_1.z.number({ coerce: true }).optional(),
60
- codeGenLogin: zod_1.z.string().optional(),
61
- codeGenPassword: zod_1.z.string().optional(),
62
- migrationsLocation: zod_1.z.string().optional().default('filesystem:./migrations'),
63
- dbTrustServerCertificate: zod_1.z.coerce.boolean().default(false),
64
- coreSchema: zod_1.z.string().optional().default('__mj'),
65
- cleanDisabled: zod_1.z.boolean().optional().default(true),
66
- mjRepoUrl: zod_1.z.string().url().catch(MJ_REPO_URL),
67
- baselineVersion: zod_1.z.string().optional().default('202601122300'),
68
- baselineOnMigrate: zod_1.z.boolean().optional().default(true),
61
+ const mjConfigSchemaOptional = z.object({
62
+ dbHost: z.string().optional(),
63
+ dbDatabase: z.string().optional(),
64
+ dbPort: z.number({ coerce: true }).optional(),
65
+ codeGenLogin: z.string().optional(),
66
+ codeGenPassword: z.string().optional(),
67
+ migrationsLocation: z.string().optional().default('filesystem:./migrations'),
68
+ dbTrustServerCertificate: z.coerce.boolean().default(false),
69
+ coreSchema: z.string().optional().default('__mj'),
70
+ cleanDisabled: z.boolean().optional().default(true),
71
+ mjRepoUrl: z.string().url().catch(MJ_REPO_URL),
72
+ baselineVersion: z.string().optional().default('202602061600'),
73
+ baselineOnMigrate: z.boolean().optional().default(true),
74
+ SQLOutput: z.object({
75
+ schemaPlaceholders: z.array(schemaPlaceholderSchema).optional(),
76
+ }).passthrough().optional(),
69
77
  });
70
78
  // Don't validate at module load - let commands decide when they need validated config
71
- exports.config = result?.config;
79
+ export const config = result?.config;
72
80
  /**
73
81
  * Get validated config for commands that require database connection.
74
82
  * Throws error if config is invalid.
75
83
  */
76
- const getValidatedConfig = () => {
84
+ export const getValidatedConfig = () => {
77
85
  const parsedConfig = mjConfigSchema.safeParse(result?.config);
78
86
  if (!parsedConfig.success) {
79
87
  throw new Error(`Invalid or missing mj.config.cjs file. Database commands require valid configuration.\n` +
@@ -81,59 +89,99 @@ const getValidatedConfig = () => {
81
89
  }
82
90
  return parsedConfig.data;
83
91
  };
84
- exports.getValidatedConfig = getValidatedConfig;
85
92
  /**
86
93
  * Get optional config for commands that don't require database connection.
87
94
  * Returns undefined if no config exists, or partial config if it exists.
88
95
  */
89
- const getOptionalConfig = () => {
96
+ export const getOptionalConfig = () => {
90
97
  const parsedConfig = mjConfigSchemaOptional.safeParse(result?.config);
91
98
  return parsedConfig.success ? parsedConfig.data : undefined;
92
99
  };
93
- exports.getOptionalConfig = getOptionalConfig;
94
100
  /**
95
101
  * Legacy function for backward compatibility with codegen.
96
102
  * Validates and returns updated config.
97
103
  * Returns undefined silently if config is invalid (command will handle the error).
98
104
  */
99
- const updatedConfig = () => {
105
+ export const updatedConfig = () => {
100
106
  const freshSearchResult = explorer.search(process.cwd());
101
107
  // Merge fresh config with DEFAULT_CLI_CONFIG
102
108
  const freshMergedConfig = freshSearchResult?.config
103
- ? (0, config_1.mergeConfigs)(DEFAULT_CLI_CONFIG, freshSearchResult.config)
109
+ ? mergeConfigs(DEFAULT_CLI_CONFIG, freshSearchResult.config)
104
110
  : DEFAULT_CLI_CONFIG;
105
111
  const maybeConfig = mjConfigSchema.safeParse(freshMergedConfig);
106
112
  // Don't log errors here - let the calling command handle validation
107
113
  return maybeConfig.success ? maybeConfig.data : undefined;
108
114
  };
109
- exports.updatedConfig = updatedConfig;
110
- const createFlywayUrl = (mjConfig) => {
115
+ export const createFlywayUrl = (mjConfig) => {
111
116
  return `jdbc:sqlserver://${mjConfig.dbHost}:${mjConfig.dbPort}; databaseName=${mjConfig.dbDatabase}${mjConfig.dbTrustServerCertificate ? '; trustServerCertificate=true' : ''}`;
112
117
  };
113
- exports.createFlywayUrl = createFlywayUrl;
114
- const getFlywayConfig = async (mjConfig, tag) => {
118
+ export const getFlywayConfig = async (mjConfig, tag, schema, dir) => {
119
+ const targetSchema = schema || mjConfig.coreSchema;
115
120
  let location = mjConfig.migrationsLocation;
121
+ if (dir && !tag) {
122
+ location = dir.startsWith('filesystem:') ? dir : `filesystem:${dir}`;
123
+ }
116
124
  if (tag) {
117
125
  // when tag is set, we want to fetch migrations from the github repo using the tag specified
118
126
  // we save those to a tmp dir and set that tmp dir as the migration location
119
- const tmp = (0, node_fs_1.mkdtempSync)((0, node_os_1.tmpdir)());
127
+ const tmp = mkdtempSync(tmpdir());
120
128
  const branch = /v?\d+\.\d+\.\d+/.test(tag) ? (tag.startsWith('v') ? tag : `v${tag}`) : tag;
121
- const git = (0, simple_git_1.simpleGit)(tmp);
129
+ const git = simpleGit(tmp);
122
130
  await git.clone(mjConfig.mjRepoUrl, tmp, ['--sparse', '--depth=1', '--branch', branch]);
123
131
  await git.raw(['sparse-checkout', 'set', 'migrations']);
124
132
  location = `filesystem:${tmp}`;
133
+ if (dir) {
134
+ const subPath = dir.replace(/^filesystem:/, '').replace(/^\.\//, '');
135
+ location = `filesystem:${tmp}/${subPath}`;
136
+ }
137
+ }
138
+ // Build advanced config - only include properties with defined values
139
+ const advancedConfig = {
140
+ schemas: [targetSchema],
141
+ };
142
+ // Only add cleanDisabled if explicitly set to false
143
+ if (mjConfig.cleanDisabled === false) {
144
+ advancedConfig.cleanDisabled = false;
145
+ }
146
+ // Enable custom placeholders for cross-schema references (e.g., BCSaaS → MJ)
147
+ // Uses schemaPlaceholders from mj.config.cjs SQLOutput configuration if available
148
+ // Falls back to legacy behavior (mjSchema placeholder) for backward compatibility
149
+ // NOTE: The Map entries are swapped (value, key) due to a bug in node-flyway's Map.forEach iteration
150
+ const schemaPlaceholders = mjConfig.SQLOutput?.schemaPlaceholders;
151
+ if (schemaPlaceholders && schemaPlaceholders.length > 0) {
152
+ // Use schemaPlaceholders from config (new behavior - supports BCSaaS and other extensions)
153
+ // NOTE: node-flyway seems to hang when placeHolders Map is provided
154
+ // Placeholders will be applied by the diagnostic Flyway CLI call instead
155
+ // advancedConfig.placeHolderReplacement = true;
156
+ // const placeholderMap = new Map();
157
+ //
158
+ // schemaPlaceholders.forEach(({ schema: schemaName, placeholder }) => {
159
+ // const cleanPlaceholder = placeholder.replace(/^\$\{|\}$/g, '');
160
+ // if (cleanPlaceholder.startsWith('flyway:')) return;
161
+ // placeholderMap.set(cleanPlaceholder, schemaName);
162
+ // });
163
+ //
164
+ // if (placeholderMap.size > 0) {
165
+ // advancedConfig.placeHolders = placeholderMap;
166
+ // }
167
+ }
168
+ else if (schema && schema !== mjConfig.coreSchema) {
169
+ // Legacy behavior: Add mjSchema placeholder for non-core schemas
170
+ advancedConfig.placeHolderReplacement = true;
171
+ // Map('mjSchema' => '__mj') generates -placeholders.mjSchema=__mj
172
+ advancedConfig.placeHolders = new Map([['mjSchema', mjConfig.coreSchema]]);
125
173
  }
174
+ // Merge additional required properties into advancedConfig
175
+ advancedConfig.baselineVersion = mjConfig.baselineVersion;
176
+ advancedConfig.baselineOnMigrate = mjConfig.baselineOnMigrate;
126
177
  return {
127
- url: (0, exports.createFlywayUrl)(mjConfig),
178
+ url: createFlywayUrl(mjConfig),
128
179
  user: mjConfig.codeGenLogin,
129
180
  password: mjConfig.codeGenPassword,
181
+ // Note: Flyway uses the first schema in advanced.schemas as the default schema
182
+ // Setting both defaultSchema and schemas causes issues due to node-flyway's filtering logic
130
183
  migrationLocations: [location],
131
- advanced: {
132
- schemas: [mjConfig.coreSchema],
133
- cleanDisabled: mjConfig.cleanDisabled === false ? false : undefined,
134
- baselineVersion: mjConfig.baselineVersion,
135
- baselineOnMigrate: mjConfig.baselineOnMigrate,
136
- },
184
+ advanced: advancedConfig,
137
185
  };
138
186
  };
139
- exports.getFlywayConfig = getFlywayConfig;
187
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -5,3 +5,4 @@ import { Hook } from '@oclif/core';
5
5
  */
6
6
  declare const hook: Hook<'init'>;
7
7
  export default hook;
8
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAInC;;;GAGG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,MAAM,CAItB,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -1,30 +1,5 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const dotenv = __importStar(require("dotenv"));
27
- const path = __importStar(require("path"));
1
+ import * as dotenv from 'dotenv';
2
+ import * as path from 'path';
28
3
  /**
29
4
  * Init hook runs once when the CLI starts up.
30
5
  * Load environment variables from .env file.
@@ -32,6 +7,7 @@ const path = __importStar(require("path"));
32
7
  const hook = async function () {
33
8
  // Load environment variables from .env file in repo root
34
9
  const envPath = path.resolve(process.cwd(), '.env');
35
- dotenv.config({ path: envPath });
10
+ dotenv.config({ path: envPath, quiet: true });
36
11
  };
37
- exports.default = hook;
12
+ export default hook;
13
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;;GAGG;AACH,MAAM,IAAI,GAAiB,KAAK;IAC9B,yDAAyD;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import { Hook } from '@oclif/core';
2
2
  declare const hook: Hook<'prerun'>;
3
3
  export default hook;
4
+ //# sourceMappingURL=prerun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prerun.d.ts","sourceRoot":"","sources":["../../src/hooks/prerun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGnC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,QAAQ,CAqBxB,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -1,16 +1,11 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const figlet_1 = __importDefault(require("figlet"));
1
+ import figlet from 'figlet';
7
2
  const hook = async function (options) {
8
3
  // Skip banners if --quiet flag is present (or appears to be present)
9
4
  if (options.argv?.some((arg) => arg === '--quiet' || (/^-[^-]+/.test(arg) && arg.includes('q')))) {
10
5
  return;
11
6
  }
12
7
  options.context.log(process.stdout.columns >= 81
13
- ? figlet_1.default.textSync('MemberJunction', {
8
+ ? figlet.textSync('MemberJunction', {
14
9
  font: 'Standard',
15
10
  horizontalLayout: 'default',
16
11
  verticalLayout: 'default',
@@ -22,4 +17,5 @@ const hook = async function (options) {
22
17
  options.context.log(options.config.userAgent + '\n');
23
18
  }
24
19
  };
25
- exports.default = hook;
20
+ export default hook;
21
+ //# sourceMappingURL=prerun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prerun.js","sourceRoot":"","sources":["../../src/hooks/prerun.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,IAAI,GAAmB,KAAK,WAAW,OAAO;IAClD,qEAAqE;IACrE,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACjG,OAAO;IACT,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,GAAG,CACjB,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;QAC1B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAChC,IAAI,EAAE,UAAU;YAChB,gBAAgB,EAAE,SAAS;YAC3B,cAAc,EAAE,SAAS;YACzB,KAAK,EAAE,GAAG;YACV,eAAe,EAAE,IAAI;SACtB,CAAC;QACJ,CAAC,CAAC,iCAAiC,CACtC,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export { run } from '@oclif/core';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.run = void 0;
4
- var core_1 = require("@oclif/core");
5
- Object.defineProperty(exports, "run", { enumerable: true, get: function () { return core_1.run; } });
1
+ export { run } from '@oclif/core';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/cli",
3
- "version": "3.3.0",
3
+ "type": "module",
4
+ "version": "4.0.0",
4
5
  "description": "MemberJunction command line tools",
5
6
  "keywords": [
6
7
  "oclif"
@@ -26,7 +27,7 @@
26
27
  "/oclif.manifest.json"
27
28
  ],
28
29
  "scripts": {
29
- "build": "tsc",
30
+ "build": "tsc && tsc-alias -f",
30
31
  "prepack": "npm run build && oclif manifest && oclif readme",
31
32
  "postpack": "rimraf oclif.manifest.json",
32
33
  "version": "oclif readme && git add README.md"
@@ -50,42 +51,43 @@
50
51
  }
51
52
  },
52
53
  "dependencies": {
53
- "@inquirer/prompts": "^5.0.1",
54
- "@memberjunction/ai-cli": "3.3.0",
55
- "@memberjunction/codegen-lib": "3.3.0",
56
- "@memberjunction/config": "3.3.0",
57
- "@memberjunction/core": "3.3.0",
58
- "@memberjunction/db-auto-doc": "3.3.0",
59
- "@memberjunction/metadata-sync": "3.3.0",
60
- "@memberjunction/query-gen": "3.3.0",
61
- "@memberjunction/sqlserver-dataprovider": "3.3.0",
62
- "@memberjunction/testing-cli": "3.3.0",
63
- "@oclif/core": "^3",
64
- "@oclif/plugin-help": "^6",
65
- "@oclif/plugin-version": "^2.0.17",
66
- "@oclif/plugin-warn-if-update-available": "^3.0.16",
54
+ "@inquirer/prompts": "^8.2.0",
55
+ "@memberjunction/ai-cli": "4.0.0",
56
+ "@memberjunction/codegen-lib": "4.0.0",
57
+ "@memberjunction/config": "4.0.0",
58
+ "@memberjunction/core": "4.0.0",
59
+ "@memberjunction/db-auto-doc": "4.0.0",
60
+ "@memberjunction/metadata-sync": "4.0.0",
61
+ "@memberjunction/query-gen": "4.0.0",
62
+ "@memberjunction/server-bootstrap-lite": "4.0.0",
63
+ "@memberjunction/sqlserver-dataprovider": "4.0.0",
64
+ "@memberjunction/testing-cli": "4.0.0",
65
+ "@oclif/core": "^3.27.0",
66
+ "@oclif/plugin-help": "^6.2.37",
67
+ "@oclif/plugin-version": "^2.2.36",
68
+ "@oclif/plugin-warn-if-update-available": "^3.1.55",
67
69
  "ajv": "^8.12.0",
68
- "ajv-formats": "^2.1.1",
69
- "chalk": "^4.1.2",
70
+ "ajv-formats": "^3.0.1",
71
+ "chalk": "^5.6.2",
70
72
  "cosmiconfig": "9.0.0",
71
- "dotenv": "16.4.5",
72
- "fast-glob": "^3.3.2",
73
- "figlet": "^1.7.0",
74
- "fs-extra": "^11.2.0",
73
+ "dotenv": "17.2.4",
74
+ "fast-glob": "^3.3.3",
75
+ "figlet": "^1.10.0",
76
+ "fs-extra": "^11.3.3",
75
77
  "node-flyway": "0.0.13",
76
78
  "ora-classic": "^5.4.2",
77
- "recast": "^0.23.9",
78
- "simple-git": "^3.27.0",
79
- "zod": "^3.23.4"
79
+ "recast": "^0.23.11",
80
+ "simple-git": "^3.30.0",
81
+ "zod": "~3.24.4"
80
82
  },
81
83
  "devDependencies": {
82
84
  "@oclif/prettier-config": "^0.2.1",
83
- "@types/figlet": "^1.5.8",
85
+ "@types/figlet": "^1.7.0",
84
86
  "@types/fs-extra": "^11.0.4",
85
- "oclif": "^4",
86
- "rimraf": "5.0.7",
87
- "ts-node": "^10.9.2",
88
- "typescript": "^5.4.5"
87
+ "oclif": "^4.22.73",
88
+ "rimraf": "6.1.2",
89
+ "tsx": "^4.21.0",
90
+ "typescript": "^5.9.3"
89
91
  },
90
92
  "engines": {
91
93
  "node": ">=20.0.0"