@stone-js/starters 0.8.3 → 0.8.4

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 (65) hide show
  1. package/basic-react-declarative/app/Application.tsx +1 -0
  2. package/basic-react-declarative/package.json +5 -5
  3. package/basic-react-declarative/public/logo.svg +16 -0
  4. package/basic-react-declarative/tests/Application.spec.ts +11 -2
  5. package/basic-react-imperative/app/Application.tsx +1 -0
  6. package/basic-react-imperative/package.json +5 -5
  7. package/basic-react-imperative/public/logo.svg +16 -0
  8. package/basic-react-imperative/tests/Application.spec.ts +11 -2
  9. package/basic-service-declarative/package.json +4 -4
  10. package/basic-service-imperative/package.json +4 -4
  11. package/continuum-showcase/LICENSE +21 -0
  12. package/continuum-showcase/app/Application.ts +45 -0
  13. package/continuum-showcase/app/layouts/MainLayout.tsx +1 -2
  14. package/continuum-showcase/app/pages/BlogPostPage.tsx +1 -1
  15. package/continuum-showcase/app/pages/HomePage.tsx +2 -2
  16. package/continuum-showcase/assets/css/index.css +26 -0
  17. package/continuum-showcase/assets/images/logo.svg +16 -0
  18. package/continuum-showcase/package.json +22 -10
  19. package/continuum-showcase/tests/HomePage.spec.tsx +40 -0
  20. package/continuum-showcase/tsconfig.json +33 -0
  21. package/continuum-showcase/vitest.config.ts +31 -0
  22. package/full-react-declarative/app/layout/AppLayout/AppLayout.tsx +1 -1
  23. package/full-react-declarative/app/layout/ErrorLayout/ErrorLayout.tsx +1 -1
  24. package/full-react-declarative/app/layout/SecurityLayout/SecurityLayout.tsx +1 -1
  25. package/full-react-declarative/package.json +10 -10
  26. package/full-react-declarative/public/logo.svg +16 -0
  27. package/full-react-declarative/tests/AppLayout.spec.ts +51 -0
  28. package/full-react-imperative/app/components/LayoutHeader/LayoutHeader.tsx +1 -1
  29. package/full-react-imperative/app/components/PostWidget/PostWidget.tsx +1 -1
  30. package/full-react-imperative/app/components/PullToRefresh/PullToRefresh.css +10 -0
  31. package/full-react-imperative/app/components/PullToRefresh/PullToRefresh.tsx +66 -0
  32. package/full-react-imperative/app/layout/ErrorLayout/ErrorLayout.tsx +1 -1
  33. package/full-react-imperative/app/layout/SecurityLayout/SecurityLayout.tsx +1 -1
  34. package/full-react-imperative/package.json +11 -12
  35. package/full-react-imperative/public/logo.svg +16 -0
  36. package/full-react-imperative/tests/LayoutHeader.spec.ts +39 -0
  37. package/full-service-declarative/package.json +9 -9
  38. package/full-service-declarative/tests/PostService.spec.ts +56 -0
  39. package/full-service-declarative/vitest.config.ts +1 -1
  40. package/full-service-imperative/package.json +9 -9
  41. package/full-service-imperative/tests/PostService.spec.ts +47 -0
  42. package/full-service-imperative/vitest.config.ts +1 -1
  43. package/package.json +1 -1
  44. package/standard-react-declarative/app/pages/welcome/WelcomePage.tsx +1 -0
  45. package/standard-react-declarative/package.json +8 -8
  46. package/standard-react-declarative/public/logo.svg +16 -0
  47. package/standard-react-declarative/tests/WelcomePage.spec.ts +69 -0
  48. package/standard-react-imperative/app/pages/welcome/WelcomePage.tsx +1 -0
  49. package/standard-react-imperative/package.json +8 -8
  50. package/standard-react-imperative/public/logo.svg +16 -0
  51. package/standard-react-imperative/tests/WelcomePage.spec.ts +51 -0
  52. package/standard-service-declarative/package.json +6 -6
  53. package/standard-service-declarative/tests/Application.spec.ts +91 -0
  54. package/standard-service-declarative/vitest.config.ts +1 -1
  55. package/standard-service-imperative/package.json +6 -6
  56. package/standard-service-imperative/tests/Application.spec.ts +75 -0
  57. package/standard-service-imperative/vitest.config.ts +1 -1
  58. package/basic-react-declarative/public/logo.png +0 -0
  59. package/basic-react-declarative/tests/__snapshots__/Application.spec.ts.snap +0 -3
  60. package/basic-react-imperative/public/logo.png +0 -0
  61. package/basic-react-imperative/tests/__snapshots__/Application.spec.ts.snap +0 -3
  62. package/full-react-declarative/assets/img/logo.png +0 -0
  63. package/full-react-declarative/public/logo.png +0 -0
  64. package/full-react-imperative/assets/img/logo.png +0 -0
  65. package/full-react-imperative/public/logo.png +0 -0
@@ -18,17 +18,17 @@
18
18
  "test:cvg": "npm run test -- --coverage"
19
19
  },
20
20
  "dependencies": {
21
- "@stone-js/pipeline": "^0.8.3",
22
- "@stone-js/http-core": "^0.8.3",
23
- "@stone-js/node-http-adapter": "^0.8.3",
24
- "@stone-js/router": "^0.8.3",
25
- "@stone-js/core": "^0.8.3"
21
+ "@stone-js/pipeline": "^0.8.4",
22
+ "@stone-js/http-core": "^0.8.4",
23
+ "@stone-js/node-http-adapter": "^0.8.4",
24
+ "@stone-js/router": "^0.8.4",
25
+ "@stone-js/core": "^0.8.4"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@babel/plugin-proposal-decorators": "^7.25.9",
29
29
  "@babel/preset-env": "^7.26.9",
30
30
  "@babel/preset-typescript": "^7.27.0",
31
- "@stone-js/cli": "^0.8.3",
31
+ "@stone-js/cli": "^0.8.4",
32
32
  "@types/node": "^24.0.7",
33
33
  "@vitest/coverage-v8": "^3.0.9",
34
34
  "vitest": "^3.0.9"
@@ -0,0 +1,91 @@
1
+ import { ILogger } from '@stone-js/core'
2
+ import { IncomingHttpEvent } from '@stone-js/http-core'
3
+ import { WelcomeService } from '../app/services/WelcomeService'
4
+ import { WelcomeEventHandler } from '../app/handlers/WelcomeEventHandler'
5
+
6
+ // We must mock decorators to lighten the test environment
7
+ vi.mock(import('@stone-js/core'), async (importOriginal) => {
8
+ const actual = await importOriginal()
9
+ return {
10
+ ...actual,
11
+ Service: vi.fn(() => vi.fn())
12
+ }
13
+ })
14
+
15
+ // We must mock decorators to lighten the test environment
16
+ vi.mock(import('@stone-js/router'), async (importOriginal) => {
17
+ const actual = await importOriginal()
18
+ return {
19
+ ...actual,
20
+ EventHandler: vi.fn(() => vi.fn()),
21
+ Get: vi.fn(() => vi.fn())
22
+ }
23
+ })
24
+
25
+ // We must mock decorators to lighten the test environment
26
+ vi.mock(import('@stone-js/http-core'), async (importOriginal) => {
27
+ const actual = await importOriginal()
28
+ return {
29
+ ...actual,
30
+ JsonHttpResponse: vi.fn(() => vi.fn())
31
+ }
32
+ })
33
+
34
+ describe('WelcomeService', () => {
35
+ let mockedLogger: ILogger
36
+ let service: WelcomeService
37
+
38
+ beforeEach(() => {
39
+ mockedLogger = {
40
+ info: vi.fn()
41
+ } as unknown as ILogger
42
+
43
+ service = new WelcomeService({ logger: mockedLogger })
44
+ })
45
+
46
+ it('should build a welcome message for the given name', () => {
47
+ // Act
48
+ const response = service.welcome('Stone')
49
+
50
+ // Assert
51
+ expect(response).toHaveProperty('message', 'Hello Stone!')
52
+ expect(mockedLogger.info).toHaveBeenCalledWith('Welcome Stone')
53
+ })
54
+ })
55
+
56
+ describe('WelcomeEventHandler', () => {
57
+ let mockedLogger: ILogger
58
+ let handler: WelcomeEventHandler
59
+
60
+ beforeEach(() => {
61
+ mockedLogger = {
62
+ info: vi.fn()
63
+ } as unknown as ILogger
64
+
65
+ handler = new WelcomeEventHandler({ welcomeService: new WelcomeService({ logger: mockedLogger }) })
66
+ })
67
+
68
+ it('should welcome the name carried by the event', () => {
69
+ // Arrange
70
+ const event = { get: () => 'World' } as unknown as IncomingHttpEvent
71
+
72
+ // Act
73
+ const response = handler.welcome(event)
74
+
75
+ // Assert
76
+ expect(response.message).toBe('Hello World!')
77
+ expect(mockedLogger.info).toHaveBeenCalledWith('Welcome World')
78
+ })
79
+
80
+ it('should fall back to the default name when the event carries none', () => {
81
+ // Arrange
82
+ const event = { get: (_key: string, fallback: string) => fallback } as unknown as IncomingHttpEvent
83
+
84
+ // Act
85
+ const response = handler.welcome(event)
86
+
87
+ // Assert
88
+ expect(response.message).toBe('Hello World!')
89
+ expect(mockedLogger.info).toHaveBeenCalledWith('Welcome World')
90
+ })
91
+ })
@@ -1,4 +1,4 @@
1
- import { defineConfig } from 'vitest/config.js'
1
+ import { defineConfig } from 'vitest/config'
2
2
 
3
3
  export default defineConfig({
4
4
  test: {
@@ -17,17 +17,17 @@
17
17
  "test:cvg": "npm run test -- --coverage"
18
18
  },
19
19
  "dependencies": {
20
- "@stone-js/pipeline": "^0.8.3",
21
- "@stone-js/http-core": "^0.8.3",
22
- "@stone-js/node-http-adapter": "^0.8.3",
23
- "@stone-js/router": "^0.8.3",
24
- "@stone-js/core": "^0.8.3"
20
+ "@stone-js/pipeline": "^0.8.4",
21
+ "@stone-js/http-core": "^0.8.4",
22
+ "@stone-js/node-http-adapter": "^0.8.4",
23
+ "@stone-js/router": "^0.8.4",
24
+ "@stone-js/core": "^0.8.4"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@babel/plugin-proposal-decorators": "^7.25.9",
28
28
  "@babel/preset-env": "^7.26.9",
29
29
  "@babel/preset-typescript": "^7.27.0",
30
- "@stone-js/cli": "^0.8.3",
30
+ "@stone-js/cli": "^0.8.4",
31
31
  "@types/node": "^24.0.7",
32
32
  "@vitest/coverage-v8": "^3.0.9",
33
33
  "vitest": "^3.0.9"
@@ -0,0 +1,75 @@
1
+ import { ILogger } from '@stone-js/core'
2
+ import { IncomingHttpEvent } from '@stone-js/http-core'
3
+ import { WelcomeService } from '../app/services/welcomeService'
4
+ import { WelcomeEventHandler } from '../app/handlers/welcomeEventHandler'
5
+
6
+ describe('WelcomeService', () => {
7
+ let mockedLogger: ILogger
8
+
9
+ beforeEach(() => {
10
+ mockedLogger = {
11
+ info: vi.fn()
12
+ } as unknown as ILogger
13
+ })
14
+
15
+ it('should build a welcome message for the given name', () => {
16
+ // Arrange
17
+ const service = WelcomeService({ logger: mockedLogger })
18
+
19
+ // Act
20
+ const response = service.welcome('Stone')
21
+
22
+ // Assert
23
+ expect(response).toHaveProperty('message', 'Hello Stone!')
24
+ expect(mockedLogger.info).toHaveBeenCalledWith('Welcome Stone')
25
+ })
26
+ })
27
+
28
+ describe('WelcomeEventHandler', () => {
29
+ let mockedLogger: ILogger
30
+
31
+ beforeEach(() => {
32
+ mockedLogger = {
33
+ info: vi.fn()
34
+ } as unknown as ILogger
35
+ })
36
+
37
+ it('should create a functional event handler', () => {
38
+ // Arrange
39
+ const welcomeService = WelcomeService({ logger: mockedLogger })
40
+
41
+ // Act
42
+ const handler = WelcomeEventHandler({ welcomeService })
43
+
44
+ // Assert
45
+ expect(handler).toBeTypeOf('function')
46
+ })
47
+
48
+ it('should welcome the name carried by the event', () => {
49
+ // Arrange
50
+ const welcomeService = WelcomeService({ logger: mockedLogger })
51
+ const handler = WelcomeEventHandler({ welcomeService })
52
+ const event = { get: () => 'World' } as unknown as IncomingHttpEvent
53
+
54
+ // Act
55
+ const response = handler(event)
56
+
57
+ // Assert
58
+ expect(response.message).toBe('Hello World!')
59
+ expect(mockedLogger.info).toHaveBeenCalledWith('Welcome World')
60
+ })
61
+
62
+ it('should fall back to the default name when the event carries none', () => {
63
+ // Arrange
64
+ const welcomeService = WelcomeService({ logger: mockedLogger })
65
+ const handler = WelcomeEventHandler({ welcomeService })
66
+ const event = { get: (_key: string, fallback: string) => fallback } as unknown as IncomingHttpEvent
67
+
68
+ // Act
69
+ const response = handler(event)
70
+
71
+ // Assert
72
+ expect(response.message).toBe('Hello World!')
73
+ expect(mockedLogger.info).toHaveBeenCalledWith('Welcome World')
74
+ })
75
+ })
@@ -1,4 +1,4 @@
1
- import { defineConfig } from 'vitest/config.js'
1
+ import { defineConfig } from 'vitest/config'
2
2
 
3
3
  export default defineConfig({
4
4
  test: {
@@ -1,3 +0,0 @@
1
- // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
-
3
- exports[`Application > should render component 1`] = `"<section class="container"><h1 class="h1 text-center mt-64">Hello World!</h1></section>"`;
@@ -1,3 +0,0 @@
1
- // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
-
3
- exports[`Application > should render component 1`] = `"<section class="container"><h1 class="h1 text-center mt-64">Hello World!</h1></section>"`;