abseil 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +7 -7
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** biome-ignore-all lint/suspicious/noExplicitAny: Not worth my time */
|
|
2
2
|
import { type APIComponentInContainer, type APIComponentInMessageActionRow, type APIMessageComponent, type APISectionAccessoryComponent, type APISelectMenuComponent, ComponentType } from "discord-api-types/v10";
|
|
3
|
-
type CT = typeof ComponentType & {
|
|
3
|
+
type CT = Omit<typeof ComponentType, "SelectMenu"> & {
|
|
4
4
|
"Button:URL": ComponentType.Button;
|
|
5
5
|
"Button:SKU": ComponentType.Button;
|
|
6
6
|
};
|
|
@@ -15,7 +15,7 @@ type Last<T extends any[]> = T extends [...any[], infer L] ? L : never;
|
|
|
15
15
|
type Arrable<T> = T | T[];
|
|
16
16
|
type Overwriter<T> = Partial<T> | ((prev: T) => Partial<T>);
|
|
17
17
|
interface ChildrenMap {
|
|
18
|
-
ActionRow: IComponentType[APIComponentInMessageActionRow["type"]]
|
|
18
|
+
ActionRow: IComponentType[APIComponentInMessageActionRow["type"]];
|
|
19
19
|
Container: IComponentType[APIComponentInContainer["type"]];
|
|
20
20
|
Section: "TextDisplay";
|
|
21
21
|
}
|
|
@@ -38,9 +38,7 @@ export type Traverser<T extends keyof CT, H extends (keyof CT)[], ST extends key
|
|
|
38
38
|
parent: TraverserFn<keyof CT, [...H, T]>;
|
|
39
39
|
} & (T extends IComponentType[APISelectMenuComponent["type"]] ? object : {
|
|
40
40
|
/** Insert a sibling before the current node. */
|
|
41
|
-
insertBefore: (component:
|
|
42
|
-
type: (typeof ComponentType)[Exclude<ST, "Button:URL" | "Button:SKU">];
|
|
43
|
-
}>) => Traverser<T, H, ST>;
|
|
41
|
+
insertBefore: <V extends Component<ST>>(component: V) => Traverser<T, H, ST>;
|
|
44
42
|
/** Jump to the last neighbouring node of a type in an array. */
|
|
45
43
|
last: <N extends ST>(type: Arrable<N>) => Traverser<N, [...H, T], ST> | undefined;
|
|
46
44
|
/** Jump to the next neighbouring node of a type in an array. */
|
|
@@ -63,7 +61,7 @@ export default function abseil<T extends APIMessageComponent>(components: T[]):
|
|
|
63
61
|
* Enter the tree at a specific node.
|
|
64
62
|
* @param query Either the component `id` or `custom_id`
|
|
65
63
|
*/
|
|
66
|
-
find<Q extends number | string | RegExp, F extends Q extends number ? keyof CT : WithCustomIdType>(query: Q, type: Arrable<F>): Omit<Traverser<F, [], "File" | "ActionRow" | "Button" | "StringSelect" | "TextInput" | "UserSelect" | "RoleSelect" | "MentionableSelect" | "ChannelSelect" | "Section" | "TextDisplay" | "Thumbnail" | "MediaGallery" | "Separator" | "ContentInventoryEntry" | "Container" | "Label" | "FileUpload" | "RadioGroup" | "CheckboxGroup" | "Checkbox" | "
|
|
64
|
+
find<Q extends number | string | RegExp, F extends Q extends number ? keyof CT : WithCustomIdType>(query: Q, type: Arrable<F>): Omit<Traverser<F, [], "File" | "ActionRow" | "Button" | "StringSelect" | "TextInput" | "UserSelect" | "RoleSelect" | "MentionableSelect" | "ChannelSelect" | "Section" | "TextDisplay" | "Thumbnail" | "MediaGallery" | "Separator" | "ContentInventoryEntry" | "Container" | "Label" | "FileUpload" | "RadioGroup" | "CheckboxGroup" | "Checkbox" | "Button:URL" | "Button:SKU">, "previous"> | undefined;
|
|
67
65
|
/** Entry point of the tree, visually this is the top-leftmost component. */
|
|
68
66
|
initial: TraverserFn<IComponentType[T["type"]], [], "parent" | "previous">;
|
|
69
67
|
};
|
|
@@ -72,5 +70,7 @@ export default function abseil<T extends APIMessageComponent>(components: T[]):
|
|
|
72
70
|
* Data on this node will be stripped, attempting to access most functions will throw.
|
|
73
71
|
* @important This may cause issues when you try to navigate {@link abseil} instances you've previously created
|
|
74
72
|
*/
|
|
75
|
-
export declare function removeNode<T extends keyof
|
|
73
|
+
export declare function removeNode<T extends keyof CT>(node: Traverser<T, any, any>): void;
|
|
74
|
+
/** Assert that a component is of certain type(s). */
|
|
75
|
+
export declare const assert: <T extends keyof CT>(component: APIMessageComponent, type: Arrable<T>) => component is Component<T>;
|
|
76
76
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ const selects = new Set([
|
|
|
8
8
|
ComponentType.MentionableSelect,
|
|
9
9
|
ComponentType.ChannelSelect,
|
|
10
10
|
]);
|
|
11
|
-
function
|
|
11
|
+
function typesMatch(component, expected, throwOnMismatch) {
|
|
12
12
|
const expectedTypes = new Set((Array.isArray(expected) ? expected : [expected]).filter(Boolean));
|
|
13
13
|
if (!expectedTypes.size) {
|
|
14
14
|
throw new Error("Selectors must specify expected type(s)");
|
|
@@ -20,8 +20,10 @@ function matchTypes(component, expected, doNotThrow) {
|
|
|
20
20
|
else if ("sku_id" in component)
|
|
21
21
|
actualType += ":SKU";
|
|
22
22
|
}
|
|
23
|
+
else if (actualType === "SelectMenu")
|
|
24
|
+
actualType = "StringSelect";
|
|
23
25
|
if (!expectedTypes.has(actualType)) {
|
|
24
|
-
if (
|
|
26
|
+
if (throwOnMismatch) {
|
|
25
27
|
throw new TypeError(`Type mismatch: expected ${[...expectedTypes].join(" or ")}, got ${actualType}`);
|
|
26
28
|
}
|
|
27
29
|
return false;
|
|
@@ -65,7 +67,7 @@ function findParent(child, components) {
|
|
|
65
67
|
/** Initiate a tree traverser. */
|
|
66
68
|
export default function abseil(components) {
|
|
67
69
|
function createTraverser(component, expected, previous, neighbours) {
|
|
68
|
-
|
|
70
|
+
typesMatch(component, expected, true);
|
|
69
71
|
const traverser = {
|
|
70
72
|
value: component,
|
|
71
73
|
update(v) {
|
|
@@ -91,13 +93,13 @@ export default function abseil(components) {
|
|
|
91
93
|
traverser.last = (t) => {
|
|
92
94
|
for (let i = neighbours.length - 1; i >= 0; --i) {
|
|
93
95
|
const sibling = neighbours[i];
|
|
94
|
-
if (!
|
|
96
|
+
if (!typesMatch(sibling, t))
|
|
95
97
|
continue;
|
|
96
98
|
return createTraverser(sibling, t, traverser, neighbours);
|
|
97
99
|
}
|
|
98
100
|
};
|
|
99
101
|
traverser.next = (t) => {
|
|
100
|
-
const next = neighbours.slice(neighbours.indexOf(component) + 1).find((s) =>
|
|
102
|
+
const next = neighbours.slice(neighbours.indexOf(component) + 1).find((s) => typesMatch(s, t));
|
|
101
103
|
if (!next)
|
|
102
104
|
return undefined;
|
|
103
105
|
return createTraverser(next, t, traverser, neighbours);
|
|
@@ -122,7 +124,7 @@ export default function abseil(components) {
|
|
|
122
124
|
*/
|
|
123
125
|
find(query, type) {
|
|
124
126
|
const component = find(query, components);
|
|
125
|
-
if (!component || !
|
|
127
|
+
if (!component || !typesMatch(component, type))
|
|
126
128
|
return undefined;
|
|
127
129
|
const parent = findParent(component, components);
|
|
128
130
|
return createTraverser(component, type, undefined, parent && "components" in parent ? parent.components : components);
|
|
@@ -149,4 +151,6 @@ export function removeNode(node) {
|
|
|
149
151
|
});
|
|
150
152
|
}
|
|
151
153
|
}
|
|
154
|
+
/** Assert that a component is of certain type(s). */
|
|
155
|
+
export const assert = (component, type) => typesMatch(component, type);
|
|
152
156
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,EAML,aAAa,GACd,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|