mirror of
https://github.com/graphql-hive/console
synced 2026-04-21 06:37:15 +00:00
Fix local eslint out of memory issue (#7913)
This commit is contained in:
parent
27d1d04e52
commit
576c7558ba
54 changed files with 2429 additions and 819 deletions
|
|
@ -55,6 +55,8 @@ module.exports = {
|
|||
'packages/web/app/src/gql/**/*',
|
||||
'codegen.cjs',
|
||||
'tsup',
|
||||
'packages/libraries/render-laboratory/src/laboratory.ts',
|
||||
'packages/web/app/vite.config.ts',
|
||||
],
|
||||
overrides: [
|
||||
{
|
||||
|
|
@ -66,6 +68,10 @@ module.exports = {
|
|||
schema: SCHEMA_PATH,
|
||||
operations: OPERATIONS_PATHS,
|
||||
},
|
||||
rules: {
|
||||
'@graphql-eslint/no-deprecated': 'error',
|
||||
'@graphql-eslint/require-id-when-available': 'error',
|
||||
},
|
||||
},
|
||||
{
|
||||
// Setup processor for operations/fragments definitions on code-files
|
||||
|
|
@ -76,8 +82,8 @@ module.exports = {
|
|||
files: ['packages/web/app/**/*.graphql'],
|
||||
plugins: ['@graphql-eslint'],
|
||||
rules: {
|
||||
'@graphql-eslint/require-id-when-available': 'error',
|
||||
'@graphql-eslint/no-deprecated': 'error',
|
||||
'@graphql-eslint/require-id-when-available': 'error',
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -144,6 +150,16 @@ module.exports = {
|
|||
'@typescript-eslint/no-empty-function': 'off',
|
||||
'@typescript-eslint/ban-types': 'off',
|
||||
'@typescript-eslint/triple-slash-reference': 'off',
|
||||
'@typescript-eslint/no-unused-vars': [
|
||||
'error',
|
||||
{
|
||||
argsIgnorePattern: '^_',
|
||||
caughtErrors: 'none',
|
||||
caughtErrorsIgnorePattern: '^_',
|
||||
destructuredArrayIgnorePattern: '^_',
|
||||
varsIgnorePattern: '^_',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -32,5 +32,8 @@ CHANGELOG.md
|
|||
.hive/
|
||||
.hive-dev/
|
||||
|
||||
# File generated by laboratory
|
||||
packages/libraries/render-laboratory/src/laboratory.ts
|
||||
|
||||
# File generated by @hive/app#generate-changelog script
|
||||
packages/web/app/src/components/ui/changelog/generated-changelog.ts
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
"graphql:generate": "VERBOSE=1 graphql-codegen --config codegen.mts",
|
||||
"graphql:generate:watch": "pnpm graphql:generate --watch",
|
||||
"integration:prepare": "cd integration-tests && ./local.sh",
|
||||
"lint": "eslint --cache --ignore-path .gitignore \"{packages,cypress}/**/*.{ts,tsx,graphql}\"",
|
||||
"lint": "NODE_OPTIONS=\"--max-old-space-size=8192\" eslint --cache --ignore-path .gitignore \"{packages,cypress}/**/*.{ts,tsx,graphql}\"",
|
||||
"lint:env-template": "tsx scripts/check-env-template.ts",
|
||||
"lint:fix": "pnpm lint --fix",
|
||||
"lint:prettier": "prettier --cache --check .",
|
||||
|
|
@ -90,7 +90,7 @@
|
|||
"cypress": "13.17.0",
|
||||
"dotenv": "16.4.7",
|
||||
"eslint": "8.57.1",
|
||||
"eslint-plugin-better-tailwindcss": "^4.0.0",
|
||||
"eslint-plugin-better-tailwindcss": "^4.3.2",
|
||||
"eslint-plugin-cypress": "4.1.0",
|
||||
"eslint-plugin-hive": "file:rules",
|
||||
"fs-extra": "11.2.0",
|
||||
|
|
|
|||
|
|
@ -60,11 +60,7 @@ export default abstract class BaseCommand<T extends typeof Command> extends Comm
|
|||
protected logger: Logger = {
|
||||
info: (...args) => this.logInfo(...args),
|
||||
error: (...args) => this.logFailure(...args),
|
||||
debug: (...args) => {
|
||||
if (this.flags.debug) {
|
||||
this.logInfo(...args);
|
||||
}
|
||||
},
|
||||
debug: (...args) => this.logDebug(...args),
|
||||
};
|
||||
|
||||
logSuccess(...args: any[]) {
|
||||
|
|
@ -83,6 +79,12 @@ export default abstract class BaseCommand<T extends typeof Command> extends Comm
|
|||
this.log(Texture.warning(...args));
|
||||
}
|
||||
|
||||
logDebug(...args: any[]) {
|
||||
if (this.flags.debug) {
|
||||
this.logInfo(...args);
|
||||
}
|
||||
}
|
||||
|
||||
maybe<TArgs extends Record<string, any>, TKey extends keyof TArgs>({
|
||||
key,
|
||||
env,
|
||||
|
|
@ -119,7 +121,7 @@ export default abstract class BaseCommand<T extends typeof Command> extends Comm
|
|||
ensure<
|
||||
TKey extends ValidConfigurationKeys,
|
||||
TArgs extends {
|
||||
[key in TKey]: GetConfigurationValueType<TKey>;
|
||||
[_key in TKey]: GetConfigurationValueType<TKey>;
|
||||
},
|
||||
>({
|
||||
key,
|
||||
|
|
@ -215,6 +217,7 @@ export default abstract class BaseCommand<T extends typeof Command> extends Comm
|
|||
|
||||
return fileContent;
|
||||
} catch (e) {
|
||||
this.logFailure(e);
|
||||
throw new InvalidFileContentsError(file, 'JSON');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ export default class AppCreate extends Command<typeof AppCreate> {
|
|||
description: AppCreate.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
|
||||
|
|
@ -72,6 +73,7 @@ export default class AppCreate extends Command<typeof AppCreate> {
|
|||
description: AppCreate.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ export default class AppPublish extends Command<typeof AppPublish> {
|
|||
description: AppPublish.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
|
||||
|
|
@ -60,6 +61,7 @@ export default class AppPublish extends Command<typeof AppPublish> {
|
|||
description: AppPublish.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ export default class AppRetire extends Command<typeof AppRetire> {
|
|||
description: AppRetire.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
|
||||
|
|
@ -64,6 +65,7 @@ export default class AppRetire extends Command<typeof AppRetire> {
|
|||
description: AppRetire.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ export default class ArtifactsFetch extends Command<typeof ArtifactsFetch> {
|
|||
description: ArtifactsFetch.flags['cdn.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingCdnEndpointError();
|
||||
}
|
||||
|
||||
|
|
@ -52,6 +53,7 @@ export default class ArtifactsFetch extends Command<typeof ArtifactsFetch> {
|
|||
description: ArtifactsFetch.flags['cdn.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingCdnKeyError();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -211,6 +211,7 @@ export default class Dev extends Command<typeof Dev> {
|
|||
description: Dev.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
try {
|
||||
|
|
@ -222,6 +223,7 @@ export default class Dev extends Command<typeof Dev> {
|
|||
description: Dev.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
|
||||
|
|
@ -270,6 +272,7 @@ export default class Dev extends Command<typeof Dev> {
|
|||
description: Dev.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
try {
|
||||
|
|
@ -281,6 +284,7 @@ export default class Dev extends Command<typeof Dev> {
|
|||
description: Dev.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ export default class OperationsCheck extends Command<typeof OperationsCheck> {
|
|||
description: OperationsCheck.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
|
||||
|
|
@ -123,6 +124,7 @@ export default class OperationsCheck extends Command<typeof OperationsCheck> {
|
|||
description: OperationsCheck.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -210,6 +210,7 @@ export default class SchemaCheck extends Command<typeof SchemaCheck> {
|
|||
description: SchemaCheck.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
const file = args.file;
|
||||
|
|
@ -222,6 +223,7 @@ export default class SchemaCheck extends Command<typeof SchemaCheck> {
|
|||
description: SchemaCheck.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ export default class SchemaDelete extends Command<typeof SchemaDelete> {
|
|||
description: SchemaDelete.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
try {
|
||||
|
|
@ -122,6 +123,7 @@ export default class SchemaDelete extends Command<typeof SchemaDelete> {
|
|||
description: SchemaDelete.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -149,6 +149,7 @@ export default class SchemaFetch extends Command<typeof SchemaFetch> {
|
|||
description: SchemaFetch.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
try {
|
||||
|
|
@ -160,6 +161,7 @@ export default class SchemaFetch extends Command<typeof SchemaFetch> {
|
|||
description: SchemaFetch.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -166,6 +166,7 @@ export default class SchemaPublish extends Command<typeof SchemaPublish> {
|
|||
|
||||
return metadata;
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
// If we can't parse it, we can try to load it from FS
|
||||
return this.readJSON(metadata);
|
||||
}
|
||||
|
|
@ -188,6 +189,7 @@ export default class SchemaPublish extends Command<typeof SchemaPublish> {
|
|||
description: SchemaPublish.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
try {
|
||||
|
|
@ -199,6 +201,7 @@ export default class SchemaPublish extends Command<typeof SchemaPublish> {
|
|||
description: SchemaPublish.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
const service = flags.service;
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ export default class WhoAmI extends Command<typeof WhoAmI> {
|
|||
description: WhoAmI.flags['registry.endpoint'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingEndpointError();
|
||||
}
|
||||
|
||||
|
|
@ -90,6 +91,7 @@ export default class WhoAmI extends Command<typeof WhoAmI> {
|
|||
description: WhoAmI.flags['registry.accessToken'].description!,
|
||||
});
|
||||
} catch (e) {
|
||||
this.logDebug(e);
|
||||
throw new MissingRegistryTokenError();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ export class Config {
|
|||
throw new Error('Invalid config.');
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
} catch (_error) {
|
||||
this.cache = {
|
||||
registry: {
|
||||
endpoint: undefined,
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ export function graphqlRequest(config: {
|
|||
try {
|
||||
jsonData = (await response.json()) as ExecutionResult<TResult>;
|
||||
} catch (err) {
|
||||
config.logger?.debug?.(String(err));
|
||||
const contentType = response?.headers?.get('content-type');
|
||||
throw new APIError(
|
||||
`Response from graphql was not valid JSON.${contentType ? ` Received "content-type": "${contentType}".` : ''}`,
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ class FederationSubgraphUrlLoader implements Loader {
|
|||
name
|
||||
}
|
||||
}
|
||||
`) as TypedDocumentNode<{ __type: null | { name: string } }, {}>,
|
||||
`) as TypedDocumentNode<{ __type: null | { name: string } }, Record<string, never>>,
|
||||
});
|
||||
|
||||
if (isSubgraph.__type === null) {
|
||||
|
|
@ -247,7 +247,7 @@ class FederationSubgraphUrlLoader implements Loader {
|
|||
sdl
|
||||
}
|
||||
}
|
||||
`) as TypedDocumentNode<{ _service: { sdl: string } }, {}>,
|
||||
`) as TypedDocumentNode<{ _service: { sdl: string } }, Record<string, never>>,
|
||||
});
|
||||
|
||||
this.logger?.debug?.('Resolved subgraph SDL successfully.');
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
import { createAgent } from '../src/client/agent.js';
|
||||
|
||||
let data: Array<{}> = [];
|
||||
let data: Array<object> = [];
|
||||
|
||||
const agent = createAgent<{}>(
|
||||
const agent = createAgent<object>(
|
||||
{
|
||||
debug: true,
|
||||
endpoint: 'http://127.0.0.1',
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ type OptionalWhenFalse<T, KCond extends keyof T, KExcluded extends keyof T> =
|
|||
// untouched by default or when true
|
||||
| T
|
||||
// when false, make KExcluded optional
|
||||
| (Omit<T, KExcluded> & { [P in KCond]: false } & { [P in KExcluded]?: T[KExcluded] });
|
||||
| (Omit<T, KExcluded> & { [_P in KCond]: false } & { [_P in KExcluded]?: T[KExcluded] });
|
||||
|
||||
export type HivePluginOptions = OptionalWhenFalse<
|
||||
{
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ export function addProperty<T, K extends string, V>(
|
|||
value: V,
|
||||
obj: T,
|
||||
): T & {
|
||||
[k in K]: V;
|
||||
[_k in K]: V;
|
||||
};
|
||||
export function addProperty<T, K extends string, V>(
|
||||
key: K,
|
||||
|
|
|
|||
|
|
@ -113,7 +113,9 @@ export async function initMigrationTestingEnvironment() {
|
|||
await runPGMigrations({ slonik });
|
||||
},
|
||||
async done(deleteDb = true) {
|
||||
deleteDb ?? (await db.query(`DROP DATABASE ${dbName};`));
|
||||
if (deleteDb) {
|
||||
await db.query(`DROP DATABASE ${dbName};`);
|
||||
}
|
||||
await db.$pool.end().catch();
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import type { Scalars } from '../../__generated__/types';
|
||||
import type { AdminOrganizationStats } from '../../shared/entities';
|
||||
|
||||
export type AdminQueryMapper = {};
|
||||
export type AdminQueryMapper = object;
|
||||
export type AdminStatsMapper = {
|
||||
period: {
|
||||
from: Scalars['DateTime']['input'];
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ export class AppDeployments {
|
|||
private storage: Storage,
|
||||
private schemaVersionHelper: SchemaVersionHelper,
|
||||
private persistedDocumentScheduler: PersistedDocumentScheduler,
|
||||
@Inject(APP_DEPLOYMENTS_ENABLED) private appDeploymentsEnabled: Boolean,
|
||||
@Inject(APP_DEPLOYMENTS_ENABLED) private appDeploymentsEnabled: boolean,
|
||||
) {
|
||||
this.logger = logger.child({ source: 'AppDeployments' });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,10 @@ const ThirdpartUserModel = z.object({
|
|||
timeJoined: z.number(),
|
||||
});
|
||||
|
||||
const EmailPasswordOrThirdPartyUserModel = z.union([EmailPasswordUserModel, ThirdpartUserModel]);
|
||||
export const EmailPasswordOrThirdPartyUserModel = z.union([
|
||||
EmailPasswordUserModel,
|
||||
ThirdpartUserModel,
|
||||
]);
|
||||
|
||||
export type EmailPasswordOrThirdPartyUser = z.TypeOf<typeof EmailPasswordOrThirdPartyUserModel>;
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ export class SchemaProposalStorage {
|
|||
logger: Logger,
|
||||
@Inject(PG_POOL_CONFIG) private pool: DatabasePool,
|
||||
private storage: Storage,
|
||||
@Inject(SCHEMA_PROPOSALS_ENABLED) private schemaProposalsEnabled: Boolean,
|
||||
@Inject(SCHEMA_PROPOSALS_ENABLED) private schemaProposalsEnabled: boolean,
|
||||
private taskScheduler: TaskScheduler,
|
||||
) {
|
||||
this.logger = logger.child({ source: 'SchemaProposalStorage' });
|
||||
|
|
|
|||
|
|
@ -52,8 +52,6 @@ export class RedisRateLimiter {
|
|||
}
|
||||
}
|
||||
|
||||
req.routeOptions.url;
|
||||
|
||||
let ip = req.ip;
|
||||
|
||||
if (this.config.config.ipHeaderName && req.headers[this.config.config.ipHeaderName]) {
|
||||
|
|
|
|||
|
|
@ -11,11 +11,11 @@ export type NullableAndPartial<T> = {
|
|||
export type NullableDictionary<T> = { [P in keyof T]: T[P] | null };
|
||||
|
||||
export type Listify<T, K extends keyof T> = Omit<T, K> & {
|
||||
[key in K]: T[K] | readonly T[K][];
|
||||
[_key in K]: T[K] | readonly T[K][];
|
||||
};
|
||||
|
||||
export type MapToArray<T, K extends keyof T> = Omit<T, K> & {
|
||||
[key in K]: readonly T[K][];
|
||||
[_key in K]: readonly T[K][];
|
||||
};
|
||||
|
||||
export function uuid(len = 13) {
|
||||
|
|
|
|||
|
|
@ -68,7 +68,9 @@ const handler: ExportedHandler<Env> = {
|
|||
};
|
||||
|
||||
function flush() {
|
||||
loki && ctx.waitUntil(loki.flush());
|
||||
if (loki) {
|
||||
ctx.waitUntil(loki.flush());
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -21,7 +21,7 @@ for (const [ruleId, rule] of Object.entries(rules)) {
|
|||
const RULE_LEVEL = z.union([z.number().min(0).max(2), z.enum(['off', 'warn', 'error'])]);
|
||||
|
||||
type RulemapValidationType = {
|
||||
[RuleKey in keyof typeof rules]: ZodType;
|
||||
[_RuleKey in keyof typeof rules]: ZodType;
|
||||
};
|
||||
|
||||
export function normalizeAjvSchema(
|
||||
|
|
|
|||
|
|
@ -461,7 +461,7 @@ export async function main() {
|
|||
method: ['GET', 'HEAD'],
|
||||
url: '/_health',
|
||||
async handler(_, res) {
|
||||
res.status(200).send(); // eslint-disable-line @typescript-eslint/no-floating-promises -- false positive, FastifyReply.then returns void
|
||||
void res.status(200).send();
|
||||
},
|
||||
});
|
||||
|
||||
|
|
@ -490,7 +490,7 @@ export async function main() {
|
|||
req.log.error(`Readiness check failed: [${response.statusCode}] ${response.body}`);
|
||||
} else {
|
||||
reportReadiness(true);
|
||||
res.status(200).send(); // eslint-disable-line @typescript-eslint/no-floating-promises -- false positive, FastifyReply.then returns void
|
||||
void res.status(200).send();
|
||||
return;
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
@ -498,7 +498,7 @@ export async function main() {
|
|||
}
|
||||
|
||||
reportReadiness(false);
|
||||
res.status(400).send(); // eslint-disable-line @typescript-eslint/no-floating-promises -- false positive, FastifyReply.then returns void
|
||||
void res.status(400).send();
|
||||
},
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -29,9 +29,9 @@ const getHiveClientVersion = (userAgent: string | null) => {
|
|||
};
|
||||
|
||||
export function useArmor<
|
||||
PluginContext extends Record<string, any> = {},
|
||||
TServerContext extends Record<string, any> = {},
|
||||
TUserContext = {},
|
||||
PluginContext extends Record<string, any> = object,
|
||||
TServerContext extends Record<string, any> = object,
|
||||
TUserContext = object,
|
||||
>(): Plugin<PluginContext, TServerContext, TUserContext> {
|
||||
return {
|
||||
onValidate(ctx) {
|
||||
|
|
|
|||
|
|
@ -456,7 +456,7 @@ type FunctionTraceOptions<TArgs extends any[], TResult> = {
|
|||
errorAttributes?: Attributes | ((error: Error) => Attributes);
|
||||
};
|
||||
|
||||
export function traceFn<This extends Object, TArgs extends any[], TResult>(
|
||||
export function traceFn<This extends object, TArgs extends any[], TResult>(
|
||||
spanName: string,
|
||||
options?: FunctionTraceOptions<TArgs, Awaited<TResult>>,
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -76,7 +76,9 @@ export type { tokens, schema_policy_resource } from './db/types';
|
|||
|
||||
type Connection = DatabasePool | DatabaseTransactionConnection;
|
||||
|
||||
type OverrideProp<T extends {}, K extends keyof T, V extends T[K]> = Omit<T, K> & { [P in K]: V };
|
||||
type OverrideProp<T extends Record<string, any>, K extends keyof T, V extends T[K]> = Omit<T, K> & {
|
||||
[_P in K]: V;
|
||||
};
|
||||
|
||||
type schema_log = Omit<schema_log_in_db, 'action'> & {
|
||||
action: 'PUSH' | 'DELETE';
|
||||
|
|
|
|||
|
|
@ -263,7 +263,7 @@ export function implement<Model = never>() {
|
|||
return {
|
||||
with: <
|
||||
Schema extends Implements<Model> & {
|
||||
[unknownKey in Exclude<keyof Schema, keyof Model>]: never;
|
||||
[_Key in Exclude<keyof Schema, keyof Model>]: never;
|
||||
},
|
||||
>(
|
||||
schema: Schema,
|
||||
|
|
@ -1525,7 +1525,7 @@ export const InsertConditionalBreakingChangeMetadataModel =
|
|||
},
|
||||
})).nullable();
|
||||
|
||||
const SchemaCheckInputModel = z.union([
|
||||
export const SchemaCheckInputModel = z.union([
|
||||
z.intersection(
|
||||
z.object({
|
||||
isSuccess: z.literal(false),
|
||||
|
|
|
|||
|
|
@ -8,15 +8,10 @@ interface Email {
|
|||
date: Date;
|
||||
}
|
||||
|
||||
const emailProviders = {
|
||||
postmark,
|
||||
mock,
|
||||
smtp,
|
||||
sendmail,
|
||||
};
|
||||
type EmailProviders = 'postmark' | 'mock' | 'smtp' | 'sendmail';
|
||||
|
||||
export interface EmailProvider {
|
||||
id: keyof typeof emailProviders;
|
||||
id: EmailProviders;
|
||||
send(email: Omit<Email, 'date'>): Promise<void>;
|
||||
history: Email[];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import { HiveStripeWrapper } from '@/lib/billing/stripe';
|
|||
* Utility for wrapping a component with an authenticated container that has the default application layout.
|
||||
*/
|
||||
export const authenticated =
|
||||
<TProps extends {}>(Component: (props: TProps) => ReactElement | null) =>
|
||||
<TProps extends Record<string, any>>(Component: (props: TProps) => ReactElement | null) =>
|
||||
(props: TProps) => {
|
||||
return (
|
||||
<SessionAuth>
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ const BillingView_OrganizationFragment = graphql(`
|
|||
const BillingView_QueryFragment = graphql(`
|
||||
fragment BillingView_QueryFragment on Query {
|
||||
billingPlans {
|
||||
id
|
||||
planType
|
||||
...PlanSummary_PlanFragment
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import { CurrencyFormatter, formatMillionOrBillion } from './helpers';
|
|||
|
||||
const PriceEstimationTable_PlanFragment = graphql(`
|
||||
fragment PriceEstimationTable_PlanFragment on BillingPlan {
|
||||
id
|
||||
includedOperationsLimit
|
||||
pricePerOperationsUnit
|
||||
basePrice
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { FragmentType, graphql, useFragment } from '@/gql';
|
|||
|
||||
const ProPlanBilling_OrganizationFragment = graphql(`
|
||||
fragment ProPlanBilling_OrganizationFragment on Organization {
|
||||
id
|
||||
billingConfiguration {
|
||||
hasPaymentIssues
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,12 +40,14 @@ const ExternalCompositionStatus_TestQuery = graphql(`
|
|||
|
||||
const ExternalCompositionSettings_OrganizationFragment = graphql(`
|
||||
fragment ExternalCompositionSettings_OrganizationFragment on Organization {
|
||||
id
|
||||
slug
|
||||
}
|
||||
`);
|
||||
|
||||
const ExternalCompositionSettings_ProjectFragment = graphql(`
|
||||
fragment ExternalCompositionSettings_ProjectFragment on Project {
|
||||
id
|
||||
slug
|
||||
isNativeFederationEnabled
|
||||
externalSchemaComposition {
|
||||
|
|
@ -58,6 +60,7 @@ const ExternalCompositionSettings_UpdateResultFragment = graphql(`
|
|||
fragment ExternalCompositionSettings_UpdateResultFragment on UpdateSchemaCompositionResult {
|
||||
ok {
|
||||
updatedProject {
|
||||
id
|
||||
externalSchemaComposition {
|
||||
endpoint
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ const ChangesBlock_SchemaCheckConditionalBreakingChangeMetadataFragment = graphq
|
|||
settings {
|
||||
retentionInDays
|
||||
targets {
|
||||
id
|
||||
slug
|
||||
target {
|
||||
id
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ const Proposals_SelectFragment = graphql(`
|
|||
|
||||
const Proposals_TargetProjectTypeFragment = graphql(`
|
||||
fragment Proposals_TargetProjectTypeFragment on Target {
|
||||
id
|
||||
project {
|
||||
id
|
||||
type
|
||||
|
|
@ -274,7 +275,7 @@ export function ProposalEditor(props: {
|
|||
onValueChange={idx => {
|
||||
try {
|
||||
setActiveTab(parseInt(idx, 10));
|
||||
} catch (e) {
|
||||
} catch (_e: unknown) {
|
||||
console.error('Cannot set active tab. Could not parse index.');
|
||||
}
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ const Command = React.forwardRef<
|
|||
));
|
||||
Command.displayName = CommandPrimitive.displayName;
|
||||
|
||||
interface CommandDialogProps extends DialogProps {}
|
||||
type CommandDialogProps = DialogProps;
|
||||
|
||||
const CommandDialog = ({ children, ...props }: CommandDialogProps) => {
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -12,13 +12,6 @@ type ToasterToast = ToastProps & {
|
|||
action?: ToastActionElement;
|
||||
};
|
||||
|
||||
const actionTypes = {
|
||||
ADD_TOAST: 'ADD_TOAST',
|
||||
UPDATE_TOAST: 'UPDATE_TOAST',
|
||||
DISMISS_TOAST: 'DISMISS_TOAST',
|
||||
REMOVE_TOAST: 'REMOVE_TOAST',
|
||||
} as const;
|
||||
|
||||
let count = 0;
|
||||
|
||||
function genId() {
|
||||
|
|
@ -26,7 +19,12 @@ function genId() {
|
|||
return count.toString();
|
||||
}
|
||||
|
||||
type ActionType = typeof actionTypes;
|
||||
type ActionType = {
|
||||
ADD_TOAST: 'ADD_TOAST';
|
||||
UPDATE_TOAST: 'UPDATE_TOAST';
|
||||
DISMISS_TOAST: 'DISMISS_TOAST';
|
||||
REMOVE_TOAST: 'REMOVE_TOAST';
|
||||
};
|
||||
|
||||
type Action =
|
||||
| {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import { Button } from '@/components/ui/button';
|
|||
import { Heading } from '@/components/ui/heading';
|
||||
import { ArrowDownIcon, CheckIcon } from '@/components/ui/icon';
|
||||
import { Input, Modal } from '@/components/v2';
|
||||
import { FragmentType, graphql, useFragment } from '@/gql';
|
||||
import { DocumentType, FragmentType, graphql, useFragment } from '@/gql';
|
||||
import { useNotifications } from '@/lib/hooks';
|
||||
import { Combobox as HeadlessCombobox, Transition as HeadlessTransition } from '@headlessui/react';
|
||||
|
||||
|
|
@ -37,7 +37,6 @@ const TransferOrganizationOwnership_Members = graphql(`
|
|||
node {
|
||||
id
|
||||
isOwner
|
||||
...MemberFields
|
||||
user {
|
||||
id
|
||||
fullName
|
||||
|
|
@ -51,22 +50,9 @@ const TransferOrganizationOwnership_Members = graphql(`
|
|||
}
|
||||
`);
|
||||
|
||||
const MemberFields = graphql(`
|
||||
fragment MemberFields on Member {
|
||||
id
|
||||
user {
|
||||
id
|
||||
fullName
|
||||
displayName
|
||||
email
|
||||
}
|
||||
isOwner
|
||||
}
|
||||
`);
|
||||
|
||||
type Member = NonNullable<
|
||||
FragmentType<typeof MemberFields>[' $fragmentRefs']
|
||||
>['MemberFieldsFragment'];
|
||||
DocumentType<typeof TransferOrganizationOwnership_Members>['organization']
|
||||
>['members']['edges'][number]['node'];
|
||||
|
||||
const TransferOrganizationOwnershipModal_OrganizationFragment = graphql(`
|
||||
fragment TransferOrganizationOwnershipModal_OrganizationFragment on Organization {
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ const dateStringFormat = 'yyyy-MM-dd HH:mm';
|
|||
function parseDateString(input: string) {
|
||||
try {
|
||||
return parseDate(input, dateStringFormat, new UTCDate());
|
||||
} catch (error) {
|
||||
} catch (_error: unknown) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ const DeleteGitHubIntegrationMutation = graphql(`
|
|||
|
||||
const GitHubIntegrationSection_OrganizationFragment = graphql(`
|
||||
fragment GitHubIntegrationSection_OrganizationFragment on Organization {
|
||||
id
|
||||
hasGitHubIntegration
|
||||
slug
|
||||
}
|
||||
|
|
@ -113,6 +114,7 @@ function GitHubIntegrationSection(props: {
|
|||
|
||||
const SlackIntegrationSection_OrganizationFragment = graphql(`
|
||||
fragment SlackIntegrationSection_OrganizationFragment on Organization {
|
||||
id
|
||||
hasSlackIntegration
|
||||
slug
|
||||
}
|
||||
|
|
|
|||
|
|
@ -228,6 +228,7 @@ const ConditionalBreakingChangesMetadataSection_SchemaCheckFragment = graphql(`
|
|||
percentage
|
||||
excludedClientNames
|
||||
targets {
|
||||
id
|
||||
slug
|
||||
target {
|
||||
id
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ const DeprecatedSchemaView_DeprecatedSchemaExplorerFragment = graphql(`
|
|||
}
|
||||
`);
|
||||
|
||||
const DeprecatedSchemaView = memo(function _DeprecatedSchemaView(props: {
|
||||
function InternalDeprecatedSchemaView(props: {
|
||||
explorer: FragmentType<typeof DeprecatedSchemaView_DeprecatedSchemaExplorerFragment>;
|
||||
totalRequests: number;
|
||||
organizationSlug: string;
|
||||
|
|
@ -150,7 +150,9 @@ const DeprecatedSchemaView = memo(function _DeprecatedSchemaView(props: {
|
|||
</div>
|
||||
</div>
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
const DeprecatedSchemaView = memo(InternalDeprecatedSchemaView);
|
||||
|
||||
const DeprecatedSchemaExplorer_DeprecatedSchemaQuery = graphql(`
|
||||
query DeprecatedSchemaExplorer_DeprecatedSchemaQuery(
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ const UnusedSchemaView_UnusedSchemaExplorerFragment = graphql(`
|
|||
}
|
||||
`);
|
||||
|
||||
const UnusedSchemaView = memo(function _UnusedSchemaView(props: {
|
||||
function InternalUnusedSchemaView(props: {
|
||||
explorer: FragmentType<typeof UnusedSchemaView_UnusedSchemaExplorerFragment>;
|
||||
totalRequests: number;
|
||||
organizationSlug: string;
|
||||
|
|
@ -209,7 +209,9 @@ const UnusedSchemaView = memo(function _UnusedSchemaView(props: {
|
|||
</div>
|
||||
</div>
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
const UnusedSchemaView = memo(InternalUnusedSchemaView);
|
||||
|
||||
const UnusedSchemaExplorer_UnusedSchemaQuery = graphql(`
|
||||
query UnusedSchemaExplorer_UnusedSchemaQuery(
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ import { cn } from '@/lib/utils';
|
|||
import * as SliderPrimitive from '@radix-ui/react-slider';
|
||||
import * as dateMath from '../../lib/date-math';
|
||||
|
||||
interface FilterInputProps extends InputHTMLAttributes<HTMLInputElement> {}
|
||||
type FilterInputProps = InputHTMLAttributes<HTMLInputElement>;
|
||||
|
||||
export const FilterInput = forwardRef<HTMLInputElement, FilterInputProps>(
|
||||
({ className, type, ...props }, ref) => {
|
||||
|
|
|
|||
2047
pnpm-lock.yaml
2047
pnpm-lock.yaml
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue