abseil 0.3.1 → 0.4.0
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 +25 -19
- package/dist/index.js +16 -4
- 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 = Omit<typeof ComponentType, "SelectMenu"> & {
|
|
3
|
+
type CT = Omit<typeof ComponentType, "SelectMenu" | "ContentInventoryEntry"> & {
|
|
4
4
|
"Button:URL": ComponentType.Button;
|
|
5
5
|
"Button:SKU": ComponentType.Button;
|
|
6
6
|
};
|
|
@@ -19,7 +19,9 @@ interface ChildrenMap {
|
|
|
19
19
|
Container: IComponentType[APIComponentInContainer["type"]];
|
|
20
20
|
Section: "TextDisplay";
|
|
21
21
|
}
|
|
22
|
-
type
|
|
22
|
+
type Depth = [keyof CT, keyof CT][];
|
|
23
|
+
type History = Depth[];
|
|
24
|
+
type TraverserFn<C extends keyof CT, H extends History, D extends Depth, O extends string = ""> = <T extends C>(type: Arrable<T>) => Omit<Traverser<[...D, [T, C]], H>, O>;
|
|
23
25
|
type Component<T extends keyof CT> = Extract<APIMessageComponent, {
|
|
24
26
|
type: CT[T extends "Button:URL" | "Button:SKU" ? "Button" : T];
|
|
25
27
|
} & (T extends "Button" ? {
|
|
@@ -29,31 +31,35 @@ type Component<T extends keyof CT> = Extract<APIMessageComponent, {
|
|
|
29
31
|
} : T extends "Button:SKU" ? {
|
|
30
32
|
sku_id: string;
|
|
31
33
|
} : object)>;
|
|
32
|
-
export type Traverser<
|
|
34
|
+
export type Traverser<D extends Depth, H extends History> = {
|
|
33
35
|
/** Shallow merge with the current component in place. */
|
|
34
|
-
update: (value: Overwriter<Component<
|
|
36
|
+
update: (value: Overwriter<Component<Last<D>[0]>>) => Traverser<D, H>;
|
|
35
37
|
/** The current component. */
|
|
36
|
-
value: Component<
|
|
37
|
-
|
|
38
|
-
parent: TraverserFn<keyof CT, [...H, T]>;
|
|
39
|
-
} & (T extends IComponentType[APISelectMenuComponent["type"]] ? object : {
|
|
38
|
+
value: Component<Last<D>[0]>;
|
|
39
|
+
} & (Last<D>[0] extends IComponentType[APISelectMenuComponent["type"]] ? object : {
|
|
40
40
|
/** Insert a sibling before the current node. */
|
|
41
|
-
insertBefore: <V extends Component<
|
|
41
|
+
insertBefore: <V extends Component<Last<D>[1]>>(component: V) => Traverser<D, H>;
|
|
42
42
|
/** Jump to the last neighbouring node of a type in an array. */
|
|
43
|
-
last: <N extends
|
|
43
|
+
last: <N extends Last<D>[1]>(type: Arrable<N>) => Traverser<[...Pop<D>, [N, Last<D>[1]]], [...H, D]> | undefined;
|
|
44
44
|
/** Jump to the next neighbouring node of a type in an array. */
|
|
45
|
-
next: <N extends
|
|
45
|
+
next: <N extends Last<D>[1]>(type: Arrable<N>) => Traverser<[...Pop<D>, [N, Last<D>[1]]], [...H, D]> | undefined;
|
|
46
46
|
/** Access the next node in an array. */
|
|
47
|
-
sibling: TraverserFn<
|
|
48
|
-
}) & (
|
|
47
|
+
sibling: TraverserFn<Last<D>[1], [...H, D], Pop<D>>;
|
|
48
|
+
}) & (Last<D>[0] extends keyof ChildrenMap ? {
|
|
49
49
|
/** Access the first child of a node. */
|
|
50
|
-
child: TraverserFn<ChildrenMap[
|
|
51
|
-
} : object) & (
|
|
50
|
+
child: TraverserFn<ChildrenMap[Last<D>[0]], [...H, D], D>;
|
|
51
|
+
} : object) & (Last<D>[0] extends "Section" ? {
|
|
52
52
|
/** Access the accessory of a [Section](https://docs.discord.com/developers/components/reference#section). */
|
|
53
|
-
accessory: TraverserFn<IComponentType[APISectionAccessoryComponent["type"]], [...H,
|
|
53
|
+
accessory: TraverserFn<IComponentType[APISectionAccessoryComponent["type"]], [...H, D], Pop<D>, "sibling">;
|
|
54
54
|
} : object) & (H extends [] ? object : {
|
|
55
55
|
/** Return to the previous node. */
|
|
56
56
|
previous: Traverser<Last<H>, Pop<H>>;
|
|
57
|
+
}) & (D extends [any] ? object : {
|
|
58
|
+
/** Access the parent of the current node. */
|
|
59
|
+
parent: <P extends Last<Pop<D>> extends never ? keyof ChildrenMap : Last<Pop<D>>[0]>(type: Arrable<P>) => Traverser<Last<Pop<D>> extends never ? [...(P extends "Container" ? [] : [never]), [P, keyof CT]] : Pop<D>, [
|
|
60
|
+
...H,
|
|
61
|
+
D
|
|
62
|
+
]>;
|
|
57
63
|
});
|
|
58
64
|
/** Initiate a tree traverser. */
|
|
59
65
|
export default function abseil<T extends APIMessageComponent>(components: T[]): {
|
|
@@ -61,16 +67,16 @@ export default function abseil<T extends APIMessageComponent>(components: T[]):
|
|
|
61
67
|
* Enter the tree at a specific node.
|
|
62
68
|
* @param query Either the component `id` or `custom_id`
|
|
63
69
|
*/
|
|
64
|
-
find<Q extends number | string | RegExp, F extends Q extends number ? keyof CT : WithCustomIdType>(query: Q, type: Arrable<F>): Omit<Traverser<
|
|
70
|
+
find<Q extends number | string | RegExp, F extends Q extends number ? keyof CT : WithCustomIdType>(query: Q, type: Arrable<F>): Omit<Traverser<[never, [F, "File" | "ActionRow" | "Button" | "StringSelect" | "TextInput" | "UserSelect" | "RoleSelect" | "MentionableSelect" | "ChannelSelect" | "Section" | "TextDisplay" | "Thumbnail" | "MediaGallery" | "Separator" | "Container" | "Label" | "FileUpload" | "RadioGroup" | "CheckboxGroup" | "Checkbox" | "Button:URL" | "Button:SKU"]], []>, "previous"> | undefined;
|
|
65
71
|
/** Entry point of the tree, visually this is the top-leftmost component. */
|
|
66
|
-
initial: TraverserFn<IComponentType[T["type"]], [], "parent" | "previous">;
|
|
72
|
+
initial: TraverserFn<IComponentType[T["type"]], [], [], "parent" | "previous">;
|
|
67
73
|
};
|
|
68
74
|
/**
|
|
69
75
|
* Destroy a node in the tree.
|
|
70
76
|
* Data on this node will be stripped, attempting to access most functions will throw.
|
|
71
77
|
* @important This may cause issues when you try to navigate {@link abseil} instances you've previously created
|
|
72
78
|
*/
|
|
73
|
-
export declare function removeNode<
|
|
79
|
+
export declare function removeNode<D extends Depth, H extends History>(node: Traverser<D, H>): void;
|
|
74
80
|
/** Assert that a component is of certain type(s). */
|
|
75
81
|
export declare const assert: <T extends keyof CT>(component: APIMessageComponent, type: Arrable<T>) => component is Component<T>;
|
|
76
82
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ function typesMatch(component, expected, throwOnMismatch) {
|
|
|
13
13
|
if (!expectedTypes.size) {
|
|
14
14
|
throw new Error("Selectors must specify expected type(s)");
|
|
15
15
|
}
|
|
16
|
-
let actualType = ComponentType[component.type];
|
|
16
|
+
let actualType = component.type === "Root" ? "Root" : ComponentType[component.type];
|
|
17
17
|
if (actualType === "Button") {
|
|
18
18
|
if ("url" in component)
|
|
19
19
|
actualType += ":URL";
|
|
@@ -51,6 +51,8 @@ function find(query, components) {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
function findParent(child, components) {
|
|
54
|
+
if (components.includes(child))
|
|
55
|
+
return components;
|
|
54
56
|
for (const component of components) {
|
|
55
57
|
if ("components" in component) {
|
|
56
58
|
if (component.components.includes(child))
|
|
@@ -76,10 +78,15 @@ export default function abseil(components) {
|
|
|
76
78
|
},
|
|
77
79
|
parent(t) {
|
|
78
80
|
const parentComponent = findParent(component, components);
|
|
79
|
-
if (
|
|
81
|
+
if (Array.isArray(parentComponent)) {
|
|
82
|
+
typesMatch({ type: "Root" }, t, true);
|
|
83
|
+
return { value: { components } };
|
|
84
|
+
}
|
|
85
|
+
if (!parentComponent) {
|
|
80
86
|
throw new Error("This node does not have a parent");
|
|
87
|
+
}
|
|
81
88
|
const parentParent = findParent(parentComponent, components);
|
|
82
|
-
return createTraverser(parentComponent, t, traverser, parentParent && "components" in parentParent ? parentParent.components :
|
|
89
|
+
return createTraverser(parentComponent, t, traverser, parentParent && "components" in parentParent ? parentParent.components : parentParent);
|
|
83
90
|
},
|
|
84
91
|
};
|
|
85
92
|
if (previous)
|
|
@@ -139,7 +146,12 @@ export default function abseil(components) {
|
|
|
139
146
|
* @important This may cause issues when you try to navigate {@link abseil} instances you've previously created
|
|
140
147
|
*/
|
|
141
148
|
export function removeNode(node) {
|
|
142
|
-
const { components } = node.parent([
|
|
149
|
+
const { components } = node.parent([
|
|
150
|
+
"ActionRow",
|
|
151
|
+
"Container",
|
|
152
|
+
"Root",
|
|
153
|
+
"Section",
|
|
154
|
+
]).value;
|
|
143
155
|
components === null || components === void 0 ? void 0 : components.splice(components.indexOf(node.value), 1);
|
|
144
156
|
for (const key of Object.keys(node)) {
|
|
145
157
|
if (key === "previous" || key === "last")
|
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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"}
|