diff --git a/ember-headless-table/src/-private/-type-tests/table-api.test.ts b/ember-headless-table/src/-private/-type-tests/table-api.test.ts
new file mode 100644
index 00000000..e2705272
--- /dev/null
+++ b/ember-headless-table/src/-private/-type-tests/table-api.test.ts
@@ -0,0 +1,16 @@
+import { expectTypeOf } from 'expect-type';
+
+import { ColumnReordering } from '../../plugins/column-reordering';
+import { ColumnResizing } from '../../plugins/column-resizing';
+import { DataSorting } from '../../plugins/data-sorting';
+
+import type { Table } from '[public-types]';
+
+// We're testing types, not behaviors
+const x = 0 as unknown as Table<{ x: number }>;
+
+//////////////////////////////
+//
#pluginOf
+expectTypeOf(x.pluginOf(DataSorting)).toEqualTypeOf();
+expectTypeOf(x.pluginOf(ColumnReordering)).toEqualTypeOf();
+expectTypeOf(x.pluginOf(ColumnResizing)).toEqualTypeOf();
diff --git a/ember-headless-table/src/-private/-type-tests/table-config.test.ts b/ember-headless-table/src/-private/-type-tests/table-config.test.ts
index 7dc02932..f470a358 100644
--- a/ember-headless-table/src/-private/-type-tests/table-config.test.ts
+++ b/ember-headless-table/src/-private/-type-tests/table-config.test.ts
@@ -2,12 +2,13 @@ import { expectTypeOf } from 'expect-type';
import { BasePlugin } from '../../plugins/-private/base';
import { ColumnReordering } from '../../plugins/column-reordering';
-import { Plugins } from '../../plugins/-private/utils';
-import { DataSorting, SortItem } from '../../plugins/data-sorting';
import { ColumnResizing } from '../../plugins/column-resizing';
import { ColumnVisibility } from '../../plugins/column-visibility';
+import { DataSorting } from '../../plugins/data-sorting';
import { StickyColumns } from '../../plugins/sticky-columns';
+import type { Plugins } from '../../plugins/-private/utils';
+import type { SortItem } from '../../plugins/data-sorting';
import type { Plugin } from '[public-plugin-types]';
import type { TableConfig } from '[public-types]';
import type { Constructor } from '#private-types';
@@ -26,8 +27,10 @@ expectTypeOf<
[Constructor, Constructor]
>().toMatchTypeOf();
-class SomeClass { foo = 'bar' }
-class LocalPlugin extends BasePlugin<{ Meta: { Table: SomeClass} }> {
+class SomeClass {
+ foo = 'bar';
+}
+class LocalPlugin extends BasePlugin<{ Meta: { Table: SomeClass } }> {
name = 'local-plugin';
}
@@ -51,8 +54,10 @@ expectTypeOf([StickyColumns]).toMatchTypeOf();
// The various ways to define plugins
expectTypeOf([DataSorting, ColumnReordering]).toMatchTypeOf();
-const onSort = (_sorts: SortItem[]) => {};
+const onSort = (_sorts: SortItem[]) => {
+ /* intentionally empty */
+};
const sorts: SortItem[] = [];
-expectTypeOf([DataSorting.with(() => ({ }))]).toMatchTypeOf();
-expectTypeOf([DataSorting.with(() => ({ onSort, sorts }))]).toMatchTypeOf();
+expectTypeOf([DataSorting.with(() => ({}))]).toMatchTypeOf();
+expectTypeOf([DataSorting.with(() => ({ onSort, sorts }))]).toMatchTypeOf();
diff --git a/ember-headless-table/src/-private/table.ts b/ember-headless-table/src/-private/table.ts
index 061f5868..f4f7645d 100644
--- a/ember-headless-table/src/-private/table.ts
+++ b/ember-headless-table/src/-private/table.ts
@@ -178,7 +178,7 @@ export class Table extends Resource> {
/**
* Get the active plugin instance for the given plugin class
*/
- pluginOf(klass: Class): Instance | undefined {
+ pluginOf>(klass: Class): Instance | undefined {
let result = this.plugins.find((plugin) => plugin instanceof klass);
/**
diff --git a/test-app/tests/plugins/queries/meta-test.ts b/test-app/tests/plugins/queries/meta-test.ts
index aba0d774..46cef671 100644
--- a/test-app/tests/plugins/queries/meta-test.ts
+++ b/test-app/tests/plugins/queries/meta-test.ts
@@ -230,13 +230,23 @@ module('Plugins | Queries | meta', function (hooks) {
});
module('withFeature', function () {
- class FeatureProvidingPlugin extends BasePlugin {
+ class FeatureProvidingPlugin extends BasePlugin<{
+ Meta: {
+ Table: TestTableMeta;
+ Column: TestColumnMeta;
+ };
+ }> {
static features = ['feature-a'];
name = 'queries-feature-a-test-plugin';
meta = { column: TestColumnMeta, table: TestTableMeta };
}
- class FeatureProvidingPlugin2 extends BasePlugin {
+ class FeatureProvidingPlugin2 extends BasePlugin<{
+ Meta: {
+ Table: TestTableMeta;
+ Column: TestColumnMeta;
+ };
+ }> {
static features = ['feature-b'];
name = 'queries-feature-b-test-plugin';
meta = { column: TestColumnMeta, table: TestTableMeta };