<commit_before>declare type Writable<T> = { -readonly [P in keyof T]: T[P] };
declare type DeepWritable<T> = { -readonly [P in keyof T]: DeepWritable<T[P]> };

declare type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> };

/**
 * UTILITY TYPES
 */

/**
 * Type that returns an array of all keys of a provided object that are of
 * of the provided type, or a subtype of the type.
 */
declare type KeysOfType<Type extends object, Match> = {
  [Key in keyof Type]-?: Type[Key] extends Match ? Key : never;
};

/**
 * Type that matches one of the keys of an object that is of the provided
 * type, or a subtype of it.
 */
declare type KeyOfType<Type extends object, Match> = KeysOfType<Type, Match>[keyof Type];

declare type VnodeElementTag<Attrs = Record<string, unknown>, State = Record<string, unknown>> =
  | string
  | import('mithril').ComponentTypes<Attrs, State>;

/**
 * @deprecated Please import `app` from a namespace instead of using it as a global variable.
 *
 * @example App in forum JS
 * ```
 * import app from 'flarum/forum/app';
 * ```
 *
 * @example App in admin JS
 * ```
 * import app from 'flarum/admin/app';
 * ```
 *
 * @example App in common JS
 * ```
 * import app from 'flarum/common/app';
 * ```
 */
declare const app: never;
<commit_msg>`VnodeElementTag` must be either a string or a class.<commit_after>declare type Writable<T> = { -readonly [P in keyof T]: T[P] };
declare type DeepWritable<T> = { -readonly [P in keyof T]: DeepWritable<T[P]> };

declare type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> };

/**
 * UTILITY TYPES
 */

/**
 * Type that returns an array of all keys of a provided object that are of
 * of the provided type, or a subtype of the type.
 */
declare type KeysOfType<Type extends object, Match> = {
  [Key in keyof Type]-?: Type[Key] extends Match ? Key : never;
};

/**
 * Type that matches one of the keys of an object that is of the provided
 * type, or a subtype of it.
 */
declare type KeyOfType<Type extends object, Match> = KeysOfType<Type, Match>[keyof Type];

type Component<A> = import('mithril').Component<A>;

declare type ComponentClass< 
Attrs = Record<string, unknown>, C extends Component<Attrs> = Component<Attrs>> = { new (...args: any[]): Component<Attrs>, prototype: C };

/**
 * Unfortunately, TypeScript only supports strings and classes for JSX tags.
 * Therefore, our type definition should only allow for those two types.
 * 
 * @see https://github.com/microsoft/TypeScript/issues/14789#issuecomment-412247771
 */
declare type VnodeElementTag<
  Attrs = Record<string, unknown>,
  C extends Component<Attrs> = Component<Attrs>
> = string | ComponentClass<Attrs, C>;

/**
 * @deprecated Please import `app` from a namespace instead of using it as a global variable.
 *
 * @example App in forum JS
 * ```
 * import app from 'flarum/forum/app';
 * ```
 *
 * @example App in admin JS
 * ```
 * import app from 'flarum/admin/app';
 * ```
 *
 * @example App in common JS
 * ```
 * import app from 'flarum/common/app';
 * ```
 */
declare const app: never;

{'fraction_non_alphanumeric': 0.136986301369863, 'fraction_numerical': 0.0045662100456621, 'mean_word_length': 3.8837579617834397, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 35, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7525343', 'n_tokens_mistral': 1004, 'n_tokens_neox': 960, 'n_words': 364}