reactive-route 0.0.1-alpha.26 → 0.0.1-alpha.28
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/LICENSE +1 -1
- package/dist/cjs/adapters/vue/index.js +39 -0
- package/dist/cjs/adapters/vue/package.json +1 -0
- package/dist/cjs/vue/index.js +0 -0
- package/dist/cjs/vue/package.json +1 -0
- package/dist/esm/adapters/vue/index.js +18 -0
- package/dist/esm/adapters/vue/package.json +1 -0
- package/dist/esm/vue/index.js +0 -0
- package/dist/esm/vue/package.json +1 -0
- package/dist/tsconfig.types.react.tsbuildinfo +1 -1
- package/dist/vue/index.d.ts +1 -1
- package/dist/vue/index.d.ts.map +1 -1
- package/e2e/app.test.ts +130 -0
- package/e2e/teardown.ts +12 -0
- package/package.json +25 -9
- package/playwright.config.ts +54 -0
- package/vitepress/.vitepress/cache/deps/_metadata.json +52 -0
- package/vitepress/.vitepress/cache/deps/chunk-FL23S3EK.js +12705 -0
- package/vitepress/.vitepress/cache/deps/chunk-FL23S3EK.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/chunk-VGAXUAUJ.js +9952 -0
- package/vitepress/.vitepress/cache/deps/chunk-VGAXUAUJ.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/package.json +3 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +3844 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vueuse_core.js +588 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +1153 -0
- package/vitepress/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +1665 -0
- package/vitepress/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/vitepress___minisearch.js +1812 -0
- package/vitepress/.vitepress/cache/deps/vitepress___minisearch.js.map +7 -0
- package/vitepress/.vitepress/cache/deps/vue.js +342 -0
- package/vitepress/.vitepress/cache/deps/vue.js.map +7 -0
- package/vitepress/.vitepress/config.mts +72 -0
- package/vitepress/.vitepress/theme/custom.css +9 -0
- package/vitepress/.vitepress/theme/index.ts +5 -0
- package/vitepress/examples/preact.md +22 -0
- package/vitepress/examples/react.md +22 -0
- package/vitepress/examples/solid.md +21 -0
- package/vitepress/file.svg +79 -0
- package/vitepress/guide/advanced.md +131 -0
- package/vitepress/guide/getting-started.md +139 -0
- package/vitepress/guide/index.md +44 -0
- package/vitepress/guide/preact.md +33 -0
- package/vitepress/guide/react.md +33 -0
- package/vitepress/guide/router-component.md +67 -0
- package/vitepress/guide/router-configuration.md +185 -0
- package/vitepress/guide/routes-configuration.md +191 -0
- package/vitepress/guide/solid.md +68 -0
- package/vitepress/guide/ssr.md +70 -0
- package/vitepress/index.md +29 -0
- package/vitest.vue.config.mjs +23 -0
- package/dist/vue/Router.d.ts +0 -4
- package/dist/vue/Router.d.ts.map +0 -1
package/LICENSE
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// packages/adapters/vue.ts
|
|
21
|
+
var vue_exports = {};
|
|
22
|
+
__export(vue_exports, {
|
|
23
|
+
adapters: () => adapters
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(vue_exports);
|
|
26
|
+
var import_vue = require("vue");
|
|
27
|
+
var adapters = {
|
|
28
|
+
batch: (cb) => cb(),
|
|
29
|
+
autorun: import_vue.watchEffect,
|
|
30
|
+
replaceObject: (obj, newObj) => {
|
|
31
|
+
for (const variableKey in obj) {
|
|
32
|
+
if (obj.hasOwnProperty(variableKey)) {
|
|
33
|
+
delete obj[variableKey];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
Object.assign(obj, newObj);
|
|
37
|
+
},
|
|
38
|
+
makeObservable: import_vue.reactive
|
|
39
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "commonjs"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "commonjs"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// packages/adapters/vue.ts
|
|
2
|
+
import { reactive, watchEffect } from "vue";
|
|
3
|
+
var adapters = {
|
|
4
|
+
batch: (cb) => cb(),
|
|
5
|
+
autorun: watchEffect,
|
|
6
|
+
replaceObject: (obj, newObj) => {
|
|
7
|
+
for (const variableKey in obj) {
|
|
8
|
+
if (obj.hasOwnProperty(variableKey)) {
|
|
9
|
+
delete obj[variableKey];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
Object.assign(obj, newObj);
|
|
13
|
+
},
|
|
14
|
+
makeObservable: reactive
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
adapters
|
|
18
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../packages/declarations.d.ts","../packages/adapters/kr-observable-preact.ts","../packages/adapters/kr-observable-react.ts","../packages/adapters/kr-observable-solid.ts","../packages/adapters/mobx-preact.ts","../packages/adapters/mobx-react.ts","../packages/adapters/mobx-solid.ts","../packages/adapters/solid.ts","../packages/adapters/vue.ts","../packages/core/createRouter.ts","../packages/core/createRoutes.ts","../packages/core/index.ts","../packages/core/types/TypeAdapters.ts","../packages/core/types/TypeCurrentRoute.ts","../packages/core/types/TypeLifecycleConfig.ts","../packages/core/types/TypePropsRouter.ts","../packages/core/types/TypeRedirectParams.ts","../packages/core/types/TypeRoute.ts","../packages/core/types/TypeRouteRaw.ts","../packages/core/types/TypeRouter.ts","../packages/core/types/TypeValidator.ts","../packages/core/utils/PreventError.ts","../packages/core/utils/RedirectError.ts","../packages/core/utils/addNames.ts","../packages/core/utils/constants.ts","../packages/core/utils/dynamic.ts","../packages/core/utils/findRouteByPathname.ts","../packages/core/utils/getDynamicValues.ts","../packages/core/utils/getInitialRoute.ts","../packages/core/utils/getQueryValues.ts","../packages/core/utils/getTypedEntries.ts","../packages/core/utils/history.ts","../packages/core/utils/loadComponentToConfig.ts","../packages/core/utils/queryString.ts","../packages/core/utils/replaceDynamicValues.ts","../packages/preact/Router.tsx","../packages/preact/index.ts","../packages/react/Router.tsx","../packages/react/index.ts","../packages/vue/
|
|
1
|
+
{"root":["../packages/declarations.d.ts","../packages/adapters/kr-observable-preact.ts","../packages/adapters/kr-observable-react.ts","../packages/adapters/kr-observable-solid.ts","../packages/adapters/mobx-preact.ts","../packages/adapters/mobx-react.ts","../packages/adapters/mobx-solid.ts","../packages/adapters/solid.ts","../packages/adapters/vue.ts","../packages/core/createRouter.ts","../packages/core/createRoutes.ts","../packages/core/index.ts","../packages/core/types/TypeAdapters.ts","../packages/core/types/TypeCurrentRoute.ts","../packages/core/types/TypeLifecycleConfig.ts","../packages/core/types/TypePropsRouter.ts","../packages/core/types/TypeRedirectParams.ts","../packages/core/types/TypeRoute.ts","../packages/core/types/TypeRouteRaw.ts","../packages/core/types/TypeRouter.ts","../packages/core/types/TypeValidator.ts","../packages/core/utils/PreventError.ts","../packages/core/utils/RedirectError.ts","../packages/core/utils/addNames.ts","../packages/core/utils/constants.ts","../packages/core/utils/dynamic.ts","../packages/core/utils/findRouteByPathname.ts","../packages/core/utils/getDynamicValues.ts","../packages/core/utils/getInitialRoute.ts","../packages/core/utils/getQueryValues.ts","../packages/core/utils/getTypedEntries.ts","../packages/core/utils/history.ts","../packages/core/utils/loadComponentToConfig.ts","../packages/core/utils/queryString.ts","../packages/core/utils/replaceDynamicValues.ts","../packages/preact/Router.tsx","../packages/preact/index.ts","../packages/react/Router.tsx","../packages/react/index.ts","../packages/vue/index.ts"],"version":"5.9.2"}
|
package/dist/vue/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Router } from './Router';
|
|
1
|
+
export { default as Router } from './Router.vue';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/vue/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/vue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/vue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC"}
|
package/e2e/app.test.ts
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { expect, test } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
const h1 = 'h1';
|
|
4
|
+
|
|
5
|
+
test.describe('App routing E2E', () => {
|
|
6
|
+
test('home redirects to /static', async ({ page }) => {
|
|
7
|
+
await page.goto('/');
|
|
8
|
+
await page.waitForLoadState('networkidle');
|
|
9
|
+
await expect(page).toHaveURL('/static');
|
|
10
|
+
|
|
11
|
+
await expect(page.locator(h1)).toHaveText('Static Page');
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('redirect from /static to /page/example works', async ({ page }) => {
|
|
15
|
+
await page.goto('/static');
|
|
16
|
+
await page.waitForLoadState('networkidle');
|
|
17
|
+
await expect(page).toHaveURL('/static');
|
|
18
|
+
|
|
19
|
+
await expect(page.locator(h1)).toHaveText('Static Page');
|
|
20
|
+
|
|
21
|
+
await page.getByText('Go to Dynamic Page').click();
|
|
22
|
+
await page.waitForLoadState('networkidle');
|
|
23
|
+
await expect(page).toHaveURL('/page/example');
|
|
24
|
+
|
|
25
|
+
await expect(page.locator(h1)).toHaveText('Dynamic Page');
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('dynamic route with valid param renders and shows params', async ({ page }) => {
|
|
29
|
+
await page.goto('/page/example');
|
|
30
|
+
await page.waitForLoadState('networkidle');
|
|
31
|
+
await expect(page).toHaveURL('/page/example');
|
|
32
|
+
|
|
33
|
+
const preLocator = page.locator('.dynamic-page pre').nth(1);
|
|
34
|
+
|
|
35
|
+
await expect(page.locator(h1)).toHaveText('Dynamic Page');
|
|
36
|
+
await expect(preLocator).toContainText('"foo": "example"');
|
|
37
|
+
|
|
38
|
+
await page.getByText('Go to random dynamic value').click();
|
|
39
|
+
|
|
40
|
+
const randomFoo = ((await preLocator.textContent()) || '').match(/foo": "(\d+)"/)?.[1];
|
|
41
|
+
|
|
42
|
+
await expect(preLocator).toContainText(`"foo": "${randomFoo}"`);
|
|
43
|
+
await expect(page).toHaveURL(`/page/${randomFoo}`);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test('redirect from /static to /query works', async ({ page }) => {
|
|
47
|
+
await page.goto('/static');
|
|
48
|
+
await page.waitForLoadState('networkidle');
|
|
49
|
+
await expect(page).toHaveURL('/static');
|
|
50
|
+
|
|
51
|
+
await expect(page.locator(h1)).toHaveText('Static Page');
|
|
52
|
+
|
|
53
|
+
await page.getByText('Go to Query Page').click();
|
|
54
|
+
await page.waitForLoadState('networkidle');
|
|
55
|
+
await expect(page).toHaveURL('/query?foo=example');
|
|
56
|
+
|
|
57
|
+
await expect(page.locator(h1)).toHaveText('Query Page');
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test('query route shows params', async ({ page }) => {
|
|
61
|
+
await page.goto('/query?foo=1');
|
|
62
|
+
await page.waitForLoadState('networkidle');
|
|
63
|
+
await expect(page).toHaveURL('/query');
|
|
64
|
+
|
|
65
|
+
const preLocator = page.locator('.query-page pre').nth(1);
|
|
66
|
+
|
|
67
|
+
await expect(page.locator(h1)).toHaveText('Query Page');
|
|
68
|
+
await expect(preLocator).toContainText('{}');
|
|
69
|
+
|
|
70
|
+
await page.getByText('Go to random query value').click();
|
|
71
|
+
|
|
72
|
+
const randomFoo = ((await preLocator.textContent()) || '').match(/foo": "(\d+)"/)?.[1];
|
|
73
|
+
|
|
74
|
+
await expect(preLocator).toContainText(`"foo": "${randomFoo}"`);
|
|
75
|
+
await expect(page).toHaveURL(`/query?foo=${randomFoo}`);
|
|
76
|
+
|
|
77
|
+
await page.goto('/query?foo=bar');
|
|
78
|
+
await page.waitForLoadState('networkidle');
|
|
79
|
+
await expect(page).toHaveURL('/query?foo=bar');
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
test('invalid routes redirect to 404', async ({ page }) => {
|
|
83
|
+
await page.goto('/page/ab');
|
|
84
|
+
await page.waitForLoadState('networkidle');
|
|
85
|
+
|
|
86
|
+
await expect(page.locator('.error-code')).toHaveText('404');
|
|
87
|
+
await expect(page.locator(h1)).toHaveText('Page Not Found');
|
|
88
|
+
await expect(page).toHaveURL('/error404');
|
|
89
|
+
|
|
90
|
+
await page.goto('/ab');
|
|
91
|
+
await page.waitForLoadState('networkidle');
|
|
92
|
+
|
|
93
|
+
await expect(page.locator('.error-code')).toHaveText('404');
|
|
94
|
+
await expect(page.locator(h1)).toHaveText('Page Not Found');
|
|
95
|
+
await expect(page).toHaveURL('/error404');
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
test('prevent: coming from Dynamic to Prevent redirects to Static (beforeEnter)', async ({
|
|
99
|
+
page,
|
|
100
|
+
}) => {
|
|
101
|
+
await page.goto('/page/example');
|
|
102
|
+
await page.waitForLoadState('networkidle');
|
|
103
|
+
|
|
104
|
+
await expect(page.locator(h1)).toHaveText('Dynamic Page');
|
|
105
|
+
|
|
106
|
+
await page
|
|
107
|
+
.getByRole('button', { name: 'Go to Prevent Page (will redirect to Static)' })
|
|
108
|
+
.click();
|
|
109
|
+
await page.waitForLoadState('networkidle');
|
|
110
|
+
|
|
111
|
+
await expect(page.locator(h1)).toHaveText('Static Page');
|
|
112
|
+
await expect(page).toHaveURL('/static');
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
test('prevent: from Prevent trying to go to Query is blocked (beforeLeave) and URL remains the same', async ({
|
|
116
|
+
page,
|
|
117
|
+
}) => {
|
|
118
|
+
await page.goto('/prevent');
|
|
119
|
+
await page.waitForLoadState('networkidle');
|
|
120
|
+
|
|
121
|
+
await expect(page.locator(h1)).toHaveText('Prevent Redirect Page');
|
|
122
|
+
|
|
123
|
+
await page.getByRole('button', { name: 'Try to go to Query Page (will be blocked)' }).click();
|
|
124
|
+
|
|
125
|
+
await page.waitForTimeout(100);
|
|
126
|
+
|
|
127
|
+
await expect(page.locator(h1)).toHaveText('Prevent Redirect Page');
|
|
128
|
+
await expect(page).toHaveURL('/prevent');
|
|
129
|
+
});
|
|
130
|
+
});
|
package/e2e/teardown.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
|
|
4
|
+
export default function teardown() {
|
|
5
|
+
fs.readdirSync(path.resolve('examples')).map((project) =>
|
|
6
|
+
fs
|
|
7
|
+
.readdirSync(path.resolve('examples', project))
|
|
8
|
+
.filter((folderName) => folderName.startsWith('dist'))
|
|
9
|
+
.map((folderName) => path.resolve('examples', project, folderName))
|
|
10
|
+
.forEach((folderPath) => fs.rmSync(folderPath, { recursive: true, force: true }))
|
|
11
|
+
);
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "reactive-route",
|
|
3
3
|
"author": "Dmitry Kazakov",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "0.0.1-alpha.
|
|
5
|
+
"version": "0.0.1-alpha.28",
|
|
6
6
|
"description": "Reactive Router for different frameworks",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -11,19 +11,23 @@
|
|
|
11
11
|
"scripts": {
|
|
12
12
|
"upd": "rm -rf ./node_modules&&pnpm i --prefer-offline",
|
|
13
13
|
"build": "rm -rf ./dist&&node --import tsx ./scripts/build.ts&&tsc -b ./tsconfig.types.react.json&&tsc -b ./tsconfig.types.solid.json",
|
|
14
|
-
"test": "vitest run&&node --import tsx ./scripts/genCoverageBadge.ts",
|
|
15
|
-
"test-watch": "vitest --coverage=false",
|
|
16
14
|
"npm-publish": "pnpm run build&&pnpm run test&&npm publish --access public",
|
|
17
15
|
"analyze:js": "biome check --no-errors-on-unmatched .",
|
|
18
16
|
"format:js": "biome check --no-errors-on-unmatched --write",
|
|
19
17
|
"check-types": "tsc --project tsconfig.json&&tsc --project tsconfig.solid.json",
|
|
20
|
-
"check-types-example": "tsc --project examples/react/tsconfig.json",
|
|
18
|
+
"check-types-example": "tsc --project examples/react/tsconfig.json&&tsc --project examples/preact/tsconfig.json&&tsc --project examples/solid/tsconfig.json&&tsc --project examples/vue/tsconfig.json",
|
|
21
19
|
"prepare": "husky",
|
|
22
20
|
"upgrade-examples": "pnpm upgrade -r reactive-route@latest",
|
|
23
21
|
"upgrade-lib": "bash -c 'pnpm upgrade -r $@' bash",
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
22
|
+
"test": "vitest run&&node --import tsx ./scripts/genCoverageBadge.ts",
|
|
23
|
+
"test-watch": "vitest --coverage=false",
|
|
24
|
+
"test-vue": "vitest run --config ./vitest.vue.config.mjs --coverage=false",
|
|
25
|
+
"e2e": "playwright test",
|
|
26
|
+
"e2e:ui": "playwright test --ui",
|
|
27
|
+
"e2e:install": "playwright install --with-deps",
|
|
28
|
+
"docs:dev": "vitepress dev vitepress",
|
|
29
|
+
"docs:build": "vitepress build vitepress --outDir docs",
|
|
30
|
+
"docs:preview": "vitepress preview vitepress"
|
|
27
31
|
},
|
|
28
32
|
"lint-staged": {
|
|
29
33
|
"(*.js|*.ts|*.tsx|*.mjs)": [
|
|
@@ -43,6 +47,8 @@
|
|
|
43
47
|
"@biomejs/biome": "2.2.5",
|
|
44
48
|
"@espcom/esbuild-plugin-compress": "1.2.0",
|
|
45
49
|
"@espcom/esbuild-plugin-replace": "1.3.2",
|
|
50
|
+
"playwright": "1.56.1",
|
|
51
|
+
"@playwright/test": "1.56.1",
|
|
46
52
|
"@preact/preset-vite": "2.10.2",
|
|
47
53
|
"@solidjs/testing-library": "0.8.10",
|
|
48
54
|
"@testing-library/preact": "3.2.4",
|
|
@@ -51,7 +57,7 @@
|
|
|
51
57
|
"@types/babel__core": "7.20.5",
|
|
52
58
|
"@types/lodash": "4.17.20",
|
|
53
59
|
"@types/node": "24.7.2",
|
|
54
|
-
"
|
|
60
|
+
"unplugin-vue": "7.0.2",
|
|
55
61
|
"@vitest/coverage-istanbul": "3.2.4",
|
|
56
62
|
"@vue/test-utils": "2.4.6",
|
|
57
63
|
"babel-preset-solid": "1.9.9",
|
|
@@ -102,6 +108,16 @@
|
|
|
102
108
|
"require": "./dist/cjs/solid/index.js",
|
|
103
109
|
"import": "./dist/esm/solid/index.js"
|
|
104
110
|
},
|
|
111
|
+
"./vue": {
|
|
112
|
+
"types": "./dist/vue/index.d.ts",
|
|
113
|
+
"require": "./dist/cjs/vue/index.js",
|
|
114
|
+
"import": "./dist/esm/vue/index.js"
|
|
115
|
+
},
|
|
116
|
+
"./adapters/vue": {
|
|
117
|
+
"types": "./dist/adapters/vue.d.ts",
|
|
118
|
+
"require": "./dist/cjs/adapters/vue/index.js",
|
|
119
|
+
"import": "./dist/esm/adapters/vue/index.js"
|
|
120
|
+
},
|
|
105
121
|
"./adapters/mobx-react": {
|
|
106
122
|
"types": "./dist/adapters/mobx-react.d.ts",
|
|
107
123
|
"require": "./dist/cjs/adapters/mobx-react/index.js",
|
|
@@ -141,4 +157,4 @@
|
|
|
141
157
|
"main": "dist/cjs/index.js",
|
|
142
158
|
"module": "dist/esm/index.js",
|
|
143
159
|
"types": "dist/core/index.d.ts"
|
|
144
|
-
}
|
|
160
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { defineConfig, devices } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
const csrVariants: Array<{ name: string; scriptName: string }> = [
|
|
4
|
+
{ name: '[React+Mobx]', scriptName: './examples/react mobx' },
|
|
5
|
+
{ name: '[React+Observable]', scriptName: './examples/react observable' },
|
|
6
|
+
{ name: '[Preact+Mobx]', scriptName: './examples/preact mobx' },
|
|
7
|
+
{ name: '[Preact+Observable]', scriptName: './examples/preact observable' },
|
|
8
|
+
{ name: '[Solid+Mobx]', scriptName: './examples/solid mobx' },
|
|
9
|
+
{ name: '[Solid+Observable]', scriptName: './examples/solid observable' },
|
|
10
|
+
{ name: '[Solid+Solid]', scriptName: './examples/solid solid' },
|
|
11
|
+
{ name: '[Vue+Vue]', scriptName: './examples/vue vue' },
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
const ssrVariants: Array<{ name: string; scriptName: string }> = [
|
|
15
|
+
{ name: '[React+Mobx+SSR]', scriptName: './examples/react ssr-mobx' },
|
|
16
|
+
{ name: '[React+Observable+SSR]', scriptName: './examples/react ssr-observable' },
|
|
17
|
+
{ name: '[Preact+Mobx+SSR]', scriptName: './examples/preact ssr-mobx' },
|
|
18
|
+
{ name: '[Preact+Observable+SSR]', scriptName: './examples/preact ssr-observable' },
|
|
19
|
+
{ name: '[Solid+Mobx+SSR]', scriptName: './examples/solid ssr-mobx' },
|
|
20
|
+
{ name: '[Solid+Observable+SSR]', scriptName: './examples/solid ssr-observable' },
|
|
21
|
+
{ name: '[Solid+Solid+SSR]', scriptName: './examples/solid ssr-solid' },
|
|
22
|
+
{ name: '[Vue+Vue+SSR]', scriptName: './examples/vue ssr-vue' },
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const variants: Array<{ name: string; port: number; scriptName: string }> = [
|
|
26
|
+
...csrVariants,
|
|
27
|
+
...ssrVariants,
|
|
28
|
+
].map((variant, i) => ({ ...variant, port: 8002 + i * 2 }));
|
|
29
|
+
|
|
30
|
+
export default defineConfig({
|
|
31
|
+
testDir: './e2e',
|
|
32
|
+
fullyParallel: true,
|
|
33
|
+
forbidOnly: false,
|
|
34
|
+
retries: 0,
|
|
35
|
+
// workers: 10,
|
|
36
|
+
reporter: [['list']],
|
|
37
|
+
webServer: variants.map((variant) => ({
|
|
38
|
+
name: variant.name,
|
|
39
|
+
command: `pnpm --filter ${variant.scriptName} ${variant.port} test`,
|
|
40
|
+
port: variant.port,
|
|
41
|
+
reuseExistingServer: false,
|
|
42
|
+
timeout: 10000,
|
|
43
|
+
cwd: __dirname,
|
|
44
|
+
stdout: 'pipe',
|
|
45
|
+
})),
|
|
46
|
+
projects: variants.map((variant) => ({
|
|
47
|
+
name: variant.name,
|
|
48
|
+
use: {
|
|
49
|
+
baseURL: `http://localhost:${variant.port}`,
|
|
50
|
+
...devices['Desktop Chrome'],
|
|
51
|
+
},
|
|
52
|
+
})),
|
|
53
|
+
globalTeardown: require.resolve('./e2e/teardown'),
|
|
54
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hash": "5a633cf9",
|
|
3
|
+
"configHash": "c2aca7c2",
|
|
4
|
+
"lockfileHash": "81207e34",
|
|
5
|
+
"browserHash": "ffb49e63",
|
|
6
|
+
"optimized": {
|
|
7
|
+
"vue": {
|
|
8
|
+
"src": "../../../../node_modules/.pnpm/vue@3.5.22_typescript@5.9.2/node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
|
9
|
+
"file": "vue.js",
|
|
10
|
+
"fileHash": "acc43dc7",
|
|
11
|
+
"needsInterop": false
|
|
12
|
+
},
|
|
13
|
+
"vitepress > @vue/devtools-api": {
|
|
14
|
+
"src": "../../../../node_modules/.pnpm/@vue+devtools-api@8.0.1/node_modules/@vue/devtools-api/dist/index.js",
|
|
15
|
+
"file": "vitepress___@vue_devtools-api.js",
|
|
16
|
+
"fileHash": "f6e97e3d",
|
|
17
|
+
"needsInterop": false
|
|
18
|
+
},
|
|
19
|
+
"vitepress > @vueuse/core": {
|
|
20
|
+
"src": "../../../../node_modules/.pnpm/@vueuse+core@13.9.0_vue@3.5.22_typescript@5.9.2_/node_modules/@vueuse/core/index.mjs",
|
|
21
|
+
"file": "vitepress___@vueuse_core.js",
|
|
22
|
+
"fileHash": "10a3e7ca",
|
|
23
|
+
"needsInterop": false
|
|
24
|
+
},
|
|
25
|
+
"vitepress > @vueuse/integrations/useFocusTrap": {
|
|
26
|
+
"src": "../../../../node_modules/.pnpm/@vueuse+integrations@13.9.0_focus-trap@7.6.5_vue@3.5.22_typescript@5.9.2_/node_modules/@vueuse/integrations/useFocusTrap.mjs",
|
|
27
|
+
"file": "vitepress___@vueuse_integrations_useFocusTrap.js",
|
|
28
|
+
"fileHash": "a8fdd658",
|
|
29
|
+
"needsInterop": false
|
|
30
|
+
},
|
|
31
|
+
"vitepress > mark.js/src/vanilla.js": {
|
|
32
|
+
"src": "../../../../node_modules/.pnpm/mark.js@8.11.1/node_modules/mark.js/src/vanilla.js",
|
|
33
|
+
"file": "vitepress___mark__js_src_vanilla__js.js",
|
|
34
|
+
"fileHash": "be042848",
|
|
35
|
+
"needsInterop": false
|
|
36
|
+
},
|
|
37
|
+
"vitepress > minisearch": {
|
|
38
|
+
"src": "../../../../node_modules/.pnpm/minisearch@7.1.2/node_modules/minisearch/dist/es/index.js",
|
|
39
|
+
"file": "vitepress___minisearch.js",
|
|
40
|
+
"fileHash": "f4e7a04e",
|
|
41
|
+
"needsInterop": false
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"chunks": {
|
|
45
|
+
"chunk-VGAXUAUJ": {
|
|
46
|
+
"file": "chunk-VGAXUAUJ.js"
|
|
47
|
+
},
|
|
48
|
+
"chunk-FL23S3EK": {
|
|
49
|
+
"file": "chunk-FL23S3EK.js"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|