Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
596 changes: 302 additions & 294 deletions src/package-lock.json.jinja

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion src/src/client/test/components/test-widget/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ export function TestWidget({}: TestWidgetInput) {

return {
errors: {
value: getValidationIssue({ error: error, path: "value" }),
value: getValidationIssue({ error: error, path: "value" })
.message,
},
};
}
Expand Down
4 changes: 3 additions & 1 deletion src/src/common/generic/lib/create-url/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,7 @@ export function createUrl({
: "";
const fragmentPart = fragment ? `#${fragment}` : "";

return basePart + pathPart + queryPart + fragmentPart;
const url = basePart + pathPart + queryPart + fragmentPart;

return { url: url };
}
4 changes: 3 additions & 1 deletion src/src/common/generic/lib/create-url/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,6 @@ type RelativeUrlInput = AnyUrlInput & {

export type CreateUrlInput = AbsoluteUrlInput | RelativeUrlInput;

export type CreateUrlOutput = string;
export type CreateUrlOutput = {
url: string;
};
6 changes: 3 additions & 3 deletions src/src/common/localization/locales/en.po.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"

#: src/client/test/components/test-widget/main.tsx:51
#: src/client/test/components/test-widget/main.tsx:52
msgid "An unexpected error occurred"
msgstr "An unexpected error occurred"

Expand Down Expand Up @@ -43,7 +43,7 @@ msgid "Info"
msgstr "Info"

#: src/client/test/components/test-widget/main.tsx:41
#: src/client/test/components/test-widget/main.tsx:61
#: src/client/test/components/test-widget/main.tsx:62
msgid "Invalid input"
msgstr "Invalid input"

Expand Down Expand Up @@ -75,6 +75,6 @@ msgstr "Success"
msgid "Warning"
msgstr "Warning"

#: src/server/orpc/vars/procedures/vars/test/vars/validate/main.ts:27
#: src/server/orpc/vars/procedures/vars/test/vars/validate/main.ts:28
msgid "Why did the chicken cross the road? To get to the other side."
msgstr "Why did the chicken cross the road? To get to the other side."
6 changes: 3 additions & 3 deletions src/src/common/localization/locales/pl.po.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"

#: src/client/test/components/test-widget/main.tsx:51
#: src/client/test/components/test-widget/main.tsx:52
msgid "An unexpected error occurred"
msgstr "Wystąpił nieoczekiwany błąd"

Expand Down Expand Up @@ -43,7 +43,7 @@ msgid "Info"
msgstr "Informacja"

#: src/client/test/components/test-widget/main.tsx:41
#: src/client/test/components/test-widget/main.tsx:61
#: src/client/test/components/test-widget/main.tsx:62
msgid "Invalid input"
msgstr "Nieprawidłowe dane wejściowe"

Expand Down Expand Up @@ -75,6 +75,6 @@ msgstr "Sukces"
msgid "Warning"
msgstr "Ostrzeżenie"

#: src/server/orpc/vars/procedures/vars/test/vars/validate/main.ts:27
#: src/server/orpc/vars/procedures/vars/test/vars/validate/main.ts:28
msgid "Why did the chicken cross the road? To get to the other side."
msgstr "Dlaczego kura przeszła przez ulicę? Żeby dostać się na drugą stronę."
4 changes: 3 additions & 1 deletion src/src/common/orpc/lib/get-validation-issue/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,7 @@ export function getValidationIssue({
(issue) => issue.path?.join(".") === path,
);

return issue?.message;
const message = issue?.message;

return { message: message };
}
4 changes: 3 additions & 1 deletion src/src/common/orpc/lib/get-validation-issue/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@ export type GetValidationIssueInput = {
path: string;
};

export type GetValidationIssueOutput = string | undefined;
export type GetValidationIssueOutput = {
message: string | undefined;
};
2 changes: 1 addition & 1 deletion src/src/instrumentation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export async function register() {
path: config.apis.icanhazdadjoke.path,
port: config.apis.icanhazdadjoke.port,
scheme: config.apis.icanhazdadjoke.scheme,
}),
}).url,
}),
}),
};
Expand Down
4 changes: 2 additions & 2 deletions src/src/isomorphic/core/hooks/use-form/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export function useForm<SchemaType extends ZodObject>({
result,
form.reset,
form.setErrors,
form.setValues,
form.setInitialValues,
localization.localize,
);
} finally {
Expand All @@ -53,7 +53,7 @@ export function useForm<SchemaType extends ZodObject>({
[
form.reset,
form.setErrors,
form.setValues,
form.setInitialValues,
localization.localize,
onSubmit,
],
Expand Down
17 changes: 17 additions & 0 deletions src/src/proxy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { NextRequest } from "next/server";

import { NextResponse } from "next/server";

import { serverGenericConstants } from "./server/generic/constants";
import { getRequestUrl } from "./server/generic/lib/get-request-url";

export async function proxy(request: NextRequest) {
const { requestUrl } = await getRequestUrl({ request: request });

const headers = new Headers({
...Object.fromEntries(request.headers),
[serverGenericConstants.headers.requestUrl]: requestUrl,
});

return NextResponse.next({ request: { headers: headers } });
}
7 changes: 7 additions & 0 deletions src/src/server/generic/constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import "server-only";

export const serverGenericConstants = {
headers: {
requestUrl: "X-Next-Request-URL",
},
} as const;
7 changes: 7 additions & 0 deletions src/src/server/generic/lib/get-original-base-url/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import "server-only";

export { getOriginalBaseUrl } from "./main";
export type {
GetOriginalBaseUrlInput,
GetOriginalBaseUrlOutput,
} from "./types";
32 changes: 32 additions & 0 deletions src/src/server/generic/lib/get-original-base-url/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { trimEnd } from "es-toolkit/string";

import type {
GetOriginalBaseUrlInput,
GetOriginalBaseUrlOutput,
} from "./types";

import { getOriginalRequestUrl } from "../get-original-request-url";
import { getRequestUrl } from "../get-request-url";

export async function getOriginalBaseUrl({
request,
}: GetOriginalBaseUrlInput): Promise<GetOriginalBaseUrlOutput> {
const { requestUrl } = await getRequestUrl({ request: request });
const { originalRequestUrl } = await getOriginalRequestUrl({
request: request,
});

const path = trimEnd(new URL(requestUrl).pathname, "/");
const originalPath = trimEnd(new URL(originalRequestUrl).pathname, "/");

const url = new URL(originalRequestUrl);
url.search = "";
url.hash = "";
url.pathname = originalPath.endsWith(path)
? originalPath.slice(0, originalPath.length - path.length) + "/"
: "/";

const originalBaseUrl = url.toString();

return { originalBaseUrl: originalBaseUrl };
}
7 changes: 7 additions & 0 deletions src/src/server/generic/lib/get-original-base-url/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export type GetOriginalBaseUrlInput = {
request?: Request;
};

export type GetOriginalBaseUrlOutput = {
originalBaseUrl: string;
};
7 changes: 7 additions & 0 deletions src/src/server/generic/lib/get-original-request-url/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import "server-only";

export { getOriginalRequestUrl } from "./main";
export type {
GetOriginalRequestUrlInput,
GetOriginalRequestUrlOutput,
} from "./types";
40 changes: 40 additions & 0 deletions src/src/server/generic/lib/get-original-request-url/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { trimEnd } from "es-toolkit/string";
import { headers } from "next/headers";

import type {
GetOriginalRequestUrlInput,
GetOriginalRequestUrlOutput,
} from "./types";

import { getRequestUrl } from "../get-request-url";

export async function getOriginalRequestUrl({
request,
}: GetOriginalRequestUrlInput): Promise<GetOriginalRequestUrlOutput> {
const { requestUrl } = await getRequestUrl({ request: request });

const h = await headers();
const url = new URL(requestUrl);

const proto =
/proto="?([^";,\s]+)"?/i.exec(h.get("Forwarded") ?? "")?.[1]?.trim() ||
h.get("X-Forwarded-Proto")?.split(",")[0]?.trim() ||
url.protocol.replace(":", "");

const host =
/host="?([^";,\s]+)"?/i.exec(h.get("Forwarded") ?? "")?.[1]?.trim() ||
h.get("X-Forwarded-Host")?.split(",")[0]?.trim() ||
h.get("Host")?.trim() ||
url.host;

const prefix = h.get("X-Forwarded-Prefix")?.split(",")[0]?.trim() || "";

url.protocol = proto;
url.port = "";
url.host = host;
url.pathname = trimEnd(prefix, "/") + url.pathname;

const originalRequestUrl = url.toString();

return { originalRequestUrl: originalRequestUrl };
}
7 changes: 7 additions & 0 deletions src/src/server/generic/lib/get-original-request-url/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export type GetOriginalRequestUrlInput = {
request?: Request;
};

export type GetOriginalRequestUrlOutput = {
originalRequestUrl: string;
};
4 changes: 4 additions & 0 deletions src/src/server/generic/lib/get-request-url/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import "server-only";

export { getRequestUrl } from "./main";
export type { GetRequestUrlInput, GetRequestUrlOutput } from "./types";
20 changes: 20 additions & 0 deletions src/src/server/generic/lib/get-request-url/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { headers } from "next/headers";

import type { GetRequestUrlInput, GetRequestUrlOutput } from "./types";

import { serverGenericConstants } from "../../constants";

export async function getRequestUrl({
request,
}: GetRequestUrlInput): Promise<GetRequestUrlOutput> {
if (request === undefined)
return {
requestUrl: (await headers()).get(
serverGenericConstants.headers.requestUrl,
)!,
};

const requestUrl = request.url;

return { requestUrl: requestUrl };
}
7 changes: 7 additions & 0 deletions src/src/server/generic/lib/get-request-url/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export type GetRequestUrlInput = {
request?: Request;
};

export type GetRequestUrlOutput = {
requestUrl: string;
};
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,18 @@ export const validate = orpcServerRootBase.test.validate
locale: context.localeMiddleware.locale,
});

const response = await state.current.apis.icanhazdadjoke.getRandomJoke({
headers: {
Accept: "application/json",
},
throwOnError: true,
});
const { data: getRandomJokeData } =
await state.current.apis.icanhazdadjoke.getRandomJoke({
headers: {
Accept: "application/json",
},
throwOnError: true,
});

return {
message:
context.localeMiddleware.locale === "en"
? response.data.joke
? getRandomJokeData.joke
: localization.localize(
msg({
message:
Expand Down
Loading