@stone-js/starters 0.8.14 → 0.8.15

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.
@@ -20,17 +20,17 @@
20
20
  "dependencies": {
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0",
23
- "@stone-js/core": "^0.8.14",
24
- "@stone-js/use-react": "^0.8.14",
25
- "@stone-js/browser-adapter": "^0.8.14"
23
+ "@stone-js/core": "^0.8.15",
24
+ "@stone-js/use-react": "^0.8.15",
25
+ "@stone-js/browser-adapter": "^0.8.15"
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/browser-core": "^0.8.14",
32
- "@stone-js/cli": "^0.8.14",
33
- "@stone-js/testing": "^0.8.14",
31
+ "@stone-js/browser-core": "^0.8.15",
32
+ "@stone-js/cli": "^0.8.15",
33
+ "@stone-js/testing": "^0.8.15",
34
34
  "@types/node": "^24.0.7",
35
35
  "@types/react": "^19.0.7",
36
36
  "@types/react-dom": "^19.0.3",
@@ -20,17 +20,17 @@
20
20
  "dependencies": {
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0",
23
- "@stone-js/core": "^0.8.14",
24
- "@stone-js/use-react": "^0.8.14",
25
- "@stone-js/browser-adapter": "^0.8.14"
23
+ "@stone-js/core": "^0.8.15",
24
+ "@stone-js/use-react": "^0.8.15",
25
+ "@stone-js/browser-adapter": "^0.8.15"
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/browser-core": "^0.8.14",
32
- "@stone-js/cli": "^0.8.14",
33
- "@stone-js/testing": "^0.8.14",
31
+ "@stone-js/browser-core": "^0.8.15",
32
+ "@stone-js/cli": "^0.8.15",
33
+ "@stone-js/testing": "^0.8.15",
34
34
  "@types/node": "^24.0.7",
35
35
  "@types/react": "^19.0.7",
36
36
  "@types/react-dom": "^19.0.3",
@@ -21,11 +21,11 @@
21
21
  "test:cvg": "npm run test -- --coverage"
22
22
  },
23
23
  "dependencies": {
24
- "@stone-js/browser-core": "^0.8.14",
25
- "@stone-js/core": "^0.8.14",
26
- "@stone-js/react-native-adapter": "^0.8.14",
27
- "@stone-js/router": "^0.8.14",
28
- "@stone-js/use-react-native": "^0.8.14",
24
+ "@stone-js/browser-core": "^0.8.15",
25
+ "@stone-js/core": "^0.8.15",
26
+ "@stone-js/react-native-adapter": "^0.8.15",
27
+ "@stone-js/router": "^0.8.15",
28
+ "@stone-js/use-react-native": "^0.8.15",
29
29
  "expo": "~57.0.14",
30
30
  "expo-status-bar": "~57.0.1",
31
31
  "fast-text-encoding": "^1.0.6",
@@ -35,8 +35,8 @@
35
35
  },
36
36
  "devDependencies": {
37
37
  "@babel/plugin-proposal-decorators": "^7.28.0",
38
- "@stone-js/cli": "^0.8.14",
39
- "@stone-js/testing": "^0.8.14",
38
+ "@stone-js/cli": "^0.8.15",
39
+ "@stone-js/testing": "^0.8.15",
40
40
  "@types/react": "~19.2.2",
41
41
  "@vitest/coverage-v8": "^3.0.9",
42
42
  "babel-preset-expo": "^57.0.7",
@@ -21,11 +21,11 @@
21
21
  "test:cvg": "npm run test -- --coverage"
22
22
  },
23
23
  "dependencies": {
24
- "@stone-js/browser-core": "^0.8.14",
25
- "@stone-js/core": "^0.8.14",
26
- "@stone-js/react-native-adapter": "^0.8.14",
27
- "@stone-js/router": "^0.8.14",
28
- "@stone-js/use-react-native": "^0.8.14",
24
+ "@stone-js/browser-core": "^0.8.15",
25
+ "@stone-js/core": "^0.8.15",
26
+ "@stone-js/react-native-adapter": "^0.8.15",
27
+ "@stone-js/router": "^0.8.15",
28
+ "@stone-js/use-react-native": "^0.8.15",
29
29
  "expo": "~57.0.14",
30
30
  "expo-status-bar": "~57.0.1",
31
31
  "fast-text-encoding": "^1.0.6",
@@ -35,8 +35,8 @@
35
35
  },
36
36
  "devDependencies": {
37
37
  "@babel/plugin-proposal-decorators": "^7.28.0",
38
- "@stone-js/cli": "^0.8.14",
39
- "@stone-js/testing": "^0.8.14",
38
+ "@stone-js/cli": "^0.8.15",
39
+ "@stone-js/testing": "^0.8.15",
40
40
  "@types/react": "~19.2.2",
41
41
  "@vitest/coverage-v8": "^3.0.9",
42
42
  "babel-preset-expo": "^57.0.7",
@@ -18,16 +18,16 @@
18
18
  "test:cvg": "stone test --coverage"
19
19
  },
20
20
  "dependencies": {
21
- "@stone-js/core": "^0.8.14",
22
- "@stone-js/node-http-adapter": "^0.8.14"
21
+ "@stone-js/core": "^0.8.15",
22
+ "@stone-js/node-http-adapter": "^0.8.15"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@babel/plugin-proposal-decorators": "^7.25.9",
26
26
  "@babel/preset-env": "^7.26.9",
27
27
  "@babel/preset-typescript": "^7.27.0",
28
- "@stone-js/cli": "^0.8.14",
29
- "@stone-js/http-core": "^0.8.14",
30
- "@stone-js/testing": "^0.8.14",
28
+ "@stone-js/cli": "^0.8.15",
29
+ "@stone-js/http-core": "^0.8.15",
30
+ "@stone-js/testing": "^0.8.15",
31
31
  "@types/node": "^24.0.7",
32
32
  "@vitest/coverage-v8": "^3.0.9",
33
33
  "vitest": "^3.0.9"
@@ -18,16 +18,16 @@
18
18
  "test:cvg": "stone test --coverage"
19
19
  },
20
20
  "dependencies": {
21
- "@stone-js/core": "^0.8.14",
22
- "@stone-js/node-http-adapter": "^0.8.14"
21
+ "@stone-js/core": "^0.8.15",
22
+ "@stone-js/node-http-adapter": "^0.8.15"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@babel/plugin-proposal-decorators": "^7.25.9",
26
26
  "@babel/preset-env": "^7.26.9",
27
27
  "@babel/preset-typescript": "^7.27.0",
28
- "@stone-js/cli": "^0.8.14",
29
- "@stone-js/http-core": "^0.8.14",
30
- "@stone-js/testing": "^0.8.14",
28
+ "@stone-js/cli": "^0.8.15",
29
+ "@stone-js/http-core": "^0.8.15",
30
+ "@stone-js/testing": "^0.8.15",
31
31
  "@types/node": "^24.0.7",
32
32
  "@vitest/coverage-v8": "^3.0.9",
33
33
  "vitest": "^3.0.9"
@@ -15,20 +15,20 @@
15
15
  "dependencies": {
16
16
  "react": "^19.0.0",
17
17
  "react-dom": "^19.0.0",
18
- "@stone-js/core": "^0.8.14",
19
- "@stone-js/router": "^0.8.14",
20
- "@stone-js/use-react": "^0.8.14",
21
- "@stone-js/http-core": "^0.8.14",
22
- "@stone-js/pipeline": "^0.8.14",
23
- "@stone-js/browser-adapter": "^0.8.14",
24
- "@stone-js/node-http-adapter": "^0.8.14"
18
+ "@stone-js/core": "^0.8.15",
19
+ "@stone-js/router": "^0.8.15",
20
+ "@stone-js/use-react": "^0.8.15",
21
+ "@stone-js/http-core": "^0.8.15",
22
+ "@stone-js/pipeline": "^0.8.15",
23
+ "@stone-js/browser-adapter": "^0.8.15",
24
+ "@stone-js/node-http-adapter": "^0.8.15"
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.14",
31
- "@stone-js/testing": "^0.8.14",
30
+ "@stone-js/cli": "^0.8.15",
31
+ "@stone-js/testing": "^0.8.15",
32
32
  "@types/node": "^24.0.7",
33
33
  "@types/react": "^19.0.7",
34
34
  "@types/react-dom": "^19.0.3",
@@ -18,14 +18,14 @@
18
18
  "test:cvg": "stone test --coverage"
19
19
  },
20
20
  "dependencies": {
21
- "@stone-js/env": "^0.8.14",
22
- "@stone-js/http-core": "^0.8.14",
23
- "@stone-js/node-http-adapter": "^0.8.14",
24
- "@stone-js/router": "^0.8.14",
25
- "@stone-js/filesystem": "^0.8.14",
26
- "@stone-js/core": "^0.8.14",
27
- "@stone-js/use-react": "^0.8.14",
28
- "@stone-js/browser-adapter": "^0.8.14",
21
+ "@stone-js/env": "^0.8.15",
22
+ "@stone-js/http-core": "^0.8.15",
23
+ "@stone-js/node-http-adapter": "^0.8.15",
24
+ "@stone-js/router": "^0.8.15",
25
+ "@stone-js/filesystem": "^0.8.15",
26
+ "@stone-js/core": "^0.8.15",
27
+ "@stone-js/use-react": "^0.8.15",
28
+ "@stone-js/browser-adapter": "^0.8.15",
29
29
  "axios": "^1.7.9",
30
30
  "react": "^19.0.0",
31
31
  "react-dom": "^19.0.0"
@@ -34,8 +34,8 @@
34
34
  "@babel/plugin-proposal-decorators": "^7.25.9",
35
35
  "@babel/preset-env": "^7.26.9",
36
36
  "@babel/preset-typescript": "^7.27.0",
37
- "@stone-js/cli": "^0.8.14",
38
- "@stone-js/testing": "^0.8.14",
37
+ "@stone-js/cli": "^0.8.15",
38
+ "@stone-js/testing": "^0.8.15",
39
39
  "@types/axios": "^0.14.4",
40
40
  "@types/node": "^24.0.7",
41
41
  "@types/react": "^19.0.7",
@@ -18,14 +18,14 @@
18
18
  "test:cvg": "stone test --coverage"
19
19
  },
20
20
  "dependencies": {
21
- "@stone-js/env": "^0.8.14",
22
- "@stone-js/http-core": "^0.8.14",
23
- "@stone-js/node-http-adapter": "^0.8.14",
24
- "@stone-js/router": "^0.8.14",
25
- "@stone-js/filesystem": "^0.8.14",
26
- "@stone-js/core": "^0.8.14",
27
- "@stone-js/use-react": "^0.8.14",
28
- "@stone-js/browser-adapter": "^0.8.14",
21
+ "@stone-js/env": "^0.8.15",
22
+ "@stone-js/http-core": "^0.8.15",
23
+ "@stone-js/node-http-adapter": "^0.8.15",
24
+ "@stone-js/router": "^0.8.15",
25
+ "@stone-js/filesystem": "^0.8.15",
26
+ "@stone-js/core": "^0.8.15",
27
+ "@stone-js/use-react": "^0.8.15",
28
+ "@stone-js/browser-adapter": "^0.8.15",
29
29
  "axios": "^1.7.9",
30
30
  "dayjs": "^1.11.13",
31
31
  "react": "^19.0.0",
@@ -35,8 +35,8 @@
35
35
  "@babel/plugin-proposal-decorators": "^7.25.9",
36
36
  "@babel/preset-env": "^7.26.9",
37
37
  "@babel/preset-typescript": "^7.27.0",
38
- "@stone-js/cli": "^0.8.14",
39
- "@stone-js/testing": "^0.8.14",
38
+ "@stone-js/cli": "^0.8.15",
39
+ "@stone-js/testing": "^0.8.15",
40
40
  "@types/axios": "^0.14.4",
41
41
  "@types/node": "^24.0.7",
42
42
  "@types/react": "^19.0.7",
@@ -22,14 +22,14 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@libsql/client": "^0.14.0",
25
- "@stone-js/core": "^0.8.14",
26
- "@stone-js/env": "^0.8.14",
27
- "@stone-js/filesystem": "^0.8.14",
28
- "@stone-js/http-core": "^0.8.14",
29
- "@stone-js/node-cli-adapter": "^0.8.14",
30
- "@stone-js/node-http-adapter": "^0.8.14",
31
- "@stone-js/pipeline": "^0.8.14",
32
- "@stone-js/router": "^0.8.14",
25
+ "@stone-js/core": "^0.8.15",
26
+ "@stone-js/env": "^0.8.15",
27
+ "@stone-js/filesystem": "^0.8.15",
28
+ "@stone-js/http-core": "^0.8.15",
29
+ "@stone-js/node-cli-adapter": "^0.8.15",
30
+ "@stone-js/node-http-adapter": "^0.8.15",
31
+ "@stone-js/pipeline": "^0.8.15",
32
+ "@stone-js/router": "^0.8.15",
33
33
  "bcryptjs": "^3.0.2",
34
34
  "drizzle-orm": "^0.45.2",
35
35
  "jsonwebtoken": "^9.0.2"
@@ -38,8 +38,8 @@
38
38
  "@babel/plugin-proposal-decorators": "^7.25.9",
39
39
  "@babel/preset-env": "^7.26.9",
40
40
  "@babel/preset-typescript": "^7.27.0",
41
- "@stone-js/cli": "^0.8.14",
42
- "@stone-js/testing": "^0.8.14",
41
+ "@stone-js/cli": "^0.8.15",
42
+ "@stone-js/testing": "^0.8.15",
43
43
  "@types/jsonwebtoken": "^9.0.8",
44
44
  "@types/node": "^24.0.3",
45
45
  "@vitest/coverage-v8": "^3.0.9",
@@ -22,14 +22,14 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@libsql/client": "^0.14.0",
25
- "@stone-js/core": "^0.8.14",
26
- "@stone-js/env": "^0.8.14",
27
- "@stone-js/filesystem": "^0.8.14",
28
- "@stone-js/http-core": "^0.8.14",
29
- "@stone-js/node-cli-adapter": "^0.8.14",
30
- "@stone-js/node-http-adapter": "^0.8.14",
31
- "@stone-js/pipeline": "^0.8.14",
32
- "@stone-js/router": "^0.8.14",
25
+ "@stone-js/core": "^0.8.15",
26
+ "@stone-js/env": "^0.8.15",
27
+ "@stone-js/filesystem": "^0.8.15",
28
+ "@stone-js/http-core": "^0.8.15",
29
+ "@stone-js/node-cli-adapter": "^0.8.15",
30
+ "@stone-js/node-http-adapter": "^0.8.15",
31
+ "@stone-js/pipeline": "^0.8.15",
32
+ "@stone-js/router": "^0.8.15",
33
33
  "bcryptjs": "^3.0.2",
34
34
  "drizzle-orm": "^0.45.2",
35
35
  "jsonwebtoken": "^9.0.2"
@@ -38,8 +38,8 @@
38
38
  "@babel/plugin-proposal-decorators": "^7.25.9",
39
39
  "@babel/preset-env": "^7.26.9",
40
40
  "@babel/preset-typescript": "^7.27.0",
41
- "@stone-js/cli": "^0.8.14",
42
- "@stone-js/testing": "^0.8.14",
41
+ "@stone-js/cli": "^0.8.15",
42
+ "@stone-js/testing": "^0.8.15",
43
43
  "@types/jsonwebtoken": "^9.0.8",
44
44
  "@types/node": "^24.0.3",
45
45
  "@vitest/coverage-v8": "^3.0.9",
@@ -1,54 +1,36 @@
1
- import { stoneApp } from '@stone-js/core'
2
- import { Application } from '../app/Application'
3
- import { ScreenStack } from '@stone-js/use-react-native'
4
- import { TaskListScreen } from '../app/TaskListScreen'
5
- import { NavigationSource } from '@stone-js/react-native-adapter'
1
+ import { createTestApp } from '@stone-js/testing'
2
+ import { makeIncomingBrowserEvent } from '@stone-js/testing/browser'
3
+ import { REACT_NATIVE_PLATFORM } from '@stone-js/react-native-adapter'
6
4
 
7
5
  /**
8
- * The mobile application, booted under Node and asked real questions.
6
+ * The mobile application, booted in memory and asked the same questions the web one is asked.
9
7
  *
10
- * Nothing is mocked. The kernel, the router, the adapter and the renderer are the ones a phone runs,
11
- * and the domain is the very same `@acme/domain` the web application uses. What a device adds is a
12
- * screen to draw on, and this asserts what the framework resolved before drawing.
8
+ * Read it next to `apps/web/tests/TaskListPage.spec.ts`. Same domain, same assertions, same counts,
9
+ * through two different contexts. That is the claim this repository exists to demonstrate, and it is
10
+ * visible in the tests rather than only in the source.
13
11
  *
14
- * Read it next to `apps/web/tests/TaskListPage.spec.ts`: same domain, same questions, same answers.
12
+ * `createTestApp()` discovers `app/**` and substitutes the adapter, which is the architecture rather
13
+ * than a concession to testing: the domain is written once and the context is chosen at run time, so
14
+ * under Node the context is a test adapter instead of React Native. What a native application does
15
+ * differently, its navigation stack, is `tests/navigation.spec.ts`.
15
16
  */
16
17
  describe('TaskListScreen', () => {
17
- const screens = ScreenStack.create()
18
- const navigation = NavigationSource.create({ baseUrl: 'acme://app' })
18
+ it('resolves the task list from the shared domain', async () => {
19
+ const app = await createTestApp({ platform: REACT_NATIVE_PLATFORM })
19
20
 
20
- // Booted once for the whole suite, as on a device: the default blueprints are shared module
21
- // objects, so booting the same modules twice in one process would accumulate route definitions.
22
- beforeAll(async () => {
23
- await stoneApp({
24
- modules: [
25
- Application,
26
- TaskListScreen,
27
- { stone: { reactNative: { navigationSource: navigation }, useReactNative: { screenStack: screens } } }
28
- ]
29
- }).run()
30
- })
31
-
32
- const settle = async (): Promise<void> => { await new Promise((resolve) => setImmediate(resolve)) }
21
+ const response = await app.send(makeIncomingBrowserEvent({ url: 'acme://app/' }))
33
22
 
34
- it('puts the task list on the stack at launch, counted by the shared domain', () => {
35
- expect(screens.size()).toBe(1)
36
- expect(screens.top()?.path).toBe('/')
37
- expect(screens.top()?.title).toBe('1 left · Acme tasks')
23
+ expect(response.statusCode).toBe(200)
24
+ // The head is what a navigator shows in its header, and it carries the count the domain computed.
25
+ expect((response.content as any).head.title).toBe('1 left · Acme tasks')
38
26
  })
39
27
 
40
28
  it('toggles a task through the same domain the web app uses', async () => {
41
- navigation.navigate('acme://app/?toggle=3')
42
- await settle()
43
-
44
- expect(screens.top()?.title).toBe('0 left · Acme tasks')
45
- })
29
+ const app = await createTestApp({ platform: REACT_NATIVE_PLATFORM })
46
30
 
47
- it('surfaces an unknown route instead of crashing', async () => {
48
- navigation.navigate('acme://app/nowhere')
49
- await settle()
31
+ const response = await app.send(makeIncomingBrowserEvent({ url: 'acme://app/?toggle=3' }))
50
32
 
51
- // An error page is still a screen: the application stays up and shows something.
52
- expect(screens.top()?.path).not.toBe('/')
33
+ expect(response.statusCode).toBe(200)
34
+ expect((response.content as any).head.title).toBe('0 left · Acme tasks')
53
35
  })
54
36
  })
@@ -0,0 +1,62 @@
1
+ import { stoneApp } from '@stone-js/core'
2
+ import { Application } from '../app/Application'
3
+ import { ScreenStack } from '@stone-js/use-react-native'
4
+ import { TaskListScreen } from '../app/TaskListScreen'
5
+ import { NavigationSource } from '@stone-js/react-native-adapter'
6
+
7
+ /**
8
+ * Navigation, with the real adapter this time.
9
+ *
10
+ * `TaskListScreen.spec.ts` asks what a route resolves to, which every platform answers the same way.
11
+ * This asks the native question: what lands on the navigation stack, and in what order. So nothing is
12
+ * substituted. The kernel, the router, the React Native adapter and the renderer are the ones a phone
13
+ * runs; what a device adds is a screen to draw on.
14
+ *
15
+ * Two things are supplied rather than discovered, both through documented configuration: the
16
+ * navigation source, so the test can send a deep link, and the screen stack, so it can read what
17
+ * landed on it.
18
+ */
19
+ describe('Navigation', () => {
20
+ const screens = ScreenStack.create()
21
+ const navigation = NavigationSource.create({ baseUrl: 'acme://app' })
22
+
23
+ // Booted once for the whole suite, as on a device: the default blueprints are shared module
24
+ // objects, so booting the same modules twice in one process would accumulate route definitions.
25
+ beforeAll(async () => {
26
+ await stoneApp({
27
+ modules: [
28
+ Application,
29
+ TaskListScreen,
30
+ { stone: { reactNative: { navigationSource: navigation }, useReactNative: { screenStack: screens } } }
31
+ ]
32
+ }).run()
33
+ })
34
+
35
+ const settle = async (): Promise<void> => { await new Promise((resolve) => setImmediate(resolve)) }
36
+
37
+ it('puts the task list on the stack at launch, counted by the shared domain', () => {
38
+ expect(screens.size()).toBe(1)
39
+ expect(screens.top()?.path).toBe('/')
40
+ expect(screens.top()?.title).toBe('1 left · Acme tasks')
41
+ })
42
+
43
+ it('routes a deep link through the same domain the web app uses', async () => {
44
+ navigation.navigate('acme://app/?toggle=3')
45
+ await settle()
46
+
47
+ expect(screens.top()?.title).toBe('0 left · Acme tasks')
48
+ })
49
+
50
+ it('re-resolving the current route replaces it instead of stacking a duplicate', () => {
51
+ // A user walking back must not find two identical screens, so the stack swaps the top.
52
+ expect(screens.size()).toBe(1)
53
+ })
54
+
55
+ it('surfaces an unknown route instead of crashing', async () => {
56
+ navigation.navigate('acme://app/nowhere')
57
+ await settle()
58
+
59
+ // An error page is still a screen: the application stays up and shows something.
60
+ expect(screens.top()?.path).not.toBe('/')
61
+ })
62
+ })
@@ -22,6 +22,12 @@ export default defineConfig({
22
22
  }
23
23
  },
24
24
  test: {
25
+ // `createTestApp()` discovers the application's modules by importing them at run time. Vitest
26
+ // externalises dependencies from `node_modules`, and an externalised module's `import()` is
27
+ // Node's, which cannot load a `.ts` file. Inlining the package puts those imports back through
28
+ // Vite's transform. `stone test` does this for you; a project running Vitest directly, as an
29
+ // Expo project does, states it here.
30
+ server: { deps: { inline: ['@stone-js/testing'] } },
25
31
  globals: true,
26
32
  environment: 'node',
27
33
  include: ['./tests/**/*.{test,spec}.?(c|m)[jt]s?(x)'],
@@ -30,6 +30,7 @@
30
30
  "@babel/preset-env": "^7.26.9",
31
31
  "@babel/preset-typescript": "^7.27.0",
32
32
  "@stone-js/cli": "^0.8.13",
33
+ "@stone-js/http-core": "^0.8.13",
33
34
  "@stone-js/testing": "^0.8.13",
34
35
  "@types/node": "^24.0.7",
35
36
  "@types/react": "^19.0.7",
@@ -1,4 +1,5 @@
1
- import { createTestApp, makeIncomingHttpEvent } from '@stone-js/testing'
1
+ import { createTestApp } from '@stone-js/testing'
2
+ import { makeIncomingHttpEvent } from '@stone-js/testing/http'
2
3
 
3
4
  /**
4
5
  * The web application, booted in memory and asked a real question.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stone-js/starters",
3
- "version": "0.8.14",
3
+ "version": "0.8.15",
4
4
  "description": "This repository contains official **starter templates** for Stone.js applications.",
5
5
  "author": "Mr. Stone <evensstone@gmail.com>",
6
6
  "license": "MIT",
@@ -20,20 +20,20 @@
20
20
  "dependencies": {
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0",
23
- "@stone-js/use-react": "^0.8.14",
24
- "@stone-js/browser-adapter": "^0.8.14",
25
- "@stone-js/pipeline": "^0.8.14",
26
- "@stone-js/http-core": "^0.8.14",
27
- "@stone-js/node-http-adapter": "^0.8.14",
28
- "@stone-js/router": "^0.8.14",
29
- "@stone-js/core": "^0.8.14"
23
+ "@stone-js/use-react": "^0.8.15",
24
+ "@stone-js/browser-adapter": "^0.8.15",
25
+ "@stone-js/pipeline": "^0.8.15",
26
+ "@stone-js/http-core": "^0.8.15",
27
+ "@stone-js/node-http-adapter": "^0.8.15",
28
+ "@stone-js/router": "^0.8.15",
29
+ "@stone-js/core": "^0.8.15"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@babel/plugin-proposal-decorators": "^7.25.9",
33
33
  "@babel/preset-env": "^7.26.9",
34
34
  "@babel/preset-typescript": "^7.27.0",
35
- "@stone-js/cli": "^0.8.14",
36
- "@stone-js/testing": "^0.8.14",
35
+ "@stone-js/cli": "^0.8.15",
36
+ "@stone-js/testing": "^0.8.15",
37
37
  "@types/node": "^24.0.7",
38
38
  "@types/react": "^19.0.7",
39
39
  "@types/react-dom": "^19.0.3",
@@ -20,20 +20,20 @@
20
20
  "dependencies": {
21
21
  "react": "^19.0.0",
22
22
  "react-dom": "^19.0.0",
23
- "@stone-js/use-react": "^0.8.14",
24
- "@stone-js/browser-adapter": "^0.8.14",
25
- "@stone-js/pipeline": "^0.8.14",
26
- "@stone-js/http-core": "^0.8.14",
27
- "@stone-js/node-http-adapter": "^0.8.14",
28
- "@stone-js/router": "^0.8.14",
29
- "@stone-js/core": "^0.8.14"
23
+ "@stone-js/use-react": "^0.8.15",
24
+ "@stone-js/browser-adapter": "^0.8.15",
25
+ "@stone-js/pipeline": "^0.8.15",
26
+ "@stone-js/http-core": "^0.8.15",
27
+ "@stone-js/node-http-adapter": "^0.8.15",
28
+ "@stone-js/router": "^0.8.15",
29
+ "@stone-js/core": "^0.8.15"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@babel/plugin-proposal-decorators": "^7.25.9",
33
33
  "@babel/preset-env": "^7.26.9",
34
34
  "@babel/preset-typescript": "^7.27.0",
35
- "@stone-js/cli": "^0.8.14",
36
- "@stone-js/testing": "^0.8.14",
35
+ "@stone-js/cli": "^0.8.15",
36
+ "@stone-js/testing": "^0.8.15",
37
37
  "@types/node": "^24.0.7",
38
38
  "@types/react": "^19.0.7",
39
39
  "@types/react-dom": "^19.0.3",
@@ -18,18 +18,18 @@
18
18
  "test:cvg": "stone test --coverage"
19
19
  },
20
20
  "dependencies": {
21
- "@stone-js/pipeline": "^0.8.14",
22
- "@stone-js/http-core": "^0.8.14",
23
- "@stone-js/node-http-adapter": "^0.8.14",
24
- "@stone-js/router": "^0.8.14",
25
- "@stone-js/core": "^0.8.14"
21
+ "@stone-js/pipeline": "^0.8.15",
22
+ "@stone-js/http-core": "^0.8.15",
23
+ "@stone-js/node-http-adapter": "^0.8.15",
24
+ "@stone-js/router": "^0.8.15",
25
+ "@stone-js/core": "^0.8.15"
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.14",
32
- "@stone-js/testing": "^0.8.14",
31
+ "@stone-js/cli": "^0.8.15",
32
+ "@stone-js/testing": "^0.8.15",
33
33
  "@types/node": "^24.0.7",
34
34
  "@vitest/coverage-v8": "^3.0.9",
35
35
  "vitest": "^3.0.9"
@@ -17,18 +17,18 @@
17
17
  "test:cvg": "stone test --coverage"
18
18
  },
19
19
  "dependencies": {
20
- "@stone-js/pipeline": "^0.8.14",
21
- "@stone-js/http-core": "^0.8.14",
22
- "@stone-js/node-http-adapter": "^0.8.14",
23
- "@stone-js/router": "^0.8.14",
24
- "@stone-js/core": "^0.8.14"
20
+ "@stone-js/pipeline": "^0.8.15",
21
+ "@stone-js/http-core": "^0.8.15",
22
+ "@stone-js/node-http-adapter": "^0.8.15",
23
+ "@stone-js/router": "^0.8.15",
24
+ "@stone-js/core": "^0.8.15"
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.14",
31
- "@stone-js/testing": "^0.8.14",
30
+ "@stone-js/cli": "^0.8.15",
31
+ "@stone-js/testing": "^0.8.15",
32
32
  "@types/node": "^24.0.7",
33
33
  "@vitest/coverage-v8": "^3.0.9",
34
34
  "vitest": "^3.0.9"