@servicetitan/startup 27.3.0 → 27.4.0-canary.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.
- package/dist/cli/commands/get-branch-configs.d.ts +4 -0
- package/dist/cli/commands/get-branch-configs.d.ts.map +1 -0
- package/dist/cli/commands/get-branch-configs.js +13 -0
- package/dist/cli/commands/get-branch-configs.js.map +1 -0
- package/dist/cli/commands/get-command.d.ts.map +1 -1
- package/dist/cli/commands/get-command.js +4 -2
- package/dist/cli/commands/get-command.js.map +1 -1
- package/dist/cli/commands/init.d.ts +0 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +39 -9
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mfe-package-clean.d.ts +13 -0
- package/dist/cli/commands/mfe-package-clean.d.ts.map +1 -0
- package/dist/cli/commands/mfe-package-clean.js +113 -0
- package/dist/cli/commands/mfe-package-clean.js.map +1 -0
- package/dist/cli/commands/mfe-package-publish.d.ts +20 -0
- package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -0
- package/dist/cli/commands/mfe-package-publish.js +153 -0
- package/dist/cli/commands/mfe-package-publish.js.map +1 -0
- package/dist/cli/commands/mfe-publish.d.ts +4 -29
- package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
- package/dist/cli/commands/mfe-publish.js +1 -213
- package/dist/cli/commands/mfe-publish.js.map +1 -1
- package/dist/cli/commands/styles-check.js +2 -1
- package/dist/cli/commands/styles-check.js.map +1 -1
- package/dist/cli/utils/assets-copy.d.ts.map +1 -1
- package/dist/cli/utils/assets-copy.js +3 -3
- package/dist/cli/utils/assets-copy.js.map +1 -1
- package/dist/cli/utils/bundle.d.ts.map +1 -1
- package/dist/cli/utils/bundle.js +10 -11
- package/dist/cli/utils/bundle.js.map +1 -1
- package/dist/cli/utils/cli-os.d.ts +9 -2
- package/dist/cli/utils/cli-os.d.ts.map +1 -1
- package/dist/cli/utils/cli-os.js +16 -8
- package/dist/cli/utils/cli-os.js.map +1 -1
- package/dist/cli/utils/styles-copy.d.ts.map +1 -1
- package/dist/cli/utils/styles-copy.js +3 -3
- package/dist/cli/utils/styles-copy.js.map +1 -1
- package/dist/utils/get-configuration.d.ts +2 -1
- package/dist/utils/get-configuration.d.ts.map +1 -1
- package/dist/utils/get-configuration.js +5 -0
- package/dist/utils/get-configuration.js.map +1 -1
- package/dist/utils/get-folders.js +2 -2
- package/dist/utils/get-folders.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/webpack/configs/dev-server-config.d.ts.map +1 -1
- package/dist/webpack/configs/dev-server-config.js +4 -1
- package/dist/webpack/configs/dev-server-config.js.map +1 -1
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts.map +1 -1
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js +3 -9
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/virtual-modules-plugin.d.ts.map +1 -1
- package/dist/webpack/configs/plugins/virtual-modules-plugin.js +15 -5
- package/dist/webpack/configs/plugins/virtual-modules-plugin.js.map +1 -1
- package/dist/webpack/configs/types.d.ts +18 -1
- package/dist/webpack/configs/types.d.ts.map +1 -1
- package/dist/webpack/configs/utils/generate-metadata.d.ts.map +1 -1
- package/dist/webpack/configs/utils/generate-metadata.js +3 -3
- package/dist/webpack/configs/utils/generate-metadata.js.map +1 -1
- package/dist/webpack/create-webpack-config.d.ts.map +1 -1
- package/dist/webpack/create-webpack-config.js +2 -1
- package/dist/webpack/create-webpack-config.js.map +1 -1
- package/package.json +10 -15
- package/src/cli/commands/__tests__/init.test.ts +108 -28
- package/src/cli/commands/__tests__/mfe-package-clean.test.ts +1 -1
- package/src/cli/commands/__tests__/mfe-package-publish.test.ts +77 -7
- package/src/cli/commands/__tests__/styles-check.test.ts +5 -1
- package/src/cli/commands/get-branch-configs.ts +8 -0
- package/src/cli/commands/get-command.ts +3 -1
- package/src/cli/commands/init.ts +40 -10
- package/src/cli/commands/mfe-package-clean.ts +132 -0
- package/src/cli/commands/mfe-package-publish.ts +189 -0
- package/src/cli/commands/mfe-publish.ts +5 -294
- package/src/cli/commands/styles-check.ts +1 -1
- package/src/cli/utils/__tests__/assets-copy.test.ts +3 -7
- package/src/cli/utils/__tests__/bundle.test.ts +45 -7
- package/src/cli/utils/__tests__/cli-os.test.ts +41 -6
- package/src/cli/utils/__tests__/styles-copy.test.ts +3 -7
- package/src/cli/utils/assets-copy.ts +3 -3
- package/src/cli/utils/bundle.ts +14 -20
- package/src/cli/utils/cli-os.ts +20 -8
- package/src/cli/utils/styles-copy.ts +3 -3
- package/src/utils/__tests__/get-configuration.test.ts +6 -0
- package/src/utils/get-configuration.ts +6 -1
- package/src/utils/get-folders.ts +1 -1
- package/src/utils/index.ts +0 -1
- package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +5 -1
- package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +47 -13
- package/src/webpack/__tests__/create-webpack-config.test.ts +15 -2
- package/src/webpack/configs/dev-server-config.ts +7 -2
- package/src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts +6 -15
- package/src/webpack/configs/plugins/virtual-modules-plugin.ts +17 -5
- package/src/webpack/configs/types.ts +21 -1
- package/src/webpack/configs/utils/generate-metadata.ts +5 -5
- package/src/webpack/create-webpack-config.ts +1 -1
- package/dist/utils/load-shared-dependencies.d.ts +0 -2
- package/dist/utils/load-shared-dependencies.d.ts.map +0 -1
- package/dist/utils/load-shared-dependencies.js +0 -34
- package/dist/utils/load-shared-dependencies.js.map +0 -1
- package/src/utils/__tests__/load-shared-dependencies.test.ts +0 -114
- package/src/utils/load-shared-dependencies.ts +0 -38
- package/template/.eslintrc.json +0 -3
- package/template/.gitignore +0 -21
- package/template/.npmrc +0 -3
- package/template/.prettierrc +0 -9
- package/template/.stylelintignore +0 -1
- package/template/.stylelintrc.json +0 -3
- package/template/.vscode/extensions.json +0 -18
- package/template/.vscode/settings.json +0 -4
- package/template/lerna.json +0 -4
- package/template/package.json +0 -32
- package/template/packages/application/package.json +0 -35
- package/template/packages/application/src/__tests__/app.test.tsx +0 -33
- package/template/packages/application/src/app.css +0 -3
- package/template/packages/application/src/app.tsx +0 -45
- package/template/packages/application/src/design-system.css +0 -3
- package/template/packages/application/src/index.tsx +0 -8
- package/template/packages/application/src/main-page.tsx +0 -5
- package/template/packages/application/src/second-page.tsx +0 -5
- package/template/packages/application/tsconfig.json +0 -13
- package/template/packages/feature-a/package.json +0 -19
- package/template/packages/feature-a/src/index.ts +0 -0
- package/template/packages/feature-a/tsconfig.json +0 -9
- package/template/packages/feature-b/package.json +0 -19
- package/template/packages/feature-b/src/index.ts +0 -0
- package/template/packages/feature-b/tsconfig.json +0 -9
- package/template/packages/feature-c/package.json +0 -19
- package/template/packages/feature-c/src/index.ts +0 -0
- package/template/packages/feature-c/tsconfig.json +0 -9
- package/template/setupTests.ts +0 -27
- package/template/tsconfig.test.json +0 -5
- package/template-react18/packages/application/package.json +0 -35
- package/template-react18/packages/application/src/index.tsx +0 -9
- package/template-react18/packages/feature-a/package.json +0 -19
- package/template-react18/packages/feature-b/package.json +0 -19
- package/template-react18/packages/feature-c/package.json +0 -19
- package/tsconfig.json +0 -13
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { loadSharedDependencies } from '../load-shared-dependencies';
|
|
2
|
-
|
|
3
|
-
describe('[Startup] utils:loadSharedDependencies', () => {
|
|
4
|
-
const getPackageDependencies = (...excluded: string[]) =>
|
|
5
|
-
Object.entries({
|
|
6
|
-
'@servicetitan/confirm': '^0.0.0',
|
|
7
|
-
'@servicetitan/design-system': '^0.0.0',
|
|
8
|
-
'classnames': '^0.0.0',
|
|
9
|
-
'formstate': '^0.0.0',
|
|
10
|
-
'mobx': '^0.0.0',
|
|
11
|
-
'mobx-react': '^0.0.0',
|
|
12
|
-
'mobx-utils': '^0.0.0',
|
|
13
|
-
'react': '^0.0.0',
|
|
14
|
-
'react-dom': '^0.0.0',
|
|
15
|
-
'react-input-mask': '^0.0.0',
|
|
16
|
-
}).reduce(
|
|
17
|
-
(out, [d, v]) => ({
|
|
18
|
-
...out,
|
|
19
|
-
...(excluded.includes(d) ? {} : { [d]: v }),
|
|
20
|
-
}),
|
|
21
|
-
{}
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
test('return default dependencies when manual are not configured', () => {
|
|
25
|
-
expect(loadSharedDependencies(getPackageDependencies(), undefined)).toEqual({
|
|
26
|
-
'@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
|
|
27
|
-
'classnames': 'SharedDependencies.ClassNames',
|
|
28
|
-
'formstate': 'SharedDependencies.FormState',
|
|
29
|
-
'mobx': 'SharedDependencies.MobX',
|
|
30
|
-
'mobx-react': 'SharedDependencies.MobXReact',
|
|
31
|
-
'mobx-utils': 'SharedDependencies.MobXUtils',
|
|
32
|
-
'react': 'SharedDependencies.React',
|
|
33
|
-
'react-dom': 'SharedDependencies.ReactDOM',
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
test('return default dependencies except not used when manual are not configured', () => {
|
|
38
|
-
expect(loadSharedDependencies(getPackageDependencies('mobx-utils'), undefined)).toEqual({
|
|
39
|
-
'@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
|
|
40
|
-
'classnames': 'SharedDependencies.ClassNames',
|
|
41
|
-
'formstate': 'SharedDependencies.FormState',
|
|
42
|
-
'mobx': 'SharedDependencies.MobX',
|
|
43
|
-
'mobx-react': 'SharedDependencies.MobXReact',
|
|
44
|
-
'react': 'SharedDependencies.React',
|
|
45
|
-
'react-dom': 'SharedDependencies.ReactDOM',
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
test('return manual dependencies if set', () => {
|
|
50
|
-
expect(
|
|
51
|
-
loadSharedDependencies(getPackageDependencies(), {
|
|
52
|
-
'@servicetitan/confirm': 'SharedDependencies.ServiceTitan.Confirm',
|
|
53
|
-
'react-input-mask': 'SharedDependencies.ReactInputMask',
|
|
54
|
-
})
|
|
55
|
-
).toEqual({
|
|
56
|
-
'@servicetitan/confirm': 'SharedDependencies.ServiceTitan.Confirm',
|
|
57
|
-
'react-input-mask': 'SharedDependencies.ReactInputMask',
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
test('return default dependencies within manual', () => {
|
|
62
|
-
expect(
|
|
63
|
-
loadSharedDependencies(getPackageDependencies(), {
|
|
64
|
-
defaults: '',
|
|
65
|
-
})
|
|
66
|
-
).toEqual({
|
|
67
|
-
'@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
|
|
68
|
-
'classnames': 'SharedDependencies.ClassNames',
|
|
69
|
-
'formstate': 'SharedDependencies.FormState',
|
|
70
|
-
'mobx': 'SharedDependencies.MobX',
|
|
71
|
-
'mobx-react': 'SharedDependencies.MobXReact',
|
|
72
|
-
'mobx-utils': 'SharedDependencies.MobXUtils',
|
|
73
|
-
'react': 'SharedDependencies.React',
|
|
74
|
-
'react-dom': 'SharedDependencies.ReactDOM',
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
test('clear default dependencies when configured', () => {
|
|
79
|
-
expect(
|
|
80
|
-
loadSharedDependencies(getPackageDependencies(), {
|
|
81
|
-
'defaults': '',
|
|
82
|
-
'mobx-utils': '',
|
|
83
|
-
})
|
|
84
|
-
).toEqual({
|
|
85
|
-
'@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
|
|
86
|
-
'classnames': 'SharedDependencies.ClassNames',
|
|
87
|
-
'formstate': 'SharedDependencies.FormState',
|
|
88
|
-
'mobx': 'SharedDependencies.MobX',
|
|
89
|
-
'mobx-react': 'SharedDependencies.MobXReact',
|
|
90
|
-
'react': 'SharedDependencies.React',
|
|
91
|
-
'react-dom': 'SharedDependencies.ReactDOM',
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
test('mixes default dependencies and configured', () => {
|
|
96
|
-
expect(
|
|
97
|
-
loadSharedDependencies(getPackageDependencies(), {
|
|
98
|
-
'defaults': '',
|
|
99
|
-
'mobx-utils': '',
|
|
100
|
-
'react-input-mask': 'SharedDependencies.ReactInputMask',
|
|
101
|
-
'react-something': 'SharedDependencies.ReactSomething',
|
|
102
|
-
})
|
|
103
|
-
).toEqual({
|
|
104
|
-
'@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
|
|
105
|
-
'classnames': 'SharedDependencies.ClassNames',
|
|
106
|
-
'formstate': 'SharedDependencies.FormState',
|
|
107
|
-
'mobx': 'SharedDependencies.MobX',
|
|
108
|
-
'mobx-react': 'SharedDependencies.MobXReact',
|
|
109
|
-
'react': 'SharedDependencies.React',
|
|
110
|
-
'react-dom': 'SharedDependencies.ReactDOM',
|
|
111
|
-
'react-input-mask': 'SharedDependencies.ReactInputMask',
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
});
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
const getDefaultSharedDependencies = () => ({
|
|
2
|
-
'@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
|
|
3
|
-
'@servicetitan/anvil2': 'SharedDependencies.ServiceTitan.Anvil2',
|
|
4
|
-
'classnames': 'SharedDependencies.ClassNames',
|
|
5
|
-
'formstate': 'SharedDependencies.FormState',
|
|
6
|
-
'mobx': 'SharedDependencies.MobX',
|
|
7
|
-
'mobx-react': 'SharedDependencies.MobXReact',
|
|
8
|
-
'mobx-utils': 'SharedDependencies.MobXUtils',
|
|
9
|
-
'react': 'SharedDependencies.React',
|
|
10
|
-
'react-dom': 'SharedDependencies.ReactDOM',
|
|
11
|
-
});
|
|
12
|
-
const defaultsKey = 'defaults';
|
|
13
|
-
|
|
14
|
-
export function loadSharedDependencies(
|
|
15
|
-
dependencies: Record<string, string> | undefined,
|
|
16
|
-
sharedDependencies: Record<string, string> | undefined
|
|
17
|
-
): Record<string, string> {
|
|
18
|
-
if (!dependencies) {
|
|
19
|
-
return {};
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const out: Record<string, string> = {
|
|
23
|
-
...(!sharedDependencies || sharedDependencies[defaultsKey] !== undefined
|
|
24
|
-
? getDefaultSharedDependencies()
|
|
25
|
-
: {}),
|
|
26
|
-
...(sharedDependencies ?? {}),
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
delete out[defaultsKey];
|
|
30
|
-
|
|
31
|
-
for (const [dependency, value] of Object.entries(out)) {
|
|
32
|
-
if (!value || !dependencies[dependency]) {
|
|
33
|
-
delete out[dependency];
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return out;
|
|
38
|
-
}
|
package/template/.eslintrc.json
DELETED
package/template/.gitignore
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Mac-related stuff
|
|
2
|
-
._.DS_Store/
|
|
3
|
-
.DS_Store/
|
|
4
|
-
*.DS_Store
|
|
5
|
-
|
|
6
|
-
# Node.js
|
|
7
|
-
node_modules/
|
|
8
|
-
|
|
9
|
-
# yalc store
|
|
10
|
-
.yalc/
|
|
11
|
-
yalc.lock
|
|
12
|
-
|
|
13
|
-
#SonarQube
|
|
14
|
-
.scannerwork/
|
|
15
|
-
|
|
16
|
-
*.css.d.ts
|
|
17
|
-
*.less.d.ts
|
|
18
|
-
*.scss.d.ts
|
|
19
|
-
/coverage/
|
|
20
|
-
dist/
|
|
21
|
-
*.tsbuildinfo
|
package/template/.npmrc
DELETED
package/template/.prettierrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/coverage
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
|
|
3
|
-
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
|
|
4
|
-
|
|
5
|
-
// List of extensions which should be recommended for users of this workspace.
|
|
6
|
-
"recommendations": [
|
|
7
|
-
"dbaeumer.vscode-eslint",
|
|
8
|
-
"esbenp.prettier-vscode",
|
|
9
|
-
"stylelint.vscode-stylelint",
|
|
10
|
-
"editorconfig.editorconfig",
|
|
11
|
-
"yoavbls.pretty-ts-errors",
|
|
12
|
-
"streetsidesoftware.code-spell-checker",
|
|
13
|
-
"eamodio.gitlens",
|
|
14
|
-
"pomber.git-file-history"
|
|
15
|
-
],
|
|
16
|
-
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
|
17
|
-
"unwantedRecommendations": []
|
|
18
|
-
}
|
package/template/lerna.json
DELETED
package/template/package.json
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "root",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"description": "Multi-package web application template",
|
|
5
|
-
"private": true,
|
|
6
|
-
"engines": {
|
|
7
|
-
"node": ">=18",
|
|
8
|
-
"npm": ">=10"
|
|
9
|
-
},
|
|
10
|
-
"scripts": {
|
|
11
|
-
"bootstrap": "npx --yes @servicetitan/startup install",
|
|
12
|
-
"prestart": "npm run bootstrap",
|
|
13
|
-
"start": "startup start",
|
|
14
|
-
"prebuild": "npm run bootstrap",
|
|
15
|
-
"build": "startup build",
|
|
16
|
-
"lint": "startup lint",
|
|
17
|
-
"test": "startup test"
|
|
18
|
-
},
|
|
19
|
-
"devDependencies": {
|
|
20
|
-
"@servicetitan/startup": ">=22.21.0"
|
|
21
|
-
},
|
|
22
|
-
"workspaces": [
|
|
23
|
-
"packages/*"
|
|
24
|
-
],
|
|
25
|
-
"cli": {
|
|
26
|
-
"test": {
|
|
27
|
-
"setupFilesAfterEnv": [
|
|
28
|
-
"./setupTests.ts"
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "application",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"private": true,
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"typings": "./dist/index.d.ts",
|
|
8
|
-
"scripts": {},
|
|
9
|
-
"dependencies": {
|
|
10
|
-
"@servicetitan/design-system": "^13.4.3",
|
|
11
|
-
"@servicetitan/hash-browser-router": "^24.1.0",
|
|
12
|
-
"@servicetitan/link-item": "^26.1.0",
|
|
13
|
-
"@servicetitan/log-service": "^24.1.0",
|
|
14
|
-
"@servicetitan/react-ioc": "^24.1.0",
|
|
15
|
-
"@servicetitan/web-components": "^24.1.0",
|
|
16
|
-
"axios": "^0.28.1",
|
|
17
|
-
"feature-a": "^0.0.0",
|
|
18
|
-
"feature-b": "^0.0.0",
|
|
19
|
-
"feature-c": "^0.0.0",
|
|
20
|
-
"history": "~4.10.1",
|
|
21
|
-
"mobx": "~6.10.2",
|
|
22
|
-
"react": "^17.0.2",
|
|
23
|
-
"react-dom": "^17.0.2",
|
|
24
|
-
"react-router-dom": "^5.3.0"
|
|
25
|
-
},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"@servicetitan/testing-library": "^1.2.0",
|
|
28
|
-
"@testing-library/jest-dom": "^5.17.0",
|
|
29
|
-
"@testing-library/react": "^12.1.5",
|
|
30
|
-
"@testing-library/react-hooks": "^8.0.1",
|
|
31
|
-
"@types/react": "^17.0.37",
|
|
32
|
-
"@types/react-dom": "^17.0.11",
|
|
33
|
-
"@types/react-router-dom": "^5.3.2"
|
|
34
|
-
}
|
|
35
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { mockComponent, mockLocation } from '@servicetitan/testing-library';
|
|
2
|
-
import { render, screen } from '@testing-library/react';
|
|
3
|
-
|
|
4
|
-
import { App } from '../app';
|
|
5
|
-
|
|
6
|
-
jest.mock('../main-page', () => mockComponent('MainPage'));
|
|
7
|
-
jest.mock('../second-page', () => mockComponent('SecondPage'));
|
|
8
|
-
|
|
9
|
-
describe(`${App.name}`, () => {
|
|
10
|
-
const subject = () => render(<App />);
|
|
11
|
-
|
|
12
|
-
test('renders sidebar', () => {
|
|
13
|
-
subject();
|
|
14
|
-
|
|
15
|
-
expect(screen.getByRole('link', { name: 'Main page' })).toBeInTheDocument();
|
|
16
|
-
expect(screen.getByRole('link', { name: 'Second page' })).toBeInTheDocument();
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
const routes = Object.entries({
|
|
20
|
-
MainPage: '/',
|
|
21
|
-
SecondPage: '/#/second-page',
|
|
22
|
-
}).map(([component, path]) => ({ component, path }));
|
|
23
|
-
|
|
24
|
-
describe.each(routes)('when location is $path', ({ component, path }) => {
|
|
25
|
-
beforeEach(() => mockLocation(path));
|
|
26
|
-
|
|
27
|
-
test(`renders <${component} />`, () => {
|
|
28
|
-
subject();
|
|
29
|
-
|
|
30
|
-
expect(screen).toContainComponent(component);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
});
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { StrictMode, FC } from 'react';
|
|
2
|
-
import { Switch, Route } from 'react-router-dom';
|
|
3
|
-
import { HashBrowserRouter } from '@servicetitan/hash-browser-router';
|
|
4
|
-
import { SideNav, Frame, Page, Sidebar } from '@servicetitan/design-system';
|
|
5
|
-
import { SideNavLinkItem } from '@servicetitan/link-item';
|
|
6
|
-
|
|
7
|
-
import { SecondPage } from './second-page';
|
|
8
|
-
import { MainPage } from './main-page';
|
|
9
|
-
import './design-system.css';
|
|
10
|
-
import './app.css';
|
|
11
|
-
|
|
12
|
-
export const App: FC = () => (
|
|
13
|
-
<StrictMode>
|
|
14
|
-
<HashBrowserRouter>
|
|
15
|
-
<Frame>
|
|
16
|
-
<Page
|
|
17
|
-
sidebar={
|
|
18
|
-
<Sidebar localStorageKey="sidebar-application">
|
|
19
|
-
<Sidebar.Section padding="y">
|
|
20
|
-
<SideNav title="Application">
|
|
21
|
-
<SideNavLinkItem pathname="/" exact>
|
|
22
|
-
Main page
|
|
23
|
-
</SideNavLinkItem>
|
|
24
|
-
<SideNavLinkItem pathname="/second-page">
|
|
25
|
-
Second page
|
|
26
|
-
</SideNavLinkItem>
|
|
27
|
-
</SideNav>
|
|
28
|
-
</Sidebar.Section>
|
|
29
|
-
</Sidebar>
|
|
30
|
-
}
|
|
31
|
-
maxWidth="wide"
|
|
32
|
-
>
|
|
33
|
-
<Switch>
|
|
34
|
-
<Route path="/" exact>
|
|
35
|
-
<MainPage />
|
|
36
|
-
</Route>
|
|
37
|
-
<Route path="/second-page">
|
|
38
|
-
<SecondPage />
|
|
39
|
-
</Route>
|
|
40
|
-
</Switch>
|
|
41
|
-
</Page>
|
|
42
|
-
</Frame>
|
|
43
|
-
</HashBrowserRouter>
|
|
44
|
-
</StrictMode>
|
|
45
|
-
);
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "@servicetitan/startup/tsconfig/base",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"outDir": "dist",
|
|
5
|
-
"rootDir": "src"
|
|
6
|
-
},
|
|
7
|
-
"include": ["src/**/*"],
|
|
8
|
-
"references": [
|
|
9
|
-
{ "path": "../feature-a" },
|
|
10
|
-
{ "path": "../feature-b" },
|
|
11
|
-
{ "path": "../feature-c" }
|
|
12
|
-
]
|
|
13
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "feature-a",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"private": true,
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"typings": "./dist/index.d.ts",
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"react": "^17.0.2",
|
|
10
|
-
"react-dom": "^17.0.2"
|
|
11
|
-
},
|
|
12
|
-
"devDependencies": {
|
|
13
|
-
"@types/react": "^17.0.37",
|
|
14
|
-
"@types/react-dom": "^17.0.11"
|
|
15
|
-
},
|
|
16
|
-
"cli": {
|
|
17
|
-
"webpack": false
|
|
18
|
-
}
|
|
19
|
-
}
|
|
File without changes
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "feature-b",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"private": true,
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"typings": "./dist/index.d.ts",
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"react": "^17.0.2",
|
|
10
|
-
"react-dom": "^17.0.2"
|
|
11
|
-
},
|
|
12
|
-
"devDependencies": {
|
|
13
|
-
"@types/react": "^17.0.37",
|
|
14
|
-
"@types/react-dom": "^17.0.11"
|
|
15
|
-
},
|
|
16
|
-
"cli": {
|
|
17
|
-
"webpack": false
|
|
18
|
-
}
|
|
19
|
-
}
|
|
File without changes
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "feature-c",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"private": true,
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"typings": "./dist/index.d.ts",
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"react": "^17.0.2",
|
|
10
|
-
"react-dom": "^17.0.2"
|
|
11
|
-
},
|
|
12
|
-
"devDependencies": {
|
|
13
|
-
"@types/react": "^17.0.37",
|
|
14
|
-
"@types/react-dom": "^17.0.11"
|
|
15
|
-
},
|
|
16
|
-
"cli": {
|
|
17
|
-
"webpack": false
|
|
18
|
-
}
|
|
19
|
-
}
|
|
File without changes
|
package/template/setupTests.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import '@servicetitan/testing-library';
|
|
2
|
-
import '@testing-library/jest-dom';
|
|
3
|
-
|
|
4
|
-
Object.defineProperties(window, {
|
|
5
|
-
location: { value: window.location, writable: true, configurable: true },
|
|
6
|
-
matchMedia: {
|
|
7
|
-
value: jest.fn().mockImplementation(query => ({
|
|
8
|
-
matches: false,
|
|
9
|
-
media: query,
|
|
10
|
-
onChange: null,
|
|
11
|
-
addEventListener: jest.fn(),
|
|
12
|
-
removeEventListener: jest.fn(),
|
|
13
|
-
dispatchEvent: jest.fn(),
|
|
14
|
-
})),
|
|
15
|
-
writable: true,
|
|
16
|
-
configurable: true,
|
|
17
|
-
},
|
|
18
|
-
ResizeObserver: {
|
|
19
|
-
value: jest.fn().mockImplementation(() => ({
|
|
20
|
-
disconnect: jest.fn(),
|
|
21
|
-
observe: jest.fn(),
|
|
22
|
-
unobserve: jest.fn(),
|
|
23
|
-
})),
|
|
24
|
-
writable: true,
|
|
25
|
-
configurable: true,
|
|
26
|
-
},
|
|
27
|
-
});
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "application",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"private": true,
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"typings": "./dist/index.d.ts",
|
|
8
|
-
"scripts": {},
|
|
9
|
-
"dependencies": {
|
|
10
|
-
"@servicetitan/design-system": "^14.0.0",
|
|
11
|
-
"@servicetitan/hash-browser-router": "^24.1.0",
|
|
12
|
-
"@servicetitan/link-item": "^26.1.0",
|
|
13
|
-
"@servicetitan/log-service": "^24.1.0",
|
|
14
|
-
"@servicetitan/react-ioc": "^24.1.0",
|
|
15
|
-
"@servicetitan/web-components": "^24.1.0",
|
|
16
|
-
"axios": "^0.28.1",
|
|
17
|
-
"feature-a": "^0.0.0",
|
|
18
|
-
"feature-b": "^0.0.0",
|
|
19
|
-
"feature-c": "^0.0.0",
|
|
20
|
-
"history": "~4.10.1",
|
|
21
|
-
"mobx": "~6.10.2",
|
|
22
|
-
"react": "^18.3.1",
|
|
23
|
-
"react-dom": "^18.3.1",
|
|
24
|
-
"react-router-dom": "^5.3.0"
|
|
25
|
-
},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"@servicetitan/testing-library": "^1.2.0",
|
|
28
|
-
"@testing-library/jest-dom": "^6.4.2",
|
|
29
|
-
"@testing-library/react": "^14.2.1",
|
|
30
|
-
"@testing-library/react-hooks": "^8.0.1",
|
|
31
|
-
"@types/react": "^18.3.3",
|
|
32
|
-
"@types/react-dom": "^18.3.0",
|
|
33
|
-
"@types/react-router-dom": "^5.3.2"
|
|
34
|
-
}
|
|
35
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "feature-a",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"private": true,
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"typings": "./dist/index.d.ts",
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"react": "^18.3.1",
|
|
10
|
-
"react-dom": "^18.3.1"
|
|
11
|
-
},
|
|
12
|
-
"devDependencies": {
|
|
13
|
-
"@types/react": "^18.3.3",
|
|
14
|
-
"@types/react-dom": "^18.3.0"
|
|
15
|
-
},
|
|
16
|
-
"cli": {
|
|
17
|
-
"webpack": false
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "feature-b",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"private": true,
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"typings": "./dist/index.d.ts",
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"react": "^18.3.1",
|
|
10
|
-
"react-dom": "^18.3.1"
|
|
11
|
-
},
|
|
12
|
-
"devDependencies": {
|
|
13
|
-
"@types/react": "^18.3.3",
|
|
14
|
-
"@types/react-dom": "^18.3.0"
|
|
15
|
-
},
|
|
16
|
-
"cli": {
|
|
17
|
-
"webpack": false
|
|
18
|
-
}
|
|
19
|
-
}
|