* refactor: allow non unique PlatformBilling customerId * feat: add PlatformBilling managed organizations fields * feat: ManagedOrganization table * refactor: bill overdue based on teamId * refactor: restructure organizations module * wip: organizations endpoints * Revert "wip: organizations endpoints" This reverts commit 0e9e66fc74f31da436f12930c1b6597c650ed621. * refactor: unique index for managed organizations * wip: organizations endpoints * wip: create managed organization * remove unecessary membership check because we have guard * feat: create managed org * feat: get managed org and orgs * feat: update and delete managed orgs * wip: api key logic * feat: allow variable api key length * feat: refresh managed org api key * feat: create managed org OAuth clients using api key * finish merge main * chore: bump platform libraries * tests: fix and add more tests to api-auth.strategy.e2e * refactor: dont request managed org slug and handle metadata as object * revert: billing service and repository update overdue based on sub and customer ids * refactor: v2 OAuth client permissions (#19501) * refactor: v2 permissions as string array * refactor: frontend work with permissions as string * tests: test '*' permissions * fix:managed org creator have profile & test can fetch oauth client * fix: tests * fix: OAuthClientCard on frontend * fix: tests
26 lines
702 B
TypeScript
26 lines
702 B
TypeScript
import { Logger } from "@nestjs/common";
|
|
import { ZodSchema } from "zod";
|
|
|
|
const logger = new Logger("safeParse");
|
|
|
|
export function safeParse<T>(schema: ZodSchema<T>, value: unknown, defaultValue: T, logError = true): T {
|
|
const result = schema.safeParse(value);
|
|
if (result.success) {
|
|
return result.data;
|
|
} else {
|
|
const errorStack = new Error().stack;
|
|
|
|
if (logError) {
|
|
logger.error(
|
|
`Zod parsing failed.\n` +
|
|
`1. Schema: ${schema.description || "UnnamedSchema"}\n` +
|
|
`2. Input: ${JSON.stringify(value, null, 2)}\n` +
|
|
`3. Zod Error: ${result.error}\n` +
|
|
`4. Call Stack: ${errorStack}`
|
|
);
|
|
}
|
|
|
|
return defaultValue;
|
|
}
|
|
}
|