@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.
Files changed (140) hide show
  1. package/dist/cli/commands/get-branch-configs.d.ts +4 -0
  2. package/dist/cli/commands/get-branch-configs.d.ts.map +1 -0
  3. package/dist/cli/commands/get-branch-configs.js +13 -0
  4. package/dist/cli/commands/get-branch-configs.js.map +1 -0
  5. package/dist/cli/commands/get-command.d.ts.map +1 -1
  6. package/dist/cli/commands/get-command.js +4 -2
  7. package/dist/cli/commands/get-command.js.map +1 -1
  8. package/dist/cli/commands/init.d.ts +0 -1
  9. package/dist/cli/commands/init.d.ts.map +1 -1
  10. package/dist/cli/commands/init.js +39 -9
  11. package/dist/cli/commands/init.js.map +1 -1
  12. package/dist/cli/commands/mfe-package-clean.d.ts +13 -0
  13. package/dist/cli/commands/mfe-package-clean.d.ts.map +1 -0
  14. package/dist/cli/commands/mfe-package-clean.js +113 -0
  15. package/dist/cli/commands/mfe-package-clean.js.map +1 -0
  16. package/dist/cli/commands/mfe-package-publish.d.ts +20 -0
  17. package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -0
  18. package/dist/cli/commands/mfe-package-publish.js +153 -0
  19. package/dist/cli/commands/mfe-package-publish.js.map +1 -0
  20. package/dist/cli/commands/mfe-publish.d.ts +4 -29
  21. package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
  22. package/dist/cli/commands/mfe-publish.js +1 -213
  23. package/dist/cli/commands/mfe-publish.js.map +1 -1
  24. package/dist/cli/commands/styles-check.js +2 -1
  25. package/dist/cli/commands/styles-check.js.map +1 -1
  26. package/dist/cli/utils/assets-copy.d.ts.map +1 -1
  27. package/dist/cli/utils/assets-copy.js +3 -3
  28. package/dist/cli/utils/assets-copy.js.map +1 -1
  29. package/dist/cli/utils/bundle.d.ts.map +1 -1
  30. package/dist/cli/utils/bundle.js +10 -11
  31. package/dist/cli/utils/bundle.js.map +1 -1
  32. package/dist/cli/utils/cli-os.d.ts +9 -2
  33. package/dist/cli/utils/cli-os.d.ts.map +1 -1
  34. package/dist/cli/utils/cli-os.js +16 -8
  35. package/dist/cli/utils/cli-os.js.map +1 -1
  36. package/dist/cli/utils/styles-copy.d.ts.map +1 -1
  37. package/dist/cli/utils/styles-copy.js +3 -3
  38. package/dist/cli/utils/styles-copy.js.map +1 -1
  39. package/dist/utils/get-configuration.d.ts +2 -1
  40. package/dist/utils/get-configuration.d.ts.map +1 -1
  41. package/dist/utils/get-configuration.js +5 -0
  42. package/dist/utils/get-configuration.js.map +1 -1
  43. package/dist/utils/get-folders.js +2 -2
  44. package/dist/utils/get-folders.js.map +1 -1
  45. package/dist/utils/index.d.ts +0 -1
  46. package/dist/utils/index.d.ts.map +1 -1
  47. package/dist/utils/index.js +0 -1
  48. package/dist/utils/index.js.map +1 -1
  49. package/dist/webpack/configs/dev-server-config.d.ts.map +1 -1
  50. package/dist/webpack/configs/dev-server-config.js +4 -1
  51. package/dist/webpack/configs/dev-server-config.js.map +1 -1
  52. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts.map +1 -1
  53. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js +3 -9
  54. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js.map +1 -1
  55. package/dist/webpack/configs/plugins/virtual-modules-plugin.d.ts.map +1 -1
  56. package/dist/webpack/configs/plugins/virtual-modules-plugin.js +15 -5
  57. package/dist/webpack/configs/plugins/virtual-modules-plugin.js.map +1 -1
  58. package/dist/webpack/configs/types.d.ts +18 -1
  59. package/dist/webpack/configs/types.d.ts.map +1 -1
  60. package/dist/webpack/configs/utils/generate-metadata.d.ts.map +1 -1
  61. package/dist/webpack/configs/utils/generate-metadata.js +3 -3
  62. package/dist/webpack/configs/utils/generate-metadata.js.map +1 -1
  63. package/dist/webpack/create-webpack-config.d.ts.map +1 -1
  64. package/dist/webpack/create-webpack-config.js +2 -1
  65. package/dist/webpack/create-webpack-config.js.map +1 -1
  66. package/package.json +10 -15
  67. package/src/cli/commands/__tests__/init.test.ts +108 -28
  68. package/src/cli/commands/__tests__/mfe-package-clean.test.ts +1 -1
  69. package/src/cli/commands/__tests__/mfe-package-publish.test.ts +77 -7
  70. package/src/cli/commands/__tests__/styles-check.test.ts +5 -1
  71. package/src/cli/commands/get-branch-configs.ts +8 -0
  72. package/src/cli/commands/get-command.ts +3 -1
  73. package/src/cli/commands/init.ts +40 -10
  74. package/src/cli/commands/mfe-package-clean.ts +132 -0
  75. package/src/cli/commands/mfe-package-publish.ts +189 -0
  76. package/src/cli/commands/mfe-publish.ts +5 -294
  77. package/src/cli/commands/styles-check.ts +1 -1
  78. package/src/cli/utils/__tests__/assets-copy.test.ts +3 -7
  79. package/src/cli/utils/__tests__/bundle.test.ts +45 -7
  80. package/src/cli/utils/__tests__/cli-os.test.ts +41 -6
  81. package/src/cli/utils/__tests__/styles-copy.test.ts +3 -7
  82. package/src/cli/utils/assets-copy.ts +3 -3
  83. package/src/cli/utils/bundle.ts +14 -20
  84. package/src/cli/utils/cli-os.ts +20 -8
  85. package/src/cli/utils/styles-copy.ts +3 -3
  86. package/src/utils/__tests__/get-configuration.test.ts +6 -0
  87. package/src/utils/get-configuration.ts +6 -1
  88. package/src/utils/get-folders.ts +1 -1
  89. package/src/utils/index.ts +0 -1
  90. package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +5 -1
  91. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +47 -13
  92. package/src/webpack/__tests__/create-webpack-config.test.ts +15 -2
  93. package/src/webpack/configs/dev-server-config.ts +7 -2
  94. package/src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts +6 -15
  95. package/src/webpack/configs/plugins/virtual-modules-plugin.ts +17 -5
  96. package/src/webpack/configs/types.ts +21 -1
  97. package/src/webpack/configs/utils/generate-metadata.ts +5 -5
  98. package/src/webpack/create-webpack-config.ts +1 -1
  99. package/dist/utils/load-shared-dependencies.d.ts +0 -2
  100. package/dist/utils/load-shared-dependencies.d.ts.map +0 -1
  101. package/dist/utils/load-shared-dependencies.js +0 -34
  102. package/dist/utils/load-shared-dependencies.js.map +0 -1
  103. package/src/utils/__tests__/load-shared-dependencies.test.ts +0 -114
  104. package/src/utils/load-shared-dependencies.ts +0 -38
  105. package/template/.eslintrc.json +0 -3
  106. package/template/.gitignore +0 -21
  107. package/template/.npmrc +0 -3
  108. package/template/.prettierrc +0 -9
  109. package/template/.stylelintignore +0 -1
  110. package/template/.stylelintrc.json +0 -3
  111. package/template/.vscode/extensions.json +0 -18
  112. package/template/.vscode/settings.json +0 -4
  113. package/template/lerna.json +0 -4
  114. package/template/package.json +0 -32
  115. package/template/packages/application/package.json +0 -35
  116. package/template/packages/application/src/__tests__/app.test.tsx +0 -33
  117. package/template/packages/application/src/app.css +0 -3
  118. package/template/packages/application/src/app.tsx +0 -45
  119. package/template/packages/application/src/design-system.css +0 -3
  120. package/template/packages/application/src/index.tsx +0 -8
  121. package/template/packages/application/src/main-page.tsx +0 -5
  122. package/template/packages/application/src/second-page.tsx +0 -5
  123. package/template/packages/application/tsconfig.json +0 -13
  124. package/template/packages/feature-a/package.json +0 -19
  125. package/template/packages/feature-a/src/index.ts +0 -0
  126. package/template/packages/feature-a/tsconfig.json +0 -9
  127. package/template/packages/feature-b/package.json +0 -19
  128. package/template/packages/feature-b/src/index.ts +0 -0
  129. package/template/packages/feature-b/tsconfig.json +0 -9
  130. package/template/packages/feature-c/package.json +0 -19
  131. package/template/packages/feature-c/src/index.ts +0 -0
  132. package/template/packages/feature-c/tsconfig.json +0 -9
  133. package/template/setupTests.ts +0 -27
  134. package/template/tsconfig.test.json +0 -5
  135. package/template-react18/packages/application/package.json +0 -35
  136. package/template-react18/packages/application/src/index.tsx +0 -9
  137. package/template-react18/packages/feature-a/package.json +0 -19
  138. package/template-react18/packages/feature-b/package.json +0 -19
  139. package/template-react18/packages/feature-c/package.json +0 -19
  140. 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
- }
@@ -1,3 +0,0 @@
1
- {
2
- "extends": ["@servicetitan/eslint-config/mono"]
3
- }
@@ -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
@@ -1,3 +0,0 @@
1
- engine-strict=true
2
- legacy-peer-deps=true
3
- no-audit=true
@@ -1,9 +0,0 @@
1
- {
2
- "printWidth": 100,
3
- "tabWidth": 4,
4
- "singleQuote": true,
5
- "quoteProps": "consistent",
6
- "arrowParens": "avoid",
7
- "endOfLine": "auto",
8
- "trailingComma": "es5"
9
- }
@@ -1 +0,0 @@
1
- /coverage
@@ -1,3 +0,0 @@
1
- {
2
- "extends": ["@servicetitan/stylelint-config"]
3
- }
@@ -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
- }
@@ -1,4 +0,0 @@
1
- {
2
- "typescript.tsdk": "node_modules/typescript/lib",
3
- "editor.formatOnSave": true
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "packages": ["packages/*"],
3
- "version": "0.0.0"
4
- }
@@ -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,3 +0,0 @@
1
- body {
2
- margin: var(--spacing-0);
3
- }
@@ -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,3 +0,0 @@
1
- @import '~@servicetitan/tokens/dist/tokens.css';
2
- @import '~@servicetitan/anvil-fonts/dist/css/anvil-fonts.css';
3
- @import '~@servicetitan/design-system/dist/system.min.css';
@@ -1,8 +0,0 @@
1
- import { render } from 'react-dom';
2
-
3
- import { App } from './app';
4
-
5
- const appContainer = document.createElement('div');
6
- document.body.appendChild(appContainer);
7
-
8
- render(<App />, appContainer);
@@ -1,5 +0,0 @@
1
- import { Fragment } from 'react';
2
-
3
- export function MainPage() {
4
- return <Fragment>Main page</Fragment>;
5
- }
@@ -1,5 +0,0 @@
1
- import { Fragment } from 'react';
2
-
3
- export function SecondPage() {
4
- return <Fragment>Second page</Fragment>;
5
- }
@@ -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,9 +0,0 @@
1
- {
2
- "extends": "@servicetitan/startup/tsconfig/base",
3
- "compilerOptions": {
4
- "outDir": "dist",
5
- "rootDir": "src",
6
- "composite": true
7
- },
8
- "include": ["src/**/*"]
9
- }
@@ -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,9 +0,0 @@
1
- {
2
- "extends": "@servicetitan/startup/tsconfig/base",
3
- "compilerOptions": {
4
- "outDir": "dist",
5
- "rootDir": "src",
6
- "composite": true
7
- },
8
- "include": ["src/**/*"]
9
- }
@@ -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
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "@servicetitan/startup/tsconfig/base",
3
- "compilerOptions": {
4
- "outDir": "dist",
5
- "rootDir": "src",
6
- "composite": true
7
- },
8
- "include": ["src/**/*"]
9
- }
@@ -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,5 +0,0 @@
1
- {
2
- "extends": "@servicetitan/startup/tsconfig/base",
3
- "include": ["**/__tests__/**/*", "**/*.d.ts", "setupTests.ts"],
4
- "exclude": ["node_modules"]
5
- }
@@ -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,9 +0,0 @@
1
- import { createRoot } from 'react-dom/client';
2
-
3
- import { App } from './app';
4
-
5
- const appContainer = document.createElement('div');
6
- document.body.appendChild(appContainer);
7
-
8
- const root = createRoot(appContainer);
9
- root.render(<App />);
@@ -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
- }