Skip to content

Commit 2f104f9

Browse files
committed
detect pwa kit extensible project
1 parent a8460da commit 2f104f9

2 files changed

Lines changed: 25 additions & 18 deletions

File tree

packages/b2c-tooling-sdk/src/discovery/patterns/pwa-kit.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ export const pwaKitV3Pattern: DetectionPattern = {
3333

3434
// Template copy flavor: @salesforce/pwa-kit-* packages
3535
// Extensible flavor: @salesforce/retail-react-app package
36-
return deps.some(
37-
(dep) => dep.startsWith('@salesforce/pwa-kit') || dep === '@salesforce/retail-react-app'
38-
);
36+
return deps.some((dep) => dep.startsWith('@salesforce/pwa-kit') || dep === '@salesforce/retail-react-app');
3937
},
4038
};

packages/b2c-tooling-sdk/test/discovery/detector.test.ts

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ describe('discovery/detector', () => {
3232
describe('detect', () => {
3333
it('returns empty arrays when no patterns match', async () => {
3434
const detector = new WorkspaceTypeDetector('/test/path', {
35-
patterns: [createMockPattern('no-match-1', 'pwa-kit', false), createMockPattern('no-match-2', 'sfra', false)],
35+
patterns: [
36+
createMockPattern('no-match-1', 'pwa-kit-v3', false),
37+
createMockPattern('no-match-2', 'sfra', false),
38+
],
3639
});
3740

3841
const result = await detector.detect();
@@ -44,24 +47,30 @@ describe('discovery/detector', () => {
4447

4548
it('returns matched project types and pattern names', async () => {
4649
const detector = new WorkspaceTypeDetector('/test/path', {
47-
patterns: [createMockPattern('pwa-kit', 'pwa-kit', true), createMockPattern('sfra-cartridge', 'sfra', false)],
50+
patterns: [
51+
createMockPattern('pwa-kit-v3', 'pwa-kit-v3', true),
52+
createMockPattern('sfra-cartridge', 'sfra', false),
53+
],
4854
});
4955

5056
const result = await detector.detect();
5157

52-
expect(result.projectTypes).to.deep.equal(['pwa-kit']);
53-
expect(result.matchedPatterns).to.deep.equal(['pwa-kit']);
58+
expect(result.projectTypes).to.deep.equal(['pwa-kit-v3']);
59+
expect(result.matchedPatterns).to.deep.equal(['pwa-kit-v3']);
5460
});
5561

5662
it('returns multiple project types when multiple patterns match', async () => {
5763
const detector = new WorkspaceTypeDetector('/test/path', {
58-
patterns: [createMockPattern('pwa-kit', 'pwa-kit', true), createMockPattern('dw-json', 'headless', true)],
64+
patterns: [
65+
createMockPattern('pwa-kit-v3', 'pwa-kit-v3', true),
66+
createMockPattern('dw-json', 'headless', true),
67+
],
5968
});
6069

6170
const result = await detector.detect();
6271

63-
expect(result.projectTypes).to.deep.equal(['pwa-kit', 'headless']);
64-
expect(result.matchedPatterns).to.deep.equal(['pwa-kit', 'dw-json']);
72+
expect(result.projectTypes).to.deep.equal(['pwa-kit-v3', 'headless']);
73+
expect(result.matchedPatterns).to.deep.equal(['pwa-kit-v3', 'dw-json']);
6574
});
6675

6776
it('deduplicates project types when multiple patterns match same type', async () => {
@@ -78,7 +87,7 @@ describe('discovery/detector', () => {
7887
it('skips patterns that throw errors', async () => {
7988
const detector = new WorkspaceTypeDetector('/test/path', {
8089
patterns: [
81-
createMockPattern('error-pattern', 'pwa-kit', new Error('Test error')),
90+
createMockPattern('error-pattern', 'pwa-kit-v3', new Error('Test error')),
8291
createMockPattern('good-pattern', 'sfra', true),
8392
],
8493
});
@@ -92,22 +101,22 @@ describe('discovery/detector', () => {
92101
it('preserves pattern order in results', async () => {
93102
const detector = new WorkspaceTypeDetector('/test/path', {
94103
patterns: [
95-
createMockPattern('first', 'pwa-kit', true),
104+
createMockPattern('first', 'pwa-kit-v3', true),
96105
createMockPattern('second', 'sfra', true),
97106
createMockPattern('third', 'custom-api', true),
98107
],
99108
});
100109

101110
const result = await detector.detect();
102111

103-
expect(result.projectTypes).to.deep.equal(['pwa-kit', 'sfra', 'custom-api']);
112+
expect(result.projectTypes).to.deep.equal(['pwa-kit-v3', 'sfra', 'custom-api']);
104113
expect(result.matchedPatterns).to.deep.equal(['first', 'second', 'third']);
105114
});
106115
});
107116

108117
describe('pattern resolution', () => {
109118
it('uses custom patterns when provided', async () => {
110-
const customPattern = createMockPattern('custom', 'pwa-kit', true);
119+
const customPattern = createMockPattern('custom', 'pwa-kit-v3', true);
111120
const detector = new WorkspaceTypeDetector('/test/path', {
112121
patterns: [customPattern],
113122
});
@@ -131,7 +140,7 @@ describe('discovery/detector', () => {
131140

132141
it('excludes patterns by name', async () => {
133142
const detector = new WorkspaceTypeDetector('/test/path', {
134-
patterns: [createMockPattern('keep-me', 'pwa-kit', true), createMockPattern('exclude-me', 'sfra', true)],
143+
patterns: [createMockPattern('keep-me', 'pwa-kit-v3', true), createMockPattern('exclude-me', 'sfra', true)],
135144
excludePatterns: ['exclude-me'],
136145
});
137146

@@ -143,7 +152,7 @@ describe('discovery/detector', () => {
143152

144153
it('combines additionalPatterns and excludePatterns', async () => {
145154
const detector = new WorkspaceTypeDetector('/test/path', {
146-
patterns: [createMockPattern('base-1', 'pwa-kit', true), createMockPattern('base-2', 'sfra', true)],
155+
patterns: [createMockPattern('base-1', 'pwa-kit-v3', true), createMockPattern('base-2', 'sfra', true)],
147156
additionalPatterns: [createMockPattern('added', 'custom-api', true)],
148157
excludePatterns: ['base-2'],
149158
});
@@ -160,10 +169,10 @@ describe('discovery/detector', () => {
160169
describe('detectWorkspaceType', () => {
161170
it('is a convenience function that returns detection result', async () => {
162171
const result = await detectWorkspaceType('/nonexistent/path', {
163-
patterns: [createMockPattern('test', 'pwa-kit', true)],
172+
patterns: [createMockPattern('test', 'pwa-kit-v3', true)],
164173
});
165174

166-
expect(result.projectTypes).to.deep.equal(['pwa-kit']);
175+
expect(result.projectTypes).to.deep.equal(['pwa-kit-v3']);
167176
expect(result.matchedPatterns).to.deep.equal(['test']);
168177
expect(result.autoDiscovered).to.equal(true);
169178
});

0 commit comments

Comments
 (0)