test(e2e): add for onboarding and lldap authorization (#1834)
* test(e2e): add for onboarding and lldap authorization * ci: add playwright chrome installation to e2e test * fix(e2e): timeout between lldap login redirect to short * test(e2e): add oidc azure test * fix(e2e): lldap test fails * wip: add temporary error log for failed ldap server connection * fix(e2e): github actions don't support host.docker.internal * chore: address pull request feedback * refactor(e2e): move onboarding steps to onboarding actions and assertions * fix(e2e): increase timeout for navigating back from azure login * fix: wait for url network changed error * fix: revert to wait for url * fix(e2e): remove oidc test * refactor(e2e): remove env validation * ci: remove azure oidc env variables
This commit is contained in:
@@ -6,4 +6,5 @@ README.md
|
|||||||
.next
|
.next
|
||||||
.git
|
.git
|
||||||
dev
|
dev
|
||||||
.build
|
.build
|
||||||
|
e2e
|
||||||
2
.github/workflows/code-quality.yml
vendored
2
.github/workflows/code-quality.yml
vendored
@@ -91,6 +91,8 @@ jobs:
|
|||||||
network: host
|
network: host
|
||||||
env:
|
env:
|
||||||
SKIP_ENV_VALIDATION: true
|
SKIP_ENV_VALIDATION: true
|
||||||
|
- name: Install playwright browsers
|
||||||
|
run: pnpm exec playwright install chromium
|
||||||
- name: Run E2E Tests
|
- name: Run E2E Tests
|
||||||
shell: bash
|
shell: bash
|
||||||
run: pnpm test:e2e
|
run: pnpm test:e2e
|
||||||
|
|||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -58,6 +58,8 @@ apps/websocket/wssServer.cjs
|
|||||||
apps/nextjs/.million/
|
apps/nextjs/.million/
|
||||||
packages/cli/cli.cjs
|
packages/cli/cli.cjs
|
||||||
|
|
||||||
|
# e2e mounts
|
||||||
|
e2e/shared/tmp
|
||||||
|
|
||||||
#personal backgrounds
|
#personal backgrounds
|
||||||
apps/nextjs/public/images/background.png
|
apps/nextjs/public/images/background.png
|
||||||
92
e2e/lldap.spec.ts
Normal file
92
e2e/lldap.spec.ts
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
import { chromium } from "playwright";
|
||||||
|
import { GenericContainer } from "testcontainers";
|
||||||
|
import { describe, expect, test } from "vitest";
|
||||||
|
|
||||||
|
import { OnboardingActions } from "./shared/actions/onboarding-actions";
|
||||||
|
import { createHomarrContainer, withLogs } from "./shared/create-homarr-container";
|
||||||
|
import { createSqliteDbFileAsync } from "./shared/e2e-db";
|
||||||
|
|
||||||
|
const defaultCredentials = {
|
||||||
|
username: "admin",
|
||||||
|
password: "password",
|
||||||
|
email: "admin@homarr.dev",
|
||||||
|
group: "lldap_admin",
|
||||||
|
};
|
||||||
|
|
||||||
|
const ldapBase = "dc=example,dc=com";
|
||||||
|
|
||||||
|
describe("LLDAP authorization", () => {
|
||||||
|
test("Authorize with LLDAP successfully", async () => {
|
||||||
|
// Arrange
|
||||||
|
const lldapContainer = await createLldapContainer().start();
|
||||||
|
const { db, localMountPath } = await createSqliteDbFileAsync();
|
||||||
|
const homarrContainer = await createHomarrContainer({
|
||||||
|
environment: {
|
||||||
|
AUTH_PROVIDERS: "ldap",
|
||||||
|
AUTH_LDAP_URI: `ldap://host.docker.internal:${lldapContainer.getMappedPort(3890)}`,
|
||||||
|
AUTH_LDAP_BASE: ldapBase,
|
||||||
|
AUTH_LDAP_BIND_DN: `uid=${defaultCredentials.username},ou=People,${ldapBase}`,
|
||||||
|
AUTH_LDAP_BIND_PASSWORD: defaultCredentials.password,
|
||||||
|
},
|
||||||
|
mounts: {
|
||||||
|
"/appdata": localMountPath,
|
||||||
|
},
|
||||||
|
}).start();
|
||||||
|
|
||||||
|
const browser = await chromium.launch();
|
||||||
|
const context = await browser.newContext();
|
||||||
|
const page = await context.newPage();
|
||||||
|
|
||||||
|
const onboardingActions = new OnboardingActions(page, db);
|
||||||
|
await onboardingActions.skipOnboardingAsync({
|
||||||
|
group: defaultCredentials.group,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await page.goto(`http://${homarrContainer.getHost()}:${homarrContainer.getMappedPort(7575)}/auth/login`);
|
||||||
|
await page.getByLabel("Username").fill(defaultCredentials.username);
|
||||||
|
await page.getByLabel("Password").fill(defaultCredentials.password);
|
||||||
|
await page.locator("css=button[type='submit']").click();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
await page.waitForURL(`http://${homarrContainer.getHost()}:${homarrContainer.getMappedPort(7575)}`);
|
||||||
|
const users = await db.query.users.findMany({
|
||||||
|
with: {
|
||||||
|
groups: {
|
||||||
|
with: {
|
||||||
|
group: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
expect(users).toHaveLength(1);
|
||||||
|
const user = users[0]!;
|
||||||
|
expect(user).toEqual(
|
||||||
|
expect.objectContaining({
|
||||||
|
name: defaultCredentials.username,
|
||||||
|
email: defaultCredentials.email,
|
||||||
|
provider: "ldap",
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
const groups = user.groups.map((g) => g.group.name);
|
||||||
|
expect(groups).toContain(defaultCredentials.group);
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
await browser.close();
|
||||||
|
await homarrContainer.stop();
|
||||||
|
await lldapContainer.stop();
|
||||||
|
}, 120_000);
|
||||||
|
});
|
||||||
|
|
||||||
|
const createLldapContainer = () => {
|
||||||
|
return withLogs(
|
||||||
|
new GenericContainer("lldap/lldap:stable").withExposedPorts(3890).withEnvironment({
|
||||||
|
LLDAP_JWT_SECRET: "REPLACE_WITH_RANDOM",
|
||||||
|
LLDAP_KEY_SEED: "REPLACE_WITH_RANDOM",
|
||||||
|
LLDAP_LDAP_BASE_DN: ldapBase,
|
||||||
|
LLDAP_LDAP_USER_PASS: defaultCredentials.password,
|
||||||
|
LLDAP_LDAP_USER_EMAIL: defaultCredentials.email,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
};
|
||||||
85
e2e/onboarding.spec.ts
Normal file
85
e2e/onboarding.spec.ts
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
import { chromium } from "playwright";
|
||||||
|
import { describe, test } from "vitest";
|
||||||
|
|
||||||
|
import { OnboardingActions } from "./shared/actions/onboarding-actions";
|
||||||
|
import { OnboardingAssertions } from "./shared/assertions/onboarding-assertions";
|
||||||
|
import { createHomarrContainer } from "./shared/create-homarr-container";
|
||||||
|
import { createSqliteDbFileAsync } from "./shared/e2e-db";
|
||||||
|
|
||||||
|
describe("Onboarding", () => {
|
||||||
|
test("Credentials onboarding should be successful", async () => {
|
||||||
|
// Arrange
|
||||||
|
const { db, localMountPath } = await createSqliteDbFileAsync();
|
||||||
|
const homarrContainer = await createHomarrContainer({
|
||||||
|
mounts: {
|
||||||
|
"/appdata": localMountPath,
|
||||||
|
},
|
||||||
|
}).start();
|
||||||
|
|
||||||
|
const browser = await chromium.launch();
|
||||||
|
const context = await browser.newContext();
|
||||||
|
const page = await context.newPage();
|
||||||
|
const actions = new OnboardingActions(page, db);
|
||||||
|
const assertions = new OnboardingAssertions(page, db);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await page.goto(`http://${homarrContainer.getHost()}:${homarrContainer.getMappedPort(7575)}`);
|
||||||
|
await actions.startOnboardingAsync("scratch");
|
||||||
|
await actions.processUserStepAsync({
|
||||||
|
username: "admin",
|
||||||
|
password: "Comp(exP4sswOrd",
|
||||||
|
confirmPassword: "Comp(exP4sswOrd",
|
||||||
|
});
|
||||||
|
await actions.processSettingsStepAsync();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
await assertions.assertFinishStepVisibleAsync();
|
||||||
|
await assertions.assertUserAndAdminGroupInsertedAsync("admin");
|
||||||
|
await assertions.assertDbOnboardingStepAsync("finish");
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
await browser.close();
|
||||||
|
await homarrContainer.stop();
|
||||||
|
}, 60_000);
|
||||||
|
|
||||||
|
test("External provider onboarding setup should be successful", async () => {
|
||||||
|
// Arrange
|
||||||
|
const { db, localMountPath } = await createSqliteDbFileAsync();
|
||||||
|
const homarrContainer = await createHomarrContainer({
|
||||||
|
environment: {
|
||||||
|
AUTH_PROVIDERS: "ldap",
|
||||||
|
AUTH_LDAP_URI: "ldap://host.docker.internal:3890",
|
||||||
|
AUTH_LDAP_BASE: "",
|
||||||
|
AUTH_LDAP_BIND_DN: "",
|
||||||
|
AUTH_LDAP_BIND_PASSWORD: "",
|
||||||
|
},
|
||||||
|
mounts: {
|
||||||
|
"/appdata": localMountPath,
|
||||||
|
},
|
||||||
|
}).start();
|
||||||
|
const externalGroupName = "oidc-admins";
|
||||||
|
|
||||||
|
const browser = await chromium.launch();
|
||||||
|
const context = await browser.newContext();
|
||||||
|
const page = await context.newPage();
|
||||||
|
const actions = new OnboardingActions(page, db);
|
||||||
|
const assertions = new OnboardingAssertions(page, db);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await page.goto(`http://${homarrContainer.getHost()}:${homarrContainer.getMappedPort(7575)}`);
|
||||||
|
await actions.startOnboardingAsync("scratch");
|
||||||
|
await actions.processExternalGroupStepAsync({
|
||||||
|
name: externalGroupName,
|
||||||
|
});
|
||||||
|
await actions.processSettingsStepAsync();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
await assertions.assertFinishStepVisibleAsync();
|
||||||
|
await assertions.assertExternalGroupInsertedAsync(externalGroupName);
|
||||||
|
await assertions.assertDbOnboardingStepAsync("finish");
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
await browser.close();
|
||||||
|
await homarrContainer.stop();
|
||||||
|
}, 60_000);
|
||||||
|
});
|
||||||
53
e2e/shared/actions/onboarding-actions.ts
Normal file
53
e2e/shared/actions/onboarding-actions.ts
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
import { createId } from "@paralleldrive/cuid2";
|
||||||
|
import type { Page } from "playwright";
|
||||||
|
|
||||||
|
import * as sqliteSchema from "../../../packages/db/schema/sqlite";
|
||||||
|
import type { SqliteDatabase } from "../e2e-db";
|
||||||
|
|
||||||
|
export class OnboardingActions {
|
||||||
|
private readonly page: Page;
|
||||||
|
private readonly db: SqliteDatabase;
|
||||||
|
|
||||||
|
constructor(page: Page, db: SqliteDatabase) {
|
||||||
|
this.page = page;
|
||||||
|
this.db = db;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async skipOnboardingAsync(input?: { group?: string }) {
|
||||||
|
await this.db.update(sqliteSchema.onboarding).set({
|
||||||
|
step: "finish",
|
||||||
|
});
|
||||||
|
|
||||||
|
if (input?.group) {
|
||||||
|
await this.db.insert(sqliteSchema.groups).values({
|
||||||
|
id: createId(),
|
||||||
|
name: input.group,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async startOnboardingAsync(type: "scratch" | "before 1.0") {
|
||||||
|
await this.page.locator("button", { hasText: type }).click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async processUserStepAsync(input: { username: string; password: string; confirmPassword: string }) {
|
||||||
|
await this.page.waitForSelector("text=administrator user");
|
||||||
|
|
||||||
|
await this.page.getByLabel("Username").fill(input.username);
|
||||||
|
await this.page.getByLabel("Password", { exact: true }).fill(input.password);
|
||||||
|
await this.page.getByLabel("Confirm password").fill(input.confirmPassword);
|
||||||
|
|
||||||
|
await this.page.locator("css=button[type='submit']").click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async processExternalGroupStepAsync(input: { name: string }) {
|
||||||
|
await this.page.waitForSelector("text=external provider");
|
||||||
|
await this.page.locator("input").fill(input.name);
|
||||||
|
await this.page.locator("css=button[type='submit']").click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async processSettingsStepAsync() {
|
||||||
|
await this.page.waitForSelector("text=Analytics");
|
||||||
|
await this.page.locator("css=button[type='submit']").click();
|
||||||
|
}
|
||||||
|
}
|
||||||
62
e2e/shared/assertions/onboarding-assertions.ts
Normal file
62
e2e/shared/assertions/onboarding-assertions.ts
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
import { eq } from "drizzle-orm";
|
||||||
|
import type { Page } from "playwright";
|
||||||
|
import { expect } from "vitest";
|
||||||
|
|
||||||
|
import * as sqliteSchema from "../../../packages/db/schema/sqlite";
|
||||||
|
import { OnboardingStep } from "../../../packages/definitions/src";
|
||||||
|
import { credentialsAdminGroup } from "../../../packages/definitions/src/group";
|
||||||
|
import type { SqliteDatabase } from "../e2e-db";
|
||||||
|
|
||||||
|
export class OnboardingAssertions {
|
||||||
|
private readonly page: Page;
|
||||||
|
private readonly db: SqliteDatabase;
|
||||||
|
|
||||||
|
constructor(page: Page, db: SqliteDatabase) {
|
||||||
|
this.page = page;
|
||||||
|
this.db = db;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async assertDbOnboardingStepAsync(expectedStep: OnboardingStep) {
|
||||||
|
const onboarding = await this.db.query.onboarding.findFirst();
|
||||||
|
expect(onboarding?.step).toEqual(expectedStep);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async assertUserAndAdminGroupInsertedAsync(expectedUsername: string) {
|
||||||
|
const users = await this.db.query.users.findMany({
|
||||||
|
with: {
|
||||||
|
groups: {
|
||||||
|
with: {
|
||||||
|
group: {
|
||||||
|
with: {
|
||||||
|
permissions: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const user = users.find((u) => u.name === expectedUsername);
|
||||||
|
expect(user).toBeDefined();
|
||||||
|
|
||||||
|
const adminGroup = user!.groups.find((g) => g.group.name === credentialsAdminGroup);
|
||||||
|
expect(adminGroup).toBeDefined();
|
||||||
|
expect(adminGroup!.group.permissions).toEqual([expect.objectContaining({ permission: "admin" })]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async assertExternalGroupInsertedAsync(expectedGroupName: string) {
|
||||||
|
const group = await this.db.query.groups.findFirst({
|
||||||
|
where: eq(sqliteSchema.groups.name, expectedGroupName),
|
||||||
|
with: {
|
||||||
|
permissions: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(group).toBeDefined();
|
||||||
|
expect(group!.permissions).toEqual([expect.objectContaining({ permission: "admin" })]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async assertFinishStepVisibleAsync() {
|
||||||
|
await this.page.waitForSelector("text=completed the setup", { timeout: 5000 });
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,18 +1,43 @@
|
|||||||
import { GenericContainer, Wait } from "testcontainers";
|
import { GenericContainer, Wait } from "testcontainers";
|
||||||
|
import { Environment } from "testcontainers/build/types";
|
||||||
|
|
||||||
export const createHomarrContainer = () => {
|
export const createHomarrContainer = (
|
||||||
|
options: {
|
||||||
|
environment?: Environment;
|
||||||
|
mounts?: {
|
||||||
|
"/appdata"?: string;
|
||||||
|
"/var/run/docker.sock"?: string;
|
||||||
|
};
|
||||||
|
} = {},
|
||||||
|
) => {
|
||||||
if (!process.env.CI) {
|
if (!process.env.CI) {
|
||||||
throw new Error("This test should only be run in CI or with a homarr image named 'homarr-e2e'");
|
throw new Error("This test should only be run in CI or with a homarr image named 'homarr-e2e'");
|
||||||
}
|
}
|
||||||
|
|
||||||
return withLogs(
|
const container = new GenericContainer("homarr-e2e")
|
||||||
new GenericContainer("homarr-e2e")
|
.withExposedPorts(7575)
|
||||||
.withExposedPorts(7575)
|
.withEnvironment({
|
||||||
.withEnvironment({
|
...options.environment,
|
||||||
SECRET_ENCRYPTION_KEY: "0".repeat(64),
|
SECRET_ENCRYPTION_KEY: "0".repeat(64),
|
||||||
})
|
})
|
||||||
.withWaitStrategy(Wait.forHttp("/api/health/ready", 7575)),
|
.withBindMounts(
|
||||||
);
|
Object.entries(options.mounts ?? {})
|
||||||
|
.filter((item) => item?.[0] !== undefined)
|
||||||
|
.map(([container, local]) => ({
|
||||||
|
source: local,
|
||||||
|
target: container,
|
||||||
|
})),
|
||||||
|
)
|
||||||
|
.withWaitStrategy(Wait.forHttp("/api/health/ready", 7575))
|
||||||
|
.withExtraHosts([
|
||||||
|
{
|
||||||
|
// This enabled the usage of host.docker.internal as hostname in the container
|
||||||
|
host: "host.docker.internal",
|
||||||
|
ipAddress: "host-gateway",
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
return withLogs(container);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const withLogs = (container: GenericContainer) => {
|
export const withLogs = (container: GenericContainer) => {
|
||||||
|
|||||||
32
e2e/shared/e2e-db.ts
Normal file
32
e2e/shared/e2e-db.ts
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import { mkdir } from "fs/promises";
|
||||||
|
import path from "path";
|
||||||
|
import { createId } from "@paralleldrive/cuid2";
|
||||||
|
import Database from "better-sqlite3";
|
||||||
|
import { BetterSQLite3Database, drizzle } from "drizzle-orm/better-sqlite3";
|
||||||
|
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
|
||||||
|
|
||||||
|
import * as sqliteSchema from "../../packages/db/schema/sqlite";
|
||||||
|
|
||||||
|
export const createSqliteDbFileAsync = async () => {
|
||||||
|
const localMountPath = path.join(__dirname, "tmp", createId());
|
||||||
|
await mkdir(path.join(localMountPath, "db"), { recursive: true });
|
||||||
|
|
||||||
|
const localDbUrl = path.join(localMountPath, "db", "db.sqlite");
|
||||||
|
|
||||||
|
const connection = new Database(localDbUrl);
|
||||||
|
const db = drizzle(connection, {
|
||||||
|
schema: sqliteSchema,
|
||||||
|
casing: "snake_case",
|
||||||
|
});
|
||||||
|
|
||||||
|
await migrate(db, {
|
||||||
|
migrationsFolder: path.join(__dirname, "..", "..", "packages", "db", "migrations", "sqlite"),
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
db,
|
||||||
|
localMountPath,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export type SqliteDatabase = BetterSQLite3Database<typeof sqliteSchema>;
|
||||||
@@ -9,6 +9,7 @@ export type HomarrDocumentationPath =
|
|||||||
| "/blog/2023/12/22/updated-documentation"
|
| "/blog/2023/12/22/updated-documentation"
|
||||||
| "/blog/2024/09/23/version-1.0"
|
| "/blog/2024/09/23/version-1.0"
|
||||||
| "/blog/2024/12/17/open-beta-1.0"
|
| "/blog/2024/12/17/open-beta-1.0"
|
||||||
|
| "/blog/2024/12/31/migrate-secret-enryption-key"
|
||||||
| "/blog/archive"
|
| "/blog/archive"
|
||||||
| "/blog/authors"
|
| "/blog/authors"
|
||||||
| "/blog/authors/ajnart"
|
| "/blog/authors/ajnart"
|
||||||
@@ -100,11 +101,13 @@ export type HomarrDocumentationPath =
|
|||||||
| "/docs/tags/open-media-vault"
|
| "/docs/tags/open-media-vault"
|
||||||
| "/docs/tags/overseerr"
|
| "/docs/tags/overseerr"
|
||||||
| "/docs/tags/permissions"
|
| "/docs/tags/permissions"
|
||||||
|
| "/docs/tags/pgid"
|
||||||
| "/docs/tags/pi-hole"
|
| "/docs/tags/pi-hole"
|
||||||
| "/docs/tags/ping"
|
| "/docs/tags/ping"
|
||||||
| "/docs/tags/programming"
|
| "/docs/tags/programming"
|
||||||
| "/docs/tags/proxmox"
|
| "/docs/tags/proxmox"
|
||||||
| "/docs/tags/proxy"
|
| "/docs/tags/proxy"
|
||||||
|
| "/docs/tags/puid"
|
||||||
| "/docs/tags/roles"
|
| "/docs/tags/roles"
|
||||||
| "/docs/tags/rss"
|
| "/docs/tags/rss"
|
||||||
| "/docs/tags/search"
|
| "/docs/tags/search"
|
||||||
@@ -135,6 +138,7 @@ export type HomarrDocumentationPath =
|
|||||||
| "/docs/advanced/icons"
|
| "/docs/advanced/icons"
|
||||||
| "/docs/advanced/keyboard-shortcuts"
|
| "/docs/advanced/keyboard-shortcuts"
|
||||||
| "/docs/advanced/proxy"
|
| "/docs/advanced/proxy"
|
||||||
|
| "/docs/advanced/running-as-different-user"
|
||||||
| "/docs/advanced/single-sign-on"
|
| "/docs/advanced/single-sign-on"
|
||||||
| "/docs/category/advanced"
|
| "/docs/category/advanced"
|
||||||
| "/docs/category/community"
|
| "/docs/category/community"
|
||||||
|
|||||||
77
pnpm-lock.yaml
generated
77
pnpm-lock.yaml
generated
@@ -183,13 +183,13 @@ importers:
|
|||||||
version: 5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(react@19.0.0)
|
version: 5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(react@19.0.0)
|
||||||
'@tanstack/react-query-next-experimental':
|
'@tanstack/react-query-next-experimental':
|
||||||
specifier: 5.62.12
|
specifier: 5.62.12
|
||||||
version: 5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)
|
version: 5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)
|
||||||
'@trpc/client':
|
'@trpc/client':
|
||||||
specifier: next
|
specifier: next
|
||||||
version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2)
|
version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2)
|
||||||
'@trpc/next':
|
'@trpc/next':
|
||||||
specifier: next
|
specifier: next
|
||||||
version: 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)
|
version: 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)
|
||||||
'@trpc/react-query':
|
'@trpc/react-query':
|
||||||
specifier: next
|
specifier: next
|
||||||
version: 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)
|
version: 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)
|
||||||
@@ -231,7 +231,7 @@ importers:
|
|||||||
version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||||
next:
|
next:
|
||||||
specifier: ^14.2.22
|
specifier: ^14.2.22
|
||||||
version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
postcss-preset-mantine:
|
postcss-preset-mantine:
|
||||||
specifier: ^1.17.0
|
specifier: ^1.17.0
|
||||||
version: 1.17.0(postcss@8.4.47)
|
version: 1.17.0(postcss@8.4.47)
|
||||||
@@ -556,7 +556,7 @@ importers:
|
|||||||
version: 4.5.0
|
version: 4.5.0
|
||||||
next:
|
next:
|
||||||
specifier: ^14.2.22
|
specifier: ^14.2.22
|
||||||
version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^19.0.0
|
specifier: ^19.0.0
|
||||||
version: 19.0.0
|
version: 19.0.0
|
||||||
@@ -626,10 +626,10 @@ importers:
|
|||||||
version: 7.3.0
|
version: 7.3.0
|
||||||
next:
|
next:
|
||||||
specifier: ^14.2.22
|
specifier: ^14.2.22
|
||||||
version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
next-auth:
|
next-auth:
|
||||||
specifier: 5.0.0-beta.25
|
specifier: 5.0.0-beta.25
|
||||||
version: 5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)
|
version: 5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^19.0.0
|
specifier: ^19.0.0
|
||||||
version: 19.0.0
|
version: 19.0.0
|
||||||
@@ -706,7 +706,7 @@ importers:
|
|||||||
version: 1.11.13
|
version: 1.11.13
|
||||||
next:
|
next:
|
||||||
specifier: ^14.2.22
|
specifier: ^14.2.22
|
||||||
version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^19.0.0
|
specifier: ^19.0.0
|
||||||
version: 19.0.0
|
version: 19.0.0
|
||||||
@@ -1195,7 +1195,7 @@ importers:
|
|||||||
version: 1.11.13
|
version: 1.11.13
|
||||||
next:
|
next:
|
||||||
specifier: ^14.2.22
|
specifier: ^14.2.22
|
||||||
version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^19.0.0
|
specifier: ^19.0.0
|
||||||
version: 19.0.0
|
version: 19.0.0
|
||||||
@@ -1290,7 +1290,7 @@ importers:
|
|||||||
version: 0.5.16
|
version: 0.5.16
|
||||||
next:
|
next:
|
||||||
specifier: ^14.2.22
|
specifier: ^14.2.22
|
||||||
version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^19.0.0
|
specifier: ^19.0.0
|
||||||
version: 19.0.0
|
version: 19.0.0
|
||||||
@@ -1530,7 +1530,7 @@ importers:
|
|||||||
version: 2.11.0(@types/react@18.3.13)(react@19.0.0)
|
version: 2.11.0(@types/react@18.3.13)(react@19.0.0)
|
||||||
next:
|
next:
|
||||||
specifier: ^14.2.22
|
specifier: ^14.2.22
|
||||||
version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^19.0.0
|
specifier: ^19.0.0
|
||||||
version: 19.0.0
|
version: 19.0.0
|
||||||
@@ -1573,10 +1573,10 @@ importers:
|
|||||||
version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||||
next:
|
next:
|
||||||
specifier: ^14.2.22
|
specifier: ^14.2.22
|
||||||
version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
next-intl:
|
next-intl:
|
||||||
specifier: 3.26.3
|
specifier: 3.26.3
|
||||||
version: 3.26.3(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)
|
version: 3.26.3(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^19.0.0
|
specifier: ^19.0.0
|
||||||
version: 19.0.0
|
version: 19.0.0
|
||||||
@@ -1631,7 +1631,7 @@ importers:
|
|||||||
version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||||
next:
|
next:
|
||||||
specifier: ^14.2.22
|
specifier: ^14.2.22
|
||||||
version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^19.0.0
|
specifier: ^19.0.0
|
||||||
version: 19.0.0
|
version: 19.0.0
|
||||||
@@ -1804,7 +1804,7 @@ importers:
|
|||||||
version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||||
next:
|
next:
|
||||||
specifier: ^14.2.22
|
specifier: ^14.2.22
|
||||||
version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react:
|
react:
|
||||||
specifier: ^19.0.0
|
specifier: ^19.0.0
|
||||||
version: 19.0.0
|
version: 19.0.0
|
||||||
@@ -3341,6 +3341,11 @@ packages:
|
|||||||
resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
|
resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
|
||||||
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
|
||||||
|
|
||||||
|
'@playwright/test@1.49.1':
|
||||||
|
resolution: {integrity: sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
'@pnpm/config.env-replace@1.1.0':
|
'@pnpm/config.env-replace@1.1.0':
|
||||||
resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==}
|
resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==}
|
||||||
engines: {node: '>=12.22.0'}
|
engines: {node: '>=12.22.0'}
|
||||||
@@ -7577,11 +7582,21 @@ packages:
|
|||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
playwright-core@1.49.1:
|
||||||
|
resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
playwright@1.49.0:
|
playwright@1.49.0:
|
||||||
resolution: {integrity: sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==}
|
resolution: {integrity: sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
playwright@1.49.1:
|
||||||
|
resolution: {integrity: sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
possible-typed-array-names@1.0.0:
|
possible-typed-array-names@1.0.0:
|
||||||
resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
|
resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@@ -10772,6 +10787,11 @@ snapshots:
|
|||||||
|
|
||||||
'@pkgr/core@0.1.1': {}
|
'@pkgr/core@0.1.1': {}
|
||||||
|
|
||||||
|
'@playwright/test@1.49.1':
|
||||||
|
dependencies:
|
||||||
|
playwright: 1.49.1
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@pnpm/config.env-replace@1.1.0': {}
|
'@pnpm/config.env-replace@1.1.0': {}
|
||||||
|
|
||||||
'@pnpm/network.ca-file@1.0.2':
|
'@pnpm/network.ca-file@1.0.2':
|
||||||
@@ -11335,10 +11355,10 @@ snapshots:
|
|||||||
'@tanstack/react-query': 5.62.12(react@19.0.0)
|
'@tanstack/react-query': 5.62.12(react@19.0.0)
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
|
|
||||||
'@tanstack/react-query-next-experimental@5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)':
|
'@tanstack/react-query-next-experimental@5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tanstack/react-query': 5.62.12(react@19.0.0)
|
'@tanstack/react-query': 5.62.12(react@19.0.0)
|
||||||
next: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
|
|
||||||
'@tanstack/react-query@5.62.12(react@19.0.0)':
|
'@tanstack/react-query@5.62.12(react@19.0.0)':
|
||||||
@@ -11582,11 +11602,11 @@ snapshots:
|
|||||||
'@trpc/server': 11.0.0-rc.682(typescript@5.7.2)
|
'@trpc/server': 11.0.0-rc.682(typescript@5.7.2)
|
||||||
typescript: 5.7.2
|
typescript: 5.7.2
|
||||||
|
|
||||||
'@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)':
|
'@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2)
|
'@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2)
|
||||||
'@trpc/server': 11.0.0-rc.682(typescript@5.7.2)
|
'@trpc/server': 11.0.0-rc.682(typescript@5.7.2)
|
||||||
next: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
react-dom: 19.0.0(react@19.0.0)
|
react-dom: 19.0.0(react@19.0.0)
|
||||||
typescript: 5.7.2
|
typescript: 5.7.2
|
||||||
@@ -15219,21 +15239,21 @@ snapshots:
|
|||||||
|
|
||||||
netmask@2.0.2: {}
|
netmask@2.0.2: {}
|
||||||
|
|
||||||
next-auth@5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0):
|
next-auth@5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@auth/core': 0.37.2
|
'@auth/core': 0.37.2
|
||||||
next: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
|
|
||||||
next-intl@3.26.3(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0):
|
next-intl@3.26.3(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@formatjs/intl-localematcher': 0.5.5
|
'@formatjs/intl-localematcher': 0.5.5
|
||||||
negotiator: 1.0.0
|
negotiator: 1.0.0
|
||||||
next: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
use-intl: 3.26.3(react@19.0.0)
|
use-intl: 3.26.3(react@19.0.0)
|
||||||
|
|
||||||
next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0):
|
next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/env': 14.2.22
|
'@next/env': 14.2.22
|
||||||
'@swc/helpers': 0.5.5
|
'@swc/helpers': 0.5.5
|
||||||
@@ -15254,6 +15274,7 @@ snapshots:
|
|||||||
'@next/swc-win32-arm64-msvc': 14.2.22
|
'@next/swc-win32-arm64-msvc': 14.2.22
|
||||||
'@next/swc-win32-ia32-msvc': 14.2.22
|
'@next/swc-win32-ia32-msvc': 14.2.22
|
||||||
'@next/swc-win32-x64-msvc': 14.2.22
|
'@next/swc-win32-x64-msvc': 14.2.22
|
||||||
|
'@playwright/test': 1.49.1
|
||||||
sass: 1.83.0
|
sass: 1.83.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@babel/core'
|
- '@babel/core'
|
||||||
@@ -15687,12 +15708,22 @@ snapshots:
|
|||||||
|
|
||||||
playwright-core@1.49.0: {}
|
playwright-core@1.49.0: {}
|
||||||
|
|
||||||
|
playwright-core@1.49.1:
|
||||||
|
optional: true
|
||||||
|
|
||||||
playwright@1.49.0:
|
playwright@1.49.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
playwright-core: 1.49.0
|
playwright-core: 1.49.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents: 2.3.2
|
fsevents: 2.3.2
|
||||||
|
|
||||||
|
playwright@1.49.1:
|
||||||
|
dependencies:
|
||||||
|
playwright-core: 1.49.1
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents: 2.3.2
|
||||||
|
optional: true
|
||||||
|
|
||||||
possible-typed-array-names@1.0.0: {}
|
possible-typed-array-names@1.0.0: {}
|
||||||
|
|
||||||
postcss-js@4.0.1(postcss@8.4.47):
|
postcss-js@4.0.1(postcss@8.4.47):
|
||||||
|
|||||||
Reference in New Issue
Block a user