Skip to content

Commit 94d8c59

Browse files
committed
fix(-selector-builder): fetch namespace members and comments from docs
1 parent 15d033f commit 94d8c59

File tree

2 files changed

+54
-16
lines changed

2 files changed

+54
-16
lines changed

scripts/selector-declaration-builder.js

+46-1
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,19 @@ const {
55
dtsObjectTypeAlias,
66
convertTreeToString
77
} = docworksDts.dtsGenerator;
8+
const { convertOperationToFunction } = docworksDts.docworksToDtsConverters;
89

910
const QUERYABLE_TYPE = "TypeNameToSdkType";
1011
const $W = "$w";
12+
const $W_MEMBER_KEY = "// $W_NAMESPACE_MEMBERS";
13+
14+
function find$wService(services) {
15+
return services.find(
16+
service =>
17+
service.name === $W &&
18+
!Object.prototype.hasOwnProperty.call(service, "memberOf")
19+
);
20+
}
1121

1222
function getQueryableObjectType(services) {
1323
const isQueryableService = service =>
@@ -20,10 +30,45 @@ function getQueryableObjectType(services) {
2030
return dtsObjectTypeAlias(QUERYABLE_TYPE, properties);
2131
}
2232

33+
function extract$wComments(services) {
34+
const $wService = find$wService(services);
35+
const $wOperation = $wService.operations.find(
36+
operation => operation.name === $W
37+
);
38+
const [$w$wMembersComment] = $wService.operations
39+
.filter(o => o.name === $W)
40+
.map(operation => operation.docs.summary);
41+
return {
42+
$W_GLOBAL_DECLARATION_COMMENT: $wOperation.docs.summary,
43+
$W_NAMESPACE_COMMENT: $wService.docs.summary,
44+
$W_$W_DECLARATION_COMMENT: $w$wMembersComment
45+
};
46+
}
47+
48+
function extract$wMembers(services) {
49+
const $wService = find$wService(services);
50+
const $wMembersOperations = $wService.operations
51+
.filter(o => o.name !== $W)
52+
.map(operation => {
53+
return convertOperationToFunction($wService, operation, {
54+
documentationGenerator: ({ summary }) => summary
55+
});
56+
});
57+
return convertTreeToString($wMembersOperations);
58+
}
59+
2360
function $wDeclarationBuilder(services) {
61+
const $wComments = extract$wComments(services);
62+
const $wMembers = extract$wMembers(services);
2463
const queryableType = getQueryableObjectType(services);
2564

26-
const page$w = fs.readFileSync("./src_types/pages/$w.d.ts", null, "utf-8");
65+
let page$w = fs.readFileSync("./src_types/pages/$w.d.ts", "utf-8");
66+
page$w = page$w.replace($W_MEMBER_KEY, $wMembers);
67+
page$w = Object.keys($wComments).reduce(
68+
(dts, commnetKey) => dts.replace(commnetKey, $wComments[commnetKey]),
69+
page$w
70+
);
71+
2772
return [convertTreeToString({ queryableType }), page$w].join("\n");
2873
}
2974

src_types/pages/$w.d.ts

+8-15
Original file line numberDiff line numberDiff line change
@@ -15,42 +15,35 @@ type VaildSelectorsChars = WixElementSelector | LegalChars
1515

1616
type OnlyVaildSelectorsChars<S> =
1717
S extends ""
18-
? any
18+
? unknown
1919
: S extends `${VaildSelectorsChars}${infer Tail}`
2020
? OnlyVaildSelectorsChars<Tail>
2121
: never
2222

2323
type HasComma<S> =
2424
S extends `${CommaChar}${infer Tail}`
2525
? unknown
26-
: S extends `${VaildSelectorsChars}${infer Tail2}`
27-
? HasComma<Tail2>
26+
: S extends `${VaildSelectorsChars}${infer Tail}`
27+
? HasComma<Tail>
2828
: never
29+
2930
type MultiSelector<S> = S & OnlyVaildSelectorsChars<S> & HasComma<S>
3031
/**
31-
* Selects and returns elements from a page.
32+
* $W_GLOBAL_DECLARATION_COMMENT
3233
*/
3334
declare function $w<T extends WixElementSelector, S extends string>(selector: T | MultiSelector<S>):
3435
S extends keyof WixElements
3536
? WixElements[S]
3637
: any
3738
/**
38-
* The `$w` namespace contains everything you need in order to work
39-
* with your site's components.
39+
* $W_NAMESPACE_COMMENT
4040
*/
4141
declare namespace $w {
42-
/**
43-
* Gets a selector function for a specific context.
44-
*/
45-
function at(context: $w.Event.EventContext): $w.$w;
4642

47-
/**
48-
* Sets the function that runs when all the page elements have finished loading.
49-
*/
50-
function onReady(initFunction: $w.ReadyHandler): void;
43+
// $W_NAMESPACE_MEMBERS
5144

5245
/**
53-
* Selects and returns elements from a page.
46+
* $W_$W_DECLARATION_COMMENT
5447
*/
5548
type $w = <T extends WixElementSelector, S extends string>(selector: T | MultiSelector<S>) =>
5649
S extends keyof WixElements

0 commit comments

Comments
 (0)