Skip to content

Commit 3fe8c27

Browse files
authored
Export TypeScript type definitions to local folder (#3418)
1 parent 1dd256b commit 3fe8c27

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+1332
-79
lines changed

.github/workflows/rituals.yaml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,16 @@ jobs:
129129
tree src
130130
yarn install --immutable && yarn build
131131
git add ./src && git commit -m 'yarn lint (GitHub Actions)' || echo "No yarn lint changes to commit"
132+
git add ./src_d && git commit -m 'yarn tsc (GitHub Actions)' || echo "No type definition changes to commit"
132133
git add ../inst && git commit -m 'yarn build (GitHub Actions)' || echo "No yarn build changes to commit"
133-
134-
- name: Check JS build is latest
135-
run: |
136-
./tools/checkJSCurrent.sh
137-
134+
if [ -n "$(git status --porcelain)" ]
135+
then
136+
git status --porcelain
137+
>&2 echo "The above files changed when we built the JavaScript assets."
138+
exit 1
139+
else
140+
echo "No difference detected; TypeScript build is current."
141+
fi
138142
139143
- name: Git Push (PR)
140144
uses: r-lib/actions/pr-push@master

srcts/package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
{
2+
"name": "@types/shiny",
23
"private": true,
3-
"main": "src/index.ts",
4+
"version": "1.6.0",
5+
"main": "",
6+
"types": "src_d/shiny/index.d.ts",
47
"engines": {
58
"node": ">= 14",
69
"yarn": ">= 1.22"
@@ -64,7 +67,7 @@
6467
"test": "jest --coverage",
6568
"test_phantom": "echo '\n\t!! Must manually stop phantomjs test !!\n\n' && yarn bundle_shiny && phantomjs --debug=yes ../inst/www/shared/shiny.js",
6669
"lint": "eslint --fix --ext .ts src",
67-
"typescript-check": "tsc -p tsconfig.json --noEmit",
70+
"typescript-check": "tsc -p tsconfig.json",
6871
"type-check": "type-coverage -p tsconfig.json --detail --at-least 85",
6972
"import-check": "madge --circular --extensions ts src",
7073
"checks": "yarn run lint && yarn run typescript-check && yarn run type-check && yarn run import-check"

srcts/src_d/bindings/index.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { InputBinding } from "./input";
2+
import { OutputBinding } from "./output";
3+
export { InputBinding, OutputBinding };
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { RatePolicyModes } from "../../inputPolicies/inputRateDecorator";
2+
import { bindScope } from "../../shiny/bind";
3+
import type { NumberReceiveMessageData } from "./number";
4+
import type { RadioReceiveMessageData } from "./radio";
5+
import type { SelectInputReceiveMessageData } from "./selectInput";
6+
import type { SliderReceiveMessageData } from "./slider";
7+
import type { TabInputReceiveMessageData } from "./tabinput";
8+
import type { TextReceiveMessageData } from "./text";
9+
import type { ActionButtonReceiveMessageData } from "./actionbutton";
10+
import type { CheckboxGroupReceiveMessageData } from "./checkboxgroup";
11+
import type { DateReceiveMessageData } from "./date";
12+
import type { CheckboxReceiveMessageData } from "./checkbox";
13+
import type { DateRangeReceiveMessageData } from "./daterange";
14+
declare type receiveMessageDataType = NumberReceiveMessageData | RadioReceiveMessageData | SelectInputReceiveMessageData | SliderReceiveMessageData | TabInputReceiveMessageData | TextReceiveMessageData | ActionButtonReceiveMessageData | CheckboxReceiveMessageData | CheckboxGroupReceiveMessageData | DateReceiveMessageData | DateRangeReceiveMessageData;
15+
declare class InputBinding {
16+
name: string;
17+
find(scope: bindScope): JQuery<HTMLElement>;
18+
getId(el: HTMLElement): string;
19+
getType(el: HTMLElement): string | false;
20+
getValue(el: HTMLElement): any;
21+
subscribe(el: HTMLElement, callback: (value: boolean) => void): void;
22+
unsubscribe(el: HTMLElement): void;
23+
receiveMessage(el: HTMLElement, data: receiveMessageDataType): void;
24+
getState(el: HTMLElement): any;
25+
getRatePolicy(el: HTMLElement): {
26+
policy: RatePolicyModes;
27+
delay: number;
28+
} | null;
29+
initialize(el: HTMLElement): void;
30+
dispose(el: HTMLElement): void;
31+
}
32+
export { InputBinding };
33+
export type { receiveMessageDataType };
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { InputBinding } from "./InputBinding";
2+
declare type ActionButtonReceiveMessageData = {
3+
label?: string;
4+
icon?: string;
5+
};
6+
declare class ActionButtonInputBinding extends InputBinding {
7+
find(scope: HTMLElement): JQuery<HTMLElement>;
8+
getValue(el: HTMLElement): number;
9+
setValue(el: HTMLElement, value: number): void;
10+
getType(el: HTMLElement): string;
11+
subscribe(el: HTMLElement, callback: (x: boolean) => void): void;
12+
getState(el: HTMLElement): {
13+
value: number;
14+
};
15+
receiveMessage(el: HTMLElement, data: ActionButtonReceiveMessageData): void;
16+
unsubscribe(el: HTMLElement): void;
17+
}
18+
export { ActionButtonInputBinding };
19+
export type { ActionButtonReceiveMessageData };
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { InputBinding } from "./InputBinding";
2+
declare type CheckedHTMLElement = HTMLInputElement;
3+
declare type CheckboxReceiveMessageData = {
4+
value?: any;
5+
label?: string;
6+
};
7+
declare class CheckboxInputBinding extends InputBinding {
8+
find(scope: HTMLElement): JQuery<HTMLElement>;
9+
getValue(el: CheckedHTMLElement): any;
10+
setValue(el: CheckedHTMLElement, value: boolean): void;
11+
subscribe(el: HTMLElement, callback: (x: boolean) => void): void;
12+
unsubscribe(el: HTMLElement): void;
13+
getState(el: CheckedHTMLElement): {
14+
label: string;
15+
value: any;
16+
};
17+
receiveMessage(el: CheckedHTMLElement, data: CheckboxReceiveMessageData): void;
18+
}
19+
export { CheckboxInputBinding };
20+
export type { CheckedHTMLElement, CheckboxReceiveMessageData };
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { InputBinding } from "./InputBinding";
2+
import { CheckedHTMLElement } from "./checkbox";
3+
declare type CheckboxGroupHTMLElement = CheckedHTMLElement;
4+
declare type ValueLabelObject = {
5+
value: any;
6+
label: string;
7+
};
8+
declare type CheckboxGroupReceiveMessageData = {
9+
options?: any;
10+
value?: any;
11+
label: string;
12+
};
13+
declare class CheckboxGroupInputBinding extends InputBinding {
14+
find(scope: HTMLElement): JQuery<HTMLElement>;
15+
getValue(el: CheckboxGroupHTMLElement): Array<CheckboxGroupHTMLElement>;
16+
setValue(el: HTMLElement, value: Array<string> | string): void;
17+
getState(el: CheckboxGroupHTMLElement): {
18+
label: string;
19+
value: any;
20+
options: Array<ValueLabelObject>;
21+
};
22+
receiveMessage(el: CheckboxGroupHTMLElement, data: CheckboxGroupReceiveMessageData): void;
23+
subscribe(el: CheckboxGroupHTMLElement, callback: (x: boolean) => void): void;
24+
unsubscribe(el: CheckboxGroupHTMLElement): void;
25+
_getLabelNode(el: CheckboxGroupHTMLElement): JQuery<HTMLElement>;
26+
_getLabel(obj: HTMLElement): string | null;
27+
_setLabel(obj: HTMLElement, value: string): null;
28+
}
29+
export { CheckboxGroupInputBinding };
30+
export type { CheckboxGroupReceiveMessageData };
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/// <reference types="bootstrap-datepicker" />
2+
import { InputBinding } from "./InputBinding";
3+
declare global {
4+
interface JQuery {
5+
bsDatepicker(methodName: string): any;
6+
bsDatepicker(methodName: string, params: any): any;
7+
}
8+
}
9+
declare type DateReceiveMessageData = {
10+
label: string;
11+
min?: Date | null;
12+
max?: Date | null;
13+
value?: Date | null;
14+
};
15+
declare class DateInputBindingBase extends InputBinding {
16+
find(scope: HTMLElement): JQuery<HTMLElement>;
17+
getType(el: HTMLElement): string;
18+
subscribe(el: HTMLElement, callback: (x: boolean) => void): void;
19+
unsubscribe(el: HTMLElement): void;
20+
getRatePolicy(): {
21+
policy: "debounce";
22+
delay: 250;
23+
};
24+
setValue(el: HTMLElement, data: unknown): void;
25+
initialize(el: HTMLElement): void;
26+
_getLabelNode(el: HTMLElement): JQuery<HTMLElement>;
27+
_formatToString(format: {
28+
parts: Array<string>;
29+
separators: Array<string>;
30+
}): string;
31+
_setMin(el: HTMLElement, date: Date | undefined | null): void;
32+
_setMax(el: HTMLElement, date: Date): void;
33+
_newDate(date: Date | string | never): Date | void;
34+
_floorDateTime(date: Date): Date;
35+
_dateAsUTC(date: Date): Date;
36+
_UTCDateAsLocal(date: Date): Date;
37+
}
38+
declare class DateInputBinding extends DateInputBindingBase {
39+
getValue(el: HTMLElement): string;
40+
setValue(el: HTMLElement, value: Date): void;
41+
getState(el: HTMLElement): {
42+
label: string;
43+
value: string | null;
44+
valueString: string | number | string[];
45+
min: string | null;
46+
max: string | null;
47+
language: string | null;
48+
weekstart: number;
49+
format: string;
50+
startview: DatepickerViewModes;
51+
};
52+
receiveMessage(el: HTMLElement, data: DateReceiveMessageData): void;
53+
}
54+
export { DateInputBinding, DateInputBindingBase };
55+
export type { DateReceiveMessageData };
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { DateInputBindingBase } from "./date";
2+
declare type DateRangeReceiveMessageData = {
3+
label: string;
4+
min?: Date;
5+
max?: Date;
6+
value?: {
7+
start?: Date;
8+
end?: Date;
9+
};
10+
};
11+
declare class DateRangeInputBinding extends DateInputBindingBase {
12+
find(scope: HTMLElement): JQuery<HTMLElement>;
13+
getValue(el: HTMLElement): [string, string];
14+
setValue(el: HTMLElement, value: {
15+
start?: Date;
16+
end?: Date;
17+
}): void;
18+
getState(el: HTMLElement): {
19+
label: string;
20+
value: [string, string];
21+
valueString: [string, string];
22+
min: Date;
23+
max: Date;
24+
weekstart: string;
25+
format: string;
26+
language: string;
27+
startview: string;
28+
};
29+
receiveMessage(el: HTMLElement, data: DateRangeReceiveMessageData): void;
30+
initialize(el: HTMLElement): void;
31+
subscribe(el: HTMLElement, callback: (x: boolean) => void): void;
32+
unsubscribe(el: HTMLElement): void;
33+
_getLabelNode(el: HTMLElement): JQuery<HTMLElement>;
34+
}
35+
export { DateRangeInputBinding };
36+
export type { DateRangeReceiveMessageData };
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/// <reference types="jquery" />
2+
import { InputBinding } from "./InputBinding";
3+
declare class FileInputBinding extends InputBinding {
4+
find(scope: HTMLElement): JQuery<HTMLElement>;
5+
getId(el: HTMLInputElement): string;
6+
getValue(el: HTMLElement): {
7+
name?: string;
8+
} | null;
9+
setValue(el: HTMLElement, value: void): void;
10+
getType(el: HTMLElement): string;
11+
_zoneOf(el: HTMLElement | JQuery<HTMLElement>): JQuery<HTMLElement>;
12+
_enableDraghover(el: JQuery<HTMLElement>): JQuery<HTMLElement>;
13+
_disableDraghover(el: JQuery<HTMLElement>): JQuery<HTMLElement>;
14+
_enableDocumentEvents(): void;
15+
_disableDocumentEvents(): void;
16+
_canSetFiles(fileList: FileList): boolean;
17+
_handleDrop(e: JQuery.DragEventBase, el: HTMLInputElement): void;
18+
subscribe(el: HTMLInputElement, callback: (x: boolean) => void): void;
19+
unsubscribe(el: HTMLElement): void;
20+
}
21+
export { FileInputBinding };

0 commit comments

Comments
 (0)