fix: update ObjectToLower and ObjectToSnake types to preserve numeric keys

This commit is contained in:
MARCROCK22 2025-05-22 17:01:12 -04:00
parent d9aef4335d
commit e095edd20f
2 changed files with 17 additions and 5 deletions

View File

@ -107,7 +107,7 @@ export type SnakeCase<S extends string> = S extends `${infer A}${infer Rest}`
export type ObjectToLower<T> = T extends unknown[]
? ObjectToLower<T[0]>[]
: Identify<{
[K in keyof T as CamelCase<Exclude<K, symbol | number>>]: T[K] extends unknown[]
[K in keyof T as K extends number ? K : CamelCase<Exclude<K, symbol | number>>]: T[K] extends unknown[]
? Identify<ObjectToLower<T[K][0]>[]>
: T[K] extends object
? Identify<ObjectToLower<T[K]>>
@ -119,7 +119,7 @@ export type ObjectToLower<T> = T extends unknown[]
export type ObjectToLowerUndefined<T> = T extends unknown[]
? ObjectToLower<T[0]>[]
: Identify<{
[K in keyof T as CamelCase<Exclude<K, symbol | number>>]: T[K] extends unknown[]
[K in keyof T as K extends number ? K : CamelCase<Exclude<K, symbol | number>>]: T[K] extends unknown[]
? ObjectToLower<T[K][0]>[]
: T[K] extends object
? ObjectToLower<T[K]>
@ -127,7 +127,7 @@ export type ObjectToLowerUndefined<T> = T extends unknown[]
}>;
export type ObjectToSnake<T> = Identify<{
[K in keyof T as SnakeCase<Exclude<K, symbol | number>>]: T[K] extends unknown[]
[K in keyof T as K extends number ? K : SnakeCase<Exclude<K, symbol | number>>]: T[K] extends unknown[]
? Identify<ObjectToSnake<T[K][0]>[]>
: T[K] extends object
? Identify<ObjectToSnake<T[K]>>
@ -139,7 +139,7 @@ export type ObjectToSnake<T> = Identify<{
export type ObjectToSnakeUndefined<T> = T extends unknown[]
? ObjectToSnake<T[0]>[]
: Identify<{
[K in keyof T as SnakeCase<Exclude<K, symbol | number>>]: T[K] extends unknown[]
[K in keyof T as K extends number ? K : SnakeCase<Exclude<K, symbol | number>>]: T[K] extends unknown[]
? ObjectToSnake<T[K][0]>[]
: T[K] extends object
? ObjectToSnake<T[K]>

View File

@ -7,9 +7,10 @@ import {
type RuntimeConfig,
type RuntimeConfigHTTP,
} from './client/base';
import { isCloudfareWorker } from './common';
import { type ObjectToLower, isCloudfareWorker } from './common';
import type { ClientNameEvents, CustomEventsKeys, ResolveEventParams } from './events';
import { GatewayIntentBits } from './types';
import type { APIMessageInteractionMetadata } from './types/payloads/_interactions/base';
export { Logger, PermissionStrings, Formatter } from './common';
//
export { Collection, LimitedCollection } from './collection';
@ -105,3 +106,14 @@ export function extendContext<T extends {}>(
) {
return cb;
}
declare const authorizedIntegrationOwners: ObjectToLower<
APIMessageInteractionMetadata['authorizing_integration_owners']
>;
authorizedIntegrationOwners;
// ^?
declare const interactionMetadataLowercase: ObjectToLower<APIMessageInteractionMetadata>;
interactionMetadataLowercase.authorizingIntegrationOwners;
//. ^?