diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2023-12-19 01:17:22 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-19 06:17:22 +0000 |
commit | e9e504b40dde8691c32c933c7e27e28cfad1c8b5 (patch) | |
tree | 1128f311d9e5cb6316fbf237724eb2b87a522446 | |
parent | 20dd6112724a77fee16281930e79a2e6822acff7 (diff) |
Template type improvements (#380)
* Default templates to unknown
* Default typescript templates to unknown
* More template type updates
-rw-r--r-- | dev/manifest-util.js | 4 | ||||
-rw-r--r-- | ext/js/comm/frame-client.js | 2 | ||||
-rw-r--r-- | ext/js/core.js | 6 | ||||
-rw-r--r-- | ext/js/data/database.js | 6 | ||||
-rw-r--r-- | ext/js/data/json-schema.js | 2 | ||||
-rw-r--r-- | ext/js/display/display-generator.js | 2 | ||||
-rw-r--r-- | ext/js/dom/selector-observer.js | 2 | ||||
-rw-r--r-- | ext/js/general/cache-map.js | 3 | ||||
-rw-r--r-- | ext/js/general/task-accumulator.js | 3 | ||||
-rw-r--r-- | ext/js/language/translator.js | 2 | ||||
-rw-r--r-- | ext/js/pages/settings/keyboard-mouse-input-field.js | 2 | ||||
-rw-r--r-- | ext/js/pages/settings/profile-controller.js | 2 | ||||
-rw-r--r-- | test/json-schema.test.js | 2 | ||||
-rw-r--r-- | types/ext/anki-templates-internal.d.ts | 2 | ||||
-rw-r--r-- | types/ext/api.d.ts | 2 | ||||
-rw-r--r-- | types/ext/cache-map.d.ts | 2 | ||||
-rw-r--r-- | types/ext/core.d.ts | 2 | ||||
-rw-r--r-- | types/ext/dictionary-data-util.d.ts | 2 | ||||
-rw-r--r-- | types/ext/dictionary-database.d.ts | 6 | ||||
-rw-r--r-- | types/ext/dictionary-worker.d.ts | 6 | ||||
-rw-r--r-- | types/ext/dom-data-binder.d.ts | 24 | ||||
-rw-r--r-- | types/ext/dynamic-property.d.ts | 2 | ||||
-rw-r--r-- | types/ext/selector-observer.d.ts | 12 | ||||
-rw-r--r-- | types/ext/task-accumulator.d.ts | 2 |
24 files changed, 51 insertions, 49 deletions
diff --git a/dev/manifest-util.js b/dev/manifest-util.js index ac9b58db..6a53c8d6 100644 --- a/dev/manifest-util.js +++ b/dev/manifest-util.js @@ -25,7 +25,7 @@ import {parseJson} from './json.js'; const dirname = path.dirname(fileURLToPath(import.meta.url)); /** - * @template T + * @template [T=unknown] * @param {T} value * @returns {T} */ @@ -240,7 +240,7 @@ export class ManifestUtil { } /** - * @template T + * @template [T=unknown] * @param {T[]} array1 * @param {T[]} array2 * @param {number} lengthOffset diff --git a/ext/js/comm/frame-client.js b/ext/js/comm/frame-client.js index b07bb796..5e997622 100644 --- a/ext/js/comm/frame-client.js +++ b/ext/js/comm/frame-client.js @@ -56,7 +56,7 @@ export class FrameClient { } /** - * @template T + * @template [T=unknown] * @param {T} data * @returns {import('frame-client').Message<T>} * @throws {Error} diff --git a/ext/js/core.js b/ext/js/core.js index d16a2099..d2372352 100644 --- a/ext/js/core.js +++ b/ext/js/core.js @@ -48,7 +48,7 @@ export function stringReverse(string) { /** * Creates a deep clone of an object or value. This is similar to `parseJson(JSON.stringify(value))`. - * @template T + * @template [T=unknown] * @param {T} value The value to clone. * @returns {T} A new clone of the value. * @throws An error if the value is circular and cannot be cloned. @@ -245,7 +245,7 @@ export function generateId(length) { /** * Creates an unresolved promise that can be resolved later, outside the promise's executor function. - * @template T + * @template [T=unknown] * @returns {import('core').DeferredPromiseDetails<T>} An object `{promise, resolve, reject}`, containing the promise and the resolve/reject functions. */ export function deferPromise() { @@ -514,7 +514,7 @@ export class EventListenerCollection { /** * Class representing a generic value with an override stack. * Changes can be observed by listening to the 'change' event. - * @template T + * @template [T=unknown] * @augments EventDispatcher<import('dynamic-property').EventType> */ export class DynamicProperty extends EventDispatcher { diff --git a/ext/js/data/database.js b/ext/js/data/database.js index c8047b41..43ac9e5b 100644 --- a/ext/js/data/database.js +++ b/ext/js/data/database.js @@ -153,7 +153,7 @@ export class Database { } /** - * @template TPredicateArg + * @template [TPredicateArg=unknown] * @template [TResult=unknown] * @template [TResultDefault=unknown] * @param {TObjectStoreName} objectStoreName @@ -174,8 +174,8 @@ export class Database { } /** - * @template TData - * @template TPredicateArg + * @template [TData=unknown] + * @template [TPredicateArg=unknown] * @template [TResult=unknown] * @template [TResultDefault=unknown] * @param {IDBObjectStore|IDBIndex} objectStoreOrIndex diff --git a/ext/js/data/json-schema.js b/ext/js/data/json-schema.js index d63cfd1a..52a55d85 100644 --- a/ext/js/data/json-schema.js +++ b/ext/js/data/json-schema.js @@ -249,7 +249,7 @@ export class JsonSchema { } /** - * @template T + * @template [T=unknown] * @param {T} value * @returns {T} */ diff --git a/ext/js/display/display-generator.js b/ext/js/display/display-generator.js index 7bedfa12..ccdd49cf 100644 --- a/ext/js/display/display-generator.js +++ b/ext/js/display/display-generator.js @@ -845,7 +845,7 @@ export class DisplayGenerator { } /** - * @template TItem + * @template [TItem=unknown] * @template [TExtraArg=void] * @param {HTMLElement} container * @param {(item: TItem, arg: TExtraArg) => ?Node} createItem diff --git a/ext/js/dom/selector-observer.js b/ext/js/dom/selector-observer.js index 8dd18242..cff2985c 100644 --- a/ext/js/dom/selector-observer.js +++ b/ext/js/dom/selector-observer.js @@ -18,7 +18,7 @@ /** * Class which is used to observe elements matching a selector in specific element. - * @template T + * @template [T=unknown] */ export class SelectorObserver { /** diff --git a/ext/js/general/cache-map.js b/ext/js/general/cache-map.js index cc706380..a995b8c7 100644 --- a/ext/js/general/cache-map.js +++ b/ext/js/general/cache-map.js @@ -18,7 +18,8 @@ /** - * @template K,V + * @template [K=unknown] + * @template [V=unknown] * Class which caches a map of values, keeping the most recently accessed values. */ export class CacheMap { diff --git a/ext/js/general/task-accumulator.js b/ext/js/general/task-accumulator.js index cb136908..86cb9e3e 100644 --- a/ext/js/general/task-accumulator.js +++ b/ext/js/general/task-accumulator.js @@ -19,7 +19,8 @@ import {log} from '../core.js'; /** - * @template K,V + * @template [K=unknown] + * @template [V=unknown] */ export class TaskAccumulator { /** diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js index e33ea4d4..bf22ee6b 100644 --- a/ext/js/language/translator.js +++ b/ext/js/language/translator.js @@ -1887,7 +1887,7 @@ export class Translator { // Miscellaneous /** - * @template T + * @template [T=unknown] * @param {Set<T>} set * @param {T[]} values * @returns {boolean} diff --git a/ext/js/pages/settings/keyboard-mouse-input-field.js b/ext/js/pages/settings/keyboard-mouse-input-field.js index 99af3941..f50ca112 100644 --- a/ext/js/pages/settings/keyboard-mouse-input-field.js +++ b/ext/js/pages/settings/keyboard-mouse-input-field.js @@ -315,7 +315,7 @@ export class KeyboardMouseInputField extends EventDispatcher { } /** - * @template T + * @template [T=unknown] * @param {T[]} array1 * @param {T[]} array2 * @returns {boolean} diff --git a/ext/js/pages/settings/profile-controller.js b/ext/js/pages/settings/profile-controller.js index 6e0710a8..c54bfe73 100644 --- a/ext/js/pages/settings/profile-controller.js +++ b/ext/js/pages/settings/profile-controller.js @@ -595,7 +595,7 @@ export class ProfileController { } /** - * @template T + * @template [T=unknown] * @param {T} currentValue * @param {T} value1 * @param {T} value2 diff --git a/test/json-schema.test.js b/test/json-schema.test.js index e6817d23..fb7644de 100644 --- a/test/json-schema.test.js +++ b/test/json-schema.test.js @@ -50,7 +50,7 @@ function createProxy(schema, value) { } /** - * @template T + * @template [T=unknown] * @param {T} value * @returns {T} */ diff --git a/types/ext/anki-templates-internal.d.ts b/types/ext/anki-templates-internal.d.ts index 4cb50050..2842765d 100644 --- a/types/ext/anki-templates-internal.d.ts +++ b/types/ext/anki-templates-internal.d.ts @@ -53,7 +53,7 @@ export type CreateDetails = { media?: AnkiTemplates.Media; }; -export type CachedValue<T> = { +export type CachedValue<T = unknown> = { getter: () => T; hasValue: boolean; value: T | undefined; diff --git a/types/ext/api.d.ts b/types/ext/api.d.ts index 2d78cc06..41d3a96d 100644 --- a/types/ext/api.d.ts +++ b/types/ext/api.d.ts @@ -34,7 +34,7 @@ import type * as Translator from './translator'; // Generic -export type Handler<TDetails, TResult, THasSender extends boolean = false> = ( +export type Handler<TDetails = unknown, TResult = unknown, THasSender extends boolean = false> = ( details: TDetails, sender: (THasSender extends true ? chrome.runtime.MessageSender : void) ) => (TResult | Promise<TResult>); diff --git a/types/ext/cache-map.d.ts b/types/ext/cache-map.d.ts index 0af7109a..fcf969e8 100644 --- a/types/ext/cache-map.d.ts +++ b/types/ext/cache-map.d.ts @@ -15,7 +15,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -export type Node<K, V> = { +export type Node<K = unknown, V = unknown> = { key: K | null; value: V | null; previous: Node<K, V> | null; diff --git a/types/ext/core.d.ts b/types/ext/core.d.ts index b83e6a74..d1a4ef8f 100644 --- a/types/ext/core.d.ts +++ b/types/ext/core.d.ts @@ -41,7 +41,7 @@ export type TokenString = string; export type TokenObject = Record<string, never>; -export type DeferredPromiseDetails<T> = { +export type DeferredPromiseDetails<T = unknown> = { promise: Promise<T>; resolve: (value: T) => void; reject: (reason?: RejectionReason) => void; diff --git a/types/ext/dictionary-data-util.d.ts b/types/ext/dictionary-data-util.d.ts index 75128368..b78e6439 100644 --- a/types/ext/dictionary-data-util.d.ts +++ b/types/ext/dictionary-data-util.d.ts @@ -45,7 +45,7 @@ export type KanjiFrequenciesMap2Data = { export type TermFrequenciesMap3 = Map<string, FrequencyData>; -export type DictionaryFrequency<T> = { +export type DictionaryFrequency<T = unknown> = { dictionary: string; frequencies: T[]; }; diff --git a/types/ext/dictionary-database.d.ts b/types/ext/dictionary-database.d.ts index 6569f76b..3202ef60 100644 --- a/types/ext/dictionary-database.d.ts +++ b/types/ext/dictionary-database.d.ts @@ -230,11 +230,11 @@ export type FindMultiBulkData<TItem = unknown> = { indexIndex: number; }; -export type CreateQuery<TItem> = (item: TItem) => (IDBValidKey | IDBKeyRange | null); +export type CreateQuery<TItem = unknown> = (item: TItem) => (IDBValidKey | IDBKeyRange | null); -export type FindPredicate<TItem, TRow> = (row: TRow, item: TItem) => boolean; +export type FindPredicate<TItem = unknown, TRow = unknown> = (row: TRow, item: TItem) => boolean; -export type CreateResult<TItem, TRow, TResult> = (row: TRow, data: FindMultiBulkData<TItem>) => TResult; +export type CreateResult<TItem = unknown, TRow = unknown, TResult = unknown> = (row: TRow, data: FindMultiBulkData<TItem>) => TResult; export type DictionarySet = { has(value: string): boolean; diff --git a/types/ext/dictionary-worker.d.ts b/types/ext/dictionary-worker.d.ts index 17030691..ac076ab8 100644 --- a/types/ext/dictionary-worker.d.ts +++ b/types/ext/dictionary-worker.d.ts @@ -29,7 +29,7 @@ export type InvokeDetails<TResponseRaw = unknown, TResponse = unknown> = { formatResult: ((result: TResponseRaw) => TResponse) | null; }; -export type MessageCompleteData<TResponseRaw> = { +export type MessageCompleteData<TResponseRaw = unknown> = { action: 'complete'; params: MessageCompleteParams<TResponseRaw>; }; @@ -44,7 +44,7 @@ export type MessageGetImageDetailsData = { params: MessageGetImageDetailsParams; }; -export type MessageCompleteParams<TResponseRaw> = Core.Response<TResponseRaw>; +export type MessageCompleteParams<TResponseRaw = unknown> = Core.Response<TResponseRaw>; export type MessageProgressParams = { args: unknown[]; @@ -56,7 +56,7 @@ export type MessageGetImageDetailsParams = { mediaType: string; }; -export type MessageData<TResponseRaw> = MessageCompleteData<TResponseRaw> | MessageProgressData | MessageGetImageDetailsData; +export type MessageData<TResponseRaw = unknown> = MessageCompleteData<TResponseRaw> | MessageProgressData | MessageGetImageDetailsData; export type MessageCompleteResultSerialized = { result: DictionaryImporter.Summary; diff --git a/types/ext/dom-data-binder.d.ts b/types/ext/dom-data-binder.d.ts index ca0036c3..5de941ff 100644 --- a/types/ext/dom-data-binder.d.ts +++ b/types/ext/dom-data-binder.d.ts @@ -17,28 +17,28 @@ import type * as TaskAccumulator from './task-accumulator'; -export type CreateElementMetadataCallback<T> = (element: Element) => T | undefined; +export type CreateElementMetadataCallback<T = unknown> = (element: Element) => T | undefined; -export type CompareElementMetadataCallback<T> = (metadata1: T, metadata2: T) => boolean; +export type CompareElementMetadataCallback<T = unknown> = (metadata1: T, metadata2: T) => boolean; -export type GetValuesCallback<T> = (args: GetValuesDetails<T>[]) => Promise<TaskResult[]>; +export type GetValuesCallback<T = unknown> = (args: GetValuesDetails<T>[]) => Promise<TaskResult[]>; -export type SetValuesCallback<T> = (args: SetValuesDetails<T>[]) => Promise<TaskResult[]>; +export type SetValuesCallback<T = unknown> = (args: SetValuesDetails<T>[]) => Promise<TaskResult[]>; -export type GetValuesDetails<T> = { +export type GetValuesDetails<T = unknown> = { element: Element; metadata: T; }; -export type SetValuesDetails<T> = { +export type SetValuesDetails<T = unknown> = { element: Element; metadata: T; value: ValueType; }; -export type OnErrorCallback<T> = (error: Error, stale: boolean, element: Element, metadata: T) => void; +export type OnErrorCallback<T = unknown> = (error: Error, stale: boolean, element: Element, metadata: T) => void; -export type ConstructorDetails<T> = { +export type ConstructorDetails<T = unknown> = { selector: string; createElementMetadata: CreateElementMetadataCallback<T>; compareElementMetadata: CompareElementMetadataCallback<T>; @@ -47,7 +47,7 @@ export type ConstructorDetails<T> = { onError?: OnErrorCallback<T> | null; }; -export type ElementObserver<T> = { +export type ElementObserver<T = unknown> = { element: Element; type: NormalizedElementType; value: unknown; @@ -70,17 +70,17 @@ export type AssignTaskValue = {value: ValueType}; export type ValueType = boolean | string | number | null; -export type UpdateTask<T> = [ +export type UpdateTask<T = unknown> = [ key: ElementObserver<T> | null, task: TaskAccumulator.Task<UpdateTaskValue>, ]; -export type AssignTask<T> = [ +export type AssignTask<T = unknown> = [ key: ElementObserver<T> | null, task: TaskAccumulator.Task<AssignTaskValue>, ]; -export type ApplyTarget<T> = [ +export type ApplyTarget<T = unknown> = [ observer: ElementObserver<T>, task: TaskAccumulator.Task<UpdateTaskValue> | TaskAccumulator.Task<AssignTaskValue> | null, ]; diff --git a/types/ext/dynamic-property.d.ts b/types/ext/dynamic-property.d.ts index 5ec886d2..ba15257a 100644 --- a/types/ext/dynamic-property.d.ts +++ b/types/ext/dynamic-property.d.ts @@ -17,6 +17,6 @@ export type EventType = 'change'; -export type ChangeEventDetails<T> = { +export type ChangeEventDetails<T = unknown> = { value: T; }; diff --git a/types/ext/selector-observer.d.ts b/types/ext/selector-observer.d.ts index a84b2add..2b3e9381 100644 --- a/types/ext/selector-observer.d.ts +++ b/types/ext/selector-observer.d.ts @@ -15,15 +15,15 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -export type OnAddedCallback<T> = (element: Element) => T | undefined; +export type OnAddedCallback<T = unknown> = (element: Element) => T | undefined; -export type OnRemovedCallback<T> = (element: Element, data: T) => void; +export type OnRemovedCallback<T = unknown> = (element: Element, data: T) => void; -export type OnChildrenUpdatedCallback<T> = (element: Element, data: T) => void; +export type OnChildrenUpdatedCallback<T = unknown> = (element: Element, data: T) => void; -export type IsStaleCallback<T> = (element: Element, data: T) => boolean; +export type IsStaleCallback<T = unknown> = (element: Element, data: T) => boolean; -export type ConstructorDetails<T> = { +export type ConstructorDetails<T = unknown> = { /** A string CSS selector used to find elements. */ selector: string; /** A string CSS selector used to filter elements, or `null` for no filtering. */ @@ -48,7 +48,7 @@ export type MutationRecordLike = { target: Node; }; -export type Observer<T> = { +export type Observer<T = unknown> = { element: Element; ancestors: Node[]; data: T; diff --git a/types/ext/task-accumulator.d.ts b/types/ext/task-accumulator.d.ts index f02d449b..e96ba6a6 100644 --- a/types/ext/task-accumulator.d.ts +++ b/types/ext/task-accumulator.d.ts @@ -15,7 +15,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -export type Task<V> = { +export type Task<V = unknown> = { data: V; stale: boolean; }; |