@simplysf/simply-utam-core 0.0.0 → 0.1.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 (64) hide show
  1. package/LICENSE.txt +206 -0
  2. package/README.md +98 -12
  3. package/lib/discovery/index.d.ts +1 -0
  4. package/lib/discovery/index.js +17 -0
  5. package/lib/discovery/index.js.map +1 -0
  6. package/lib/discovery/project-discovery.d.ts +55 -0
  7. package/lib/discovery/project-discovery.js +180 -0
  8. package/lib/discovery/project-discovery.js.map +1 -0
  9. package/lib/index.d.ts +8 -2
  10. package/lib/index.js +8 -2
  11. package/lib/index.js.map +1 -1
  12. package/lib/namespaces/index.d.ts +1 -0
  13. package/lib/namespaces/index.js +17 -0
  14. package/lib/namespaces/index.js.map +1 -0
  15. package/lib/namespaces/namespace-rewriter.d.ts +50 -0
  16. package/lib/namespaces/namespace-rewriter.js +223 -0
  17. package/lib/namespaces/namespace-rewriter.js.map +1 -0
  18. package/lib/navigator.d.ts +133 -5
  19. package/lib/navigator.js +224 -12
  20. package/lib/navigator.js.map +1 -1
  21. package/lib/overrides/index.d.ts +1 -0
  22. package/lib/overrides/index.js +17 -0
  23. package/lib/overrides/index.js.map +1 -0
  24. package/lib/overrides/overrides-merger.d.ts +63 -0
  25. package/lib/overrides/overrides-merger.js +280 -0
  26. package/lib/overrides/overrides-merger.js.map +1 -0
  27. package/lib/rules/index.d.ts +1 -0
  28. package/lib/rules/index.js +17 -0
  29. package/lib/rules/index.js.map +1 -0
  30. package/lib/rules/rules-generator.d.ts +49 -0
  31. package/lib/rules/rules-generator.js +199 -0
  32. package/lib/rules/rules-generator.js.map +1 -0
  33. package/lib/scaffold/index.d.ts +1 -0
  34. package/lib/scaffold/index.js +17 -0
  35. package/lib/scaffold/index.js.map +1 -0
  36. package/lib/scaffold/project-scaffolder.d.ts +148 -0
  37. package/lib/scaffold/project-scaffolder.js +313 -0
  38. package/lib/scaffold/project-scaffolder.js.map +1 -0
  39. package/lib/steps/expression-matcher.d.ts +42 -0
  40. package/lib/steps/expression-matcher.js +106 -0
  41. package/lib/steps/expression-matcher.js.map +1 -0
  42. package/lib/steps/gherkin-parser.d.ts +27 -0
  43. package/lib/steps/gherkin-parser.js +98 -0
  44. package/lib/steps/gherkin-parser.js.map +1 -0
  45. package/lib/steps/index.d.ts +4 -0
  46. package/lib/steps/index.js +20 -0
  47. package/lib/steps/index.js.map +1 -0
  48. package/lib/steps/snippet-generator.d.ts +34 -0
  49. package/lib/steps/snippet-generator.js +101 -0
  50. package/lib/steps/snippet-generator.js.map +1 -0
  51. package/lib/steps/step-scaffolder.d.ts +49 -0
  52. package/lib/steps/step-scaffolder.js +225 -0
  53. package/lib/steps/step-scaffolder.js.map +1 -0
  54. package/lib/test-environment.d.ts +99 -4
  55. package/lib/test-environment.js +302 -4
  56. package/lib/test-environment.js.map +1 -1
  57. package/package.json +34 -4
  58. package/templates/generator.config.json +13 -0
  59. package/templates/hello.feature +4 -0
  60. package/templates/hello.steps.mjs +7 -0
  61. package/templates/namespace-map.json +3 -0
  62. package/templates/utam.config.json +9 -0
  63. package/templates/wdio.conf.mjs +68 -0
  64. package/templates/wireit.json +37 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides-merger.js","sourceRoot":"","sources":["../../src/overrides/overrides-merger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './rules-generator.js';
@@ -0,0 +1,17 @@
1
+ /*
2
+ * Copyright (c) 2026, SimplySF.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export * from './rules-generator.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,49 @@
1
+ export declare const ROOT_TARGETS: readonly ["lightningCommunity__Page", "lightning__AppPage", "lightning__HomePage", "lightning__RecordPage"];
2
+ export interface GenerateRulesOptions {
3
+ rootDir?: string;
4
+ sourceDirs?: string[];
5
+ namespace?: string;
6
+ dryRun?: boolean;
7
+ verbose?: boolean;
8
+ }
9
+ export interface RuleAction {
10
+ componentName: string;
11
+ componentDir: string;
12
+ rulesFilePath: string;
13
+ selector: string;
14
+ action: 'created' | 'updated' | 'skipped';
15
+ reason?: string;
16
+ }
17
+ export interface GenerateRulesResult {
18
+ totalComponentsScanned: number;
19
+ rootComponentsIdentified: number;
20
+ filesCreated: string[];
21
+ filesUpdated: string[];
22
+ dryRun: boolean;
23
+ actions: RuleAction[];
24
+ }
25
+ /**
26
+ * Converts camelCase or PascalCase component name to kebab-case HTML tag with namespace prefix.
27
+ * e.g., myComponent -> c-my-component, sampleHome with namespace 'custom' -> custom-sample-home
28
+ *
29
+ * @param componentName - The LWC component name.
30
+ * @param namespace - Optional packaging namespace.
31
+ * @returns Kebab-cased HTML tag name.
32
+ */
33
+ export declare function convertLwcNameToHtml(componentName: string, namespace?: string | null): string;
34
+ /**
35
+ * Parses targets inside <targets>...</targets> block in a js-meta.xml content,
36
+ * stripping XML comments to avoid matching commented-out targets.
37
+ *
38
+ * @param xmlContent - Raw XML content string of the js-meta.xml file.
39
+ * @returns Array of target string identifiers.
40
+ */
41
+ export declare function getTargetsFromMeta(xmlContent: string): string[];
42
+ /**
43
+ * Scans discovered LWC components, identifies root targets, and creates or updates
44
+ * <componentName>.rules.json files.
45
+ *
46
+ * @param options - Rules generation options.
47
+ * @returns Results describing scanned components and generated rules files.
48
+ */
49
+ export declare function generateLwcRules(options?: GenerateRulesOptions): GenerateRulesResult;
@@ -0,0 +1,199 @@
1
+ /*
2
+ * Copyright (c) 2026, SimplySF.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import fs from 'node:fs';
17
+ import path from 'node:path';
18
+ import { discoverProject, findLwcDirectories } from '../discovery/index.js';
19
+ export const ROOT_TARGETS = [
20
+ 'lightningCommunity__Page',
21
+ 'lightning__AppPage',
22
+ 'lightning__HomePage',
23
+ 'lightning__RecordPage',
24
+ ];
25
+ /**
26
+ * Converts camelCase or PascalCase component name to kebab-case HTML tag with namespace prefix.
27
+ * e.g., myComponent -> c-my-component, sampleHome with namespace 'custom' -> custom-sample-home
28
+ *
29
+ * @param componentName - The LWC component name.
30
+ * @param namespace - Optional packaging namespace.
31
+ * @returns Kebab-cased HTML tag name.
32
+ */
33
+ export function convertLwcNameToHtml(componentName, namespace) {
34
+ if (!componentName?.trim()) {
35
+ return '';
36
+ }
37
+ const cleanName = componentName.trim();
38
+ let kebab = cleanName.replace(/([A-Z])/g, '-$1').toLowerCase();
39
+ if (kebab.startsWith('-')) {
40
+ kebab = kebab.substring(1);
41
+ }
42
+ const prefix = namespace?.trim() ? namespace.trim() : 'c';
43
+ return `${prefix}-${kebab}`;
44
+ }
45
+ /**
46
+ * Parses targets inside <targets>...</targets> block in a js-meta.xml content,
47
+ * stripping XML comments to avoid matching commented-out targets.
48
+ *
49
+ * @param xmlContent - Raw XML content string of the js-meta.xml file.
50
+ * @returns Array of target string identifiers.
51
+ */
52
+ export function getTargetsFromMeta(xmlContent) {
53
+ // Strip XML comments
54
+ const cleanXml = xmlContent.replace(/<!--[\s\S]*?-->/g, '');
55
+ const targetsMatch = cleanXml.match(/<targets(?:\s[^>]*)?>([\s\S]*?)<\/targets>/);
56
+ if (!targetsMatch) {
57
+ return [];
58
+ }
59
+ const targetsSection = targetsMatch[1];
60
+ const targetMatches = [...targetsSection.matchAll(/<target(?:\s[^>]*)?>([\s\S]*?)<\/target>/g)];
61
+ return targetMatches.map((match) => match[1].trim()).filter(Boolean);
62
+ }
63
+ function processComponentRules(componentDir, componentName, namespace, dryRun) {
64
+ const rulesFilePath = path.join(componentDir, `${componentName}.rules.json`);
65
+ const metaFilePath = path.join(componentDir, `${componentName}.js-meta.xml`);
66
+ if (!fs.existsSync(metaFilePath)) {
67
+ return {
68
+ componentName,
69
+ componentDir,
70
+ rulesFilePath,
71
+ selector: '',
72
+ action: 'skipped',
73
+ reason: 'Missing js-meta.xml file',
74
+ };
75
+ }
76
+ let xmlContent;
77
+ try {
78
+ xmlContent = fs.readFileSync(metaFilePath, 'utf-8');
79
+ }
80
+ catch {
81
+ return {
82
+ componentName,
83
+ componentDir,
84
+ rulesFilePath,
85
+ selector: '',
86
+ action: 'skipped',
87
+ reason: 'Failed to read js-meta.xml file',
88
+ };
89
+ }
90
+ const targets = getTargetsFromMeta(xmlContent);
91
+ const isRoot = targets.some((target) => ROOT_TARGETS.includes(target));
92
+ if (!isRoot) {
93
+ return {
94
+ componentName,
95
+ componentDir,
96
+ rulesFilePath,
97
+ selector: '',
98
+ action: 'skipped',
99
+ reason: `Not a root component (targets: ${targets.join(', ') || 'none'})`,
100
+ };
101
+ }
102
+ const selector = convertLwcNameToHtml(componentName, namespace);
103
+ let rulesJson = {};
104
+ let isExisting = false;
105
+ if (fs.existsSync(rulesFilePath)) {
106
+ isExisting = true;
107
+ try {
108
+ rulesJson = JSON.parse(fs.readFileSync(rulesFilePath, 'utf-8'));
109
+ }
110
+ catch {
111
+ rulesJson = {};
112
+ }
113
+ }
114
+ rulesJson.root = true;
115
+ if (!rulesJson.selector || typeof rulesJson.selector !== 'object') {
116
+ rulesJson.selector = {};
117
+ }
118
+ rulesJson.selector.css = selector;
119
+ if (!dryRun) {
120
+ const jsonString = JSON.stringify(rulesJson, null, 2) + '\n';
121
+ fs.writeFileSync(rulesFilePath, jsonString, 'utf-8');
122
+ }
123
+ return {
124
+ componentName,
125
+ componentDir,
126
+ rulesFilePath,
127
+ selector,
128
+ action: isExisting ? 'updated' : 'created',
129
+ };
130
+ }
131
+ function scanLwcDirRules(lwcDir, namespace, dryRun, result) {
132
+ let entries;
133
+ try {
134
+ entries = fs.readdirSync(lwcDir, { withFileTypes: true });
135
+ }
136
+ catch {
137
+ return;
138
+ }
139
+ for (const entry of entries) {
140
+ if (!entry.isDirectory()) {
141
+ continue;
142
+ }
143
+ const componentName = entry.name;
144
+ if (componentName.startsWith('.') || componentName === '__tests__') {
145
+ continue;
146
+ }
147
+ result.totalComponentsScanned++;
148
+ const action = processComponentRules(path.join(lwcDir, componentName), componentName, namespace, dryRun);
149
+ if (action.action === 'created') {
150
+ result.rootComponentsIdentified++;
151
+ result.filesCreated.push(action.rulesFilePath);
152
+ }
153
+ else if (action.action === 'updated') {
154
+ result.rootComponentsIdentified++;
155
+ result.filesUpdated.push(action.rulesFilePath);
156
+ }
157
+ result.actions.push(action);
158
+ }
159
+ }
160
+ /**
161
+ * Scans discovered LWC components, identifies root targets, and creates or updates
162
+ * <componentName>.rules.json files.
163
+ *
164
+ * @param options - Rules generation options.
165
+ * @returns Results describing scanned components and generated rules files.
166
+ */
167
+ export function generateLwcRules(options = {}) {
168
+ const rootDir = path.resolve(options.rootDir ?? process.cwd());
169
+ const dryRun = Boolean(options.dryRun);
170
+ let sourceDirs = options.sourceDirs;
171
+ let namespace = options.namespace;
172
+ if (!sourceDirs || sourceDirs.length === 0 || namespace === undefined) {
173
+ const discovered = discoverProject(rootDir);
174
+ if (!sourceDirs || sourceDirs.length === 0) {
175
+ sourceDirs = discovered.packageDirectories.length > 0 ? discovered.packageDirectories : ['./sfdx-source'];
176
+ }
177
+ namespace ??= discovered.namespace ?? undefined;
178
+ }
179
+ const result = {
180
+ totalComponentsScanned: 0,
181
+ rootComponentsIdentified: 0,
182
+ filesCreated: [],
183
+ filesUpdated: [],
184
+ dryRun,
185
+ actions: [],
186
+ };
187
+ for (const sourceDir of sourceDirs) {
188
+ const resolvedSource = path.isAbsolute(sourceDir) ? sourceDir : path.resolve(rootDir, sourceDir);
189
+ if (!fs.existsSync(resolvedSource)) {
190
+ continue;
191
+ }
192
+ const lwcDirs = findLwcDirectories(resolvedSource);
193
+ for (const lwcDir of lwcDirs) {
194
+ scanLwcDirRules(lwcDir, namespace, dryRun, result);
195
+ }
196
+ }
197
+ return result;
198
+ }
199
+ //# sourceMappingURL=rules-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-generator.js","sourceRoot":"","sources":["../../src/rules/rules-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './project-scaffolder.js';
@@ -0,0 +1,17 @@
1
+ /*
2
+ * Copyright (c) 2026, SimplySF.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export * from './project-scaffolder.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scaffold/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Default location of external scaffold template files.
3
+ * Resolves to the templates directory in @simplysf/simply-utam-core whether in src or lib.
4
+ */
5
+ export declare const DEFAULT_TEMPLATES_DIR: string;
6
+ /**
7
+ * Standard recommended devDependencies for consuming UTAM with SimplyUTAM.
8
+ */
9
+ export declare const DEFAULT_REQUIRED_DEV_DEPENDENCIES: string[];
10
+ /**
11
+ * Options for project scaffolding.
12
+ */
13
+ export interface ScaffoldOptions {
14
+ /**
15
+ * Root directory of the consumer project. Defaults to current working directory.
16
+ */
17
+ projectDir?: string;
18
+ /**
19
+ * Primary Salesforce source directory. If not specified, automatically detected from sfdx-project.json.
20
+ */
21
+ sourceDir?: string;
22
+ /**
23
+ * Application name / namespace used in UTAM generator namespaces and namespace maps.
24
+ */
25
+ appName?: string;
26
+ /**
27
+ * Directory containing external template files. Defaults to the package's templates/ folder.
28
+ */
29
+ templatesDir?: string;
30
+ /**
31
+ * If true, previews planned file changes without writing to disk.
32
+ */
33
+ dryRun?: boolean;
34
+ /**
35
+ * If true, forces overwriting of existing config files.
36
+ */
37
+ force?: boolean;
38
+ }
39
+ /**
40
+ * Result details from executing project scaffolding.
41
+ */
42
+ export interface ScaffoldResult {
43
+ /**
44
+ * Paths of files newly created on disk.
45
+ */
46
+ createdFiles: string[];
47
+ /**
48
+ * Paths of existing files that were preserved without overwrite.
49
+ */
50
+ skippedFiles: string[];
51
+ /**
52
+ * Paths of existing files that were updated (such as package.json).
53
+ */
54
+ modifiedFiles: string[];
55
+ /**
56
+ * The updated package.json representation, if modified.
57
+ */
58
+ updatedPackageJson?: Record<string, unknown>;
59
+ /**
60
+ * List of recommended devDependencies missing from the consumer's package.json.
61
+ */
62
+ missingDependencies: string[];
63
+ }
64
+ /**
65
+ * Loads an external template file from disk, performing token replacements.
66
+ *
67
+ * @param templateName - The filename of the template to load.
68
+ * @param templatesDir - The directory containing template files.
69
+ * @param tokens - Key-value replacements for {{token}} placeholders.
70
+ * @returns The resolved template content string.
71
+ * @throws If the template file does not exist.
72
+ */
73
+ export declare function loadTemplate(templateName: string, templatesDir?: string, tokens?: Record<string, string>): string;
74
+ /**
75
+ * Generates the generator.config.json content by loading its external template.
76
+ *
77
+ * @param sourceDir - The Salesforce source directory.
78
+ * @param appName - The application namespace name.
79
+ * @param templatesDir - Optional custom directory containing the template file.
80
+ * @returns Parsed JSON object for generator.config.json.
81
+ */
82
+ export declare function generateGeneratorConfig(sourceDir: string, appName: string, templatesDir?: string): Record<string, unknown>;
83
+ /**
84
+ * Generates the utam.config.json content by loading its external template.
85
+ *
86
+ * @param templatesDir - Optional custom directory containing the template file.
87
+ * @returns Parsed JSON object for utam.config.json.
88
+ */
89
+ export declare function generateUtamConfig(templatesDir?: string): Record<string, unknown>;
90
+ /**
91
+ * Generates the wdio.conf.mjs configuration script content by loading its external template.
92
+ *
93
+ * @param sourceDir - The primary Salesforce source directory.
94
+ * @param templatesDir - Optional custom directory containing the template file.
95
+ * @returns Formatted JavaScript module text for wdio.conf.mjs.
96
+ */
97
+ export declare function generateWdioConfig(sourceDir: string, templatesDir?: string): string;
98
+ /**
99
+ * Generates the .utam/namespace-map.json content by loading its external template.
100
+ *
101
+ * @param appName - The application namespace name.
102
+ * @param templatesDir - Optional custom directory containing the template file.
103
+ * @returns Parsed JSON object for namespace-map.json.
104
+ */
105
+ export declare function generateNamespaceMap(appName: string, templatesDir?: string): Record<string, unknown>;
106
+ /**
107
+ * Generates the hello.feature starter Gherkin feature file content by loading its external template.
108
+ *
109
+ * @param templatesDir - Optional custom directory containing the template file.
110
+ * @returns Formatted Gherkin feature file text for hello.feature.
111
+ */
112
+ export declare function generateHelloFeature(templatesDir?: string): string;
113
+ /**
114
+ * Generates the hello.steps.mjs starter Cucumber step definition script content by loading its external template.
115
+ *
116
+ * @param templatesDir - Optional custom directory containing the template file.
117
+ * @returns Formatted JavaScript module text for hello.steps.mjs.
118
+ */
119
+ export declare function generateHelloSteps(templatesDir?: string): string;
120
+ /**
121
+ * Non-destructively injects standard UTAM Wireit scripts and task configurations into a package.json object.
122
+ * Loads task definitions from external wireit.json template.
123
+ *
124
+ * @param packageJson - The existing package.json object.
125
+ * @param templatesDir - Optional custom directory containing the template file.
126
+ * @returns An object containing the modified package.json and lists of added keys.
127
+ */
128
+ export declare function injectWireitConfiguration(packageJson: Record<string, unknown>, templatesDir?: string): {
129
+ updated: boolean;
130
+ packageJson: Record<string, unknown>;
131
+ addedScripts: string[];
132
+ addedTasks: string[];
133
+ };
134
+ /**
135
+ * Checks a package.json object for missing recommended devDependencies.
136
+ *
137
+ * @param packageJson - The target package.json object.
138
+ * @param requiredDependencies - Optional list of required dependency names.
139
+ * @returns Array of dependency names missing from both devDependencies and dependencies.
140
+ */
141
+ export declare function checkMissingDependencies(packageJson: Record<string, unknown>, requiredDependencies?: string[]): string[];
142
+ /**
143
+ * Scaffolds standard UTAM configurations, Wireit tasks, and namespace maps in a project directory.
144
+ *
145
+ * @param options - Scaffolding options.
146
+ * @returns Results describing created, skipped, and modified files.
147
+ */
148
+ export declare function scaffoldProject(options?: ScaffoldOptions): Promise<ScaffoldResult>;