mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-08-12 04:50:18 +00:00
@@ -1,8 +1,12 @@
|
||||
import * as angular from "angular";
|
||||
import {ClipboardService} from "angular-clipboard";
|
||||
|
||||
interface TestScope extends ng.IScope {
|
||||
[index: string]: any;
|
||||
}
|
||||
|
||||
const app = angular.module('testModule', ['angular-clipboard']);
|
||||
app.controller('TestController', ($scope: ng.IScope, clipboard: ClipboardService) => {
|
||||
app.controller('TestController', ($scope: TestScope, clipboard: ClipboardService) => {
|
||||
$scope['testCopy'] = () => {
|
||||
if (clipboard.supported) {
|
||||
clipboard.copyText('hiiiiiii');
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import * as angular from 'angular';
|
||||
|
||||
|
||||
interface TestScope extends angular.IScope {
|
||||
[index: string]: any;
|
||||
}
|
||||
|
||||
angular
|
||||
.module('angular-locker-tests', ['angular-locker'])
|
||||
.config(['lockerProvider', function config(lockerProvider: angular.locker.ILockerProvider) {
|
||||
@@ -13,7 +18,7 @@ angular
|
||||
|
||||
lockerProvider.defaults(lockerSettings);
|
||||
}])
|
||||
.controller('LockerController', ['$scope', 'locker', function ($scope: angular.IScope, locker: angular.locker.ILockerService) {
|
||||
.controller('LockerController', ['$scope', 'locker', function ($scope: TestScope, locker: angular.locker.ILockerService) {
|
||||
locker.put('someKey', 'someVal');
|
||||
|
||||
// put an item into session storage
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
const myApp = angular.module('testModule', ['ngMaterial']);
|
||||
|
||||
interface TestScope extends ng.IScope {
|
||||
[index: string]: any;
|
||||
}
|
||||
|
||||
myApp.config((
|
||||
$mdThemingProvider: ng.material.IThemingProvider,
|
||||
$mdIconProvider: ng.material.IIconProvider,
|
||||
@@ -50,7 +54,7 @@ myApp.config((
|
||||
});
|
||||
});
|
||||
|
||||
myApp.controller('BottomSheetController', ($scope: ng.IScope, $mdBottomSheet: ng.material.IBottomSheetService, $q: ng.IQService) => {
|
||||
myApp.controller('BottomSheetController', ($scope: TestScope, $mdBottomSheet: ng.material.IBottomSheetService, $q: ng.IQService) => {
|
||||
$scope['openBottomSheet'] = () => {
|
||||
$mdBottomSheet.show({
|
||||
template: '<md-bottom-sheet>Hello!</md-bottom-sheet>',
|
||||
@@ -84,7 +88,7 @@ myApp.controller('BottomSheetController', ($scope: ng.IScope, $mdBottomSheet: ng
|
||||
$scope['cancelBottomSheet'] = $mdBottomSheet.cancel.bind($mdBottomSheet, 'cancel');
|
||||
});
|
||||
|
||||
myApp.controller('ColorController', ($scope: ng.IScope, $mdColor: ng.material.IColorService) => {
|
||||
myApp.controller('ColorController', ($scope: TestScope, $mdColor: ng.material.IColorService) => {
|
||||
const colorExpression: ng.material.IColorExpression = { color: '#FFFFFF' };
|
||||
const element: Element = new Element();
|
||||
|
||||
@@ -99,7 +103,7 @@ myApp.controller('ColorController', ($scope: ng.IScope, $mdColor: ng.material.IC
|
||||
};
|
||||
});
|
||||
|
||||
myApp.controller('DialogController', ($scope: ng.IScope, $mdDialog: ng.material.IDialogService, $q: ng.IQService) => {
|
||||
myApp.controller('DialogController', ($scope: TestScope, $mdDialog: ng.material.IDialogService, $q: ng.IQService) => {
|
||||
$scope['openDialog'] = () => {
|
||||
$mdDialog.show({
|
||||
template: '<md-dialog>Hello!</md-dialog>'
|
||||
@@ -201,7 +205,7 @@ class IconDirective implements ng.IDirective {
|
||||
}
|
||||
myApp.directive('icon-directive', ($mdIcon: ng.material.IIcon) => new IconDirective($mdIcon));
|
||||
|
||||
myApp.controller('MediaController', ($scope: ng.IScope, $mdMedia: ng.material.IMedia) => {
|
||||
myApp.controller('MediaController', ($scope: TestScope, $mdMedia: ng.material.IMedia) => {
|
||||
$scope.$watch(() => $mdMedia('lg'), (big: boolean) => {
|
||||
$scope['bigScreen'] = big;
|
||||
});
|
||||
@@ -210,7 +214,7 @@ myApp.controller('MediaController', ($scope: ng.IScope, $mdMedia: ng.material.IM
|
||||
$scope['anotherCustom'] = $mdMedia('max-width: 300px');
|
||||
});
|
||||
|
||||
myApp.controller('SidenavController', ($scope: ng.IScope, $mdSidenav: ng.material.ISidenavService) => {
|
||||
myApp.controller('SidenavController', ($scope: TestScope, $mdSidenav: ng.material.ISidenavService) => {
|
||||
const componentId = 'left';
|
||||
$scope['toggle'] = () => $mdSidenav(componentId).toggle();
|
||||
$scope['open'] = () => $mdSidenav(componentId).open();
|
||||
@@ -229,7 +233,7 @@ myApp.controller('SidenavController', ($scope: ng.IScope, $mdSidenav: ng.materia
|
||||
$scope['onClose'] = $mdSidenav(componentId).onClose(() => { });
|
||||
});
|
||||
|
||||
myApp.controller('ToastController', ($scope: ng.IScope, $mdToast: ng.material.IToastService, $q: ng.IQService) => {
|
||||
myApp.controller('ToastController', ($scope: TestScope, $mdToast: ng.material.IToastService, $q: ng.IQService) => {
|
||||
$scope['openToast'] = () => {
|
||||
$mdToast.show($mdToast.simple().textContent('Hello!'));
|
||||
$mdToast.updateTextContent('New Content');
|
||||
@@ -260,7 +264,7 @@ myApp.controller('ToastController', ($scope: ng.IScope, $mdToast: ng.material.IT
|
||||
};
|
||||
});
|
||||
|
||||
myApp.controller('PanelController', ($scope: ng.IScope, $mdPanel: ng.material.IPanelService, $q: ng.IQService) => {
|
||||
myApp.controller('PanelController', ($scope: TestScope, $mdPanel: ng.material.IPanelService, $q: ng.IQService) => {
|
||||
$scope['createPanel'] = () => {
|
||||
const config: ng.material.IPanelConfig = {
|
||||
id: 'myPanel',
|
||||
|
||||
@@ -27,6 +27,8 @@ interface CustomScope extends angular.meteor.IScope {
|
||||
removeAll: () => void;
|
||||
removeAuto: (todo: ITodo) => void;
|
||||
toSticky: (todo: ITodo) => void;
|
||||
|
||||
picture: any;
|
||||
}
|
||||
|
||||
var Todos = new Mongo.Collection<ITodo>('todos');
|
||||
|
||||
Vendored
+2
-2
@@ -53,14 +53,14 @@ declare module 'angular' {
|
||||
interface IActionHash {
|
||||
[action: string]: IActionDescriptor;
|
||||
}
|
||||
|
||||
|
||||
interface IResourceResponse {
|
||||
config: any;
|
||||
data: any;
|
||||
headers: any;
|
||||
resource: any;
|
||||
status: number;
|
||||
statusText: string
|
||||
statusText: string;
|
||||
}
|
||||
|
||||
interface IResourceInterceptor {
|
||||
|
||||
@@ -23,8 +23,12 @@ namespace application {
|
||||
|
||||
myApp.factory('DatasourceTest', factory);
|
||||
|
||||
interface TestScope extends ng.IScope {
|
||||
[index: string]: any;
|
||||
}
|
||||
|
||||
// demo/examples/adapter
|
||||
myApp.controller('mainController', ['$scope', 'DatasourceTest', function($scope: ng.IScope, datasource: DatasourceTest) {
|
||||
myApp.controller('mainController', ['$scope', 'DatasourceTest', function($scope: TestScope, datasource: DatasourceTest) {
|
||||
var firstListAdapter: ng.ui.IScrollAdapter, secondListAdapter: ng.ui.IScrollAdapter;
|
||||
$scope['datasource'] = datasource;
|
||||
|
||||
|
||||
Vendored
-2
@@ -451,8 +451,6 @@ declare namespace angular {
|
||||
* see https://docs.angularjs.org/api/ng/type/$rootScope.Scope and https://docs.angularjs.org/api/ng/service/$rootScope
|
||||
*/
|
||||
interface IRootScopeService {
|
||||
[index: string]: any;
|
||||
|
||||
$apply(): any;
|
||||
$apply(exp: string): any;
|
||||
$apply(exp: (scope: IScope) => any): any;
|
||||
|
||||
@@ -22,43 +22,44 @@ var snsEvtRec: AWSLambda.SNSEventRecord;
|
||||
var snsMsg: AWSLambda.SNSMessage;
|
||||
var snsMsgAttr: AWSLambda.SNSMessageAttribute;
|
||||
var snsMsgAttrs: AWSLambda.SNSMessageAttributes;
|
||||
var S3CreateEvent: AWSLambda.S3CreateEvent = {
|
||||
Records: [{
|
||||
eventVersion: 'string',
|
||||
eventSource: 'string',
|
||||
awsRegion: 'string',
|
||||
eventTime: 'string',
|
||||
eventName: 'string',
|
||||
userIdentity: {
|
||||
principalId: 'string'
|
||||
},
|
||||
requestParameters: {
|
||||
sourceIPAddress: 'string'
|
||||
},
|
||||
responseElements: {
|
||||
'x-amz-request-id': 'string',
|
||||
'x-amz-id-2': 'string'
|
||||
},
|
||||
s3: {
|
||||
s3SchemaVersion: 'string',
|
||||
configurationId: 'string',
|
||||
bucket: {
|
||||
name: 'string',
|
||||
ownerIdentity: {
|
||||
principalId: 'string'
|
||||
},
|
||||
arn: 'string'
|
||||
var S3EvtRec: AWSLambda.S3EventRecord = {
|
||||
eventVersion: '2.0',
|
||||
eventSource: 'aws:s3',
|
||||
awsRegion: 'us-east-1',
|
||||
eventTime: '1970-01-01T00:00:00.000Z',
|
||||
eventName: 'ObjectCreated:Put',
|
||||
userIdentity: {
|
||||
principalId: 'AIDAJDPLRKLG7UEXAMPLE'
|
||||
},
|
||||
requestParameters:{
|
||||
sourceIPAddress: '127.0.0.1'
|
||||
},
|
||||
responseElements: {
|
||||
'x-amz-request-id': 'C3D13FE58DE4C810',
|
||||
'x-amz-id-2': 'FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD'
|
||||
},
|
||||
s3: {
|
||||
s3SchemaVersion: '1.0',
|
||||
configurationId: 'testConfigRule',
|
||||
bucket: {
|
||||
name: 'mybucket',
|
||||
ownerIdentity: {
|
||||
principalId: 'A3NL1KOZZKExample'
|
||||
},
|
||||
object: {
|
||||
key: 'string',
|
||||
size: 1,
|
||||
eTag: 'string',
|
||||
versionId: 'string',
|
||||
sequencer: 'string'
|
||||
}
|
||||
arn: 'arn:aws:s3:::mybucket'
|
||||
},
|
||||
object: {
|
||||
key: 'HappyFace.jpg',
|
||||
size: 1024,
|
||||
eTag: 'd41d8cd98f00b204e9800998ecf8427e',
|
||||
versionId: '096fKKXTRTtl3on89fVO.nfljtsv6qko',
|
||||
sequencer: '0055AED6DCD90281E5'
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
var S3CreateEvent: AWSLambda.S3CreateEvent = {
|
||||
Records: [S3EvtRec]
|
||||
};
|
||||
var cognitoUserPoolEvent: AWSLambda.CognitoUserPoolEvent;
|
||||
var cloudformationCustomResourceEvent: AWSLambda.CloudFormationCustomResourceEvent;
|
||||
|
||||
Vendored
+36
-35
@@ -1,6 +1,6 @@
|
||||
// Type definitions for AWS Lambda
|
||||
// Project: http://docs.aws.amazon.com/lambda
|
||||
// Definitions by: James Darbyshire <https://github.com/darbio/aws-lambda-typescript>, Michael Skarum <https://github.com/skarum>, Stef Heyenrath <https://github.com/StefH/DefinitelyTyped>, Toby Hede <https://github.com/tobyhede>, Rich Buggy <https://github.com/buggy>, Yoriki Yamaguchi <https://github.com/y13i>
|
||||
// Definitions by: James Darbyshire <https://github.com/darbio/aws-lambda-typescript>, Michael Skarum <https://github.com/skarum>, Stef Heyenrath <https://github.com/StefH/DefinitelyTyped>, Toby Hede <https://github.com/tobyhede>, Rich Buggy <https://github.com/buggy>, Yoriki Yamaguchi <https://github.com/y13i>, wwwy3y3 <https://github.com/wwwy3y3>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
// API Gateway "event"
|
||||
@@ -85,43 +85,44 @@ interface SNSEvent {
|
||||
* S3Create event
|
||||
* https://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html
|
||||
*/
|
||||
interface S3CreateEvent {
|
||||
Records: [{
|
||||
eventVersion: string;
|
||||
eventSource: string;
|
||||
awsRegion: string
|
||||
eventTime: string;
|
||||
eventName: string;
|
||||
userIdentity: {
|
||||
principalId: string;
|
||||
},
|
||||
requestParameters: {
|
||||
sourceIPAddress: string;
|
||||
},
|
||||
responseElements: {
|
||||
'x-amz-request-id': string;
|
||||
'x-amz-id-2': string;
|
||||
},
|
||||
s3: {
|
||||
s3SchemaVersion: string;
|
||||
configurationId: string;
|
||||
bucket: {
|
||||
name: string;
|
||||
ownerIdentity: {
|
||||
principalId: string;
|
||||
},
|
||||
arn: string;
|
||||
interface S3EventRecord {
|
||||
eventVersion: string;
|
||||
eventSource: string;
|
||||
awsRegion: string
|
||||
eventTime: string;
|
||||
eventName: string;
|
||||
userIdentity: {
|
||||
principalId: string;
|
||||
},
|
||||
requestParameters: {
|
||||
sourceIPAddress: string;
|
||||
},
|
||||
responseElements: {
|
||||
'x-amz-request-id': string;
|
||||
'x-amz-id-2': string;
|
||||
},
|
||||
s3: {
|
||||
s3SchemaVersion: string;
|
||||
configurationId: string;
|
||||
bucket: {
|
||||
name: string;
|
||||
ownerIdentity: {
|
||||
principalId: string;
|
||||
},
|
||||
object: {
|
||||
key: string;
|
||||
size: number;
|
||||
eTag: string;
|
||||
versionId: string;
|
||||
sequencer: string;
|
||||
}
|
||||
arn: string;
|
||||
},
|
||||
object: {
|
||||
key: string;
|
||||
size: number;
|
||||
eTag: string;
|
||||
versionId: string;
|
||||
sequencer: string;
|
||||
}
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
interface S3CreateEvent {
|
||||
Records: Array<S3EventRecord>;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -29,3 +29,30 @@ t.assertBinaryExpression(ast);
|
||||
t.assertBinaryExpression(ast, { operator: "*" });
|
||||
|
||||
var exp: t.Expression = t.nullLiteral();
|
||||
|
||||
// React examples:
|
||||
|
||||
// https://github.com/babel/babel/blob/4e50b2d9d9c376cee7a2cbf56553fe5b982ea53c/packages/babel-plugin-transform-react-inline-elements/src/index.js#L61
|
||||
traverse(ast, {
|
||||
JSXElement(path, file) {
|
||||
const { node } = path;
|
||||
const open = node.openingElement;
|
||||
|
||||
// init
|
||||
const type = open.name;
|
||||
|
||||
let newType: t.StringLiteral;
|
||||
if (t.isJSXIdentifier(type) && t.react.isCompatTag(type.name)) {
|
||||
newType = t.stringLiteral(type.name);
|
||||
}
|
||||
|
||||
const args: any[] = [];
|
||||
if (node.children.length) {
|
||||
const children = t.react.buildChildren(node);
|
||||
args.push(
|
||||
t.unaryExpression("void", t.numericLiteral(0), true),
|
||||
...children,
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Vendored
+11
-2
@@ -1,6 +1,8 @@
|
||||
// Type definitions for babel-types v6.7
|
||||
// Type definitions for babel-types v6.25
|
||||
// Project: https://github.com/babel/babel/tree/master/packages/babel-types
|
||||
// Definitions by: Troy Gerwien <https://github.com/yortus>, Sam Baxter <https://github.com/baxtersa>
|
||||
// Definitions by: Troy Gerwien <https://github.com/yortus>
|
||||
// Sam Baxter <https://github.com/baxtersa>
|
||||
// Marvin Hagemeister <https://github.com/marvinhagemeister>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
export interface Comment {
|
||||
@@ -1226,6 +1228,13 @@ export function isUser(node: Object, opts?: Object): boolean;
|
||||
export function isGenerated(node: Object, opts?: Object): boolean;
|
||||
export function isPure(node: Object, opts?: Object): boolean;
|
||||
|
||||
// React specific
|
||||
interface ReactHelpers {
|
||||
isCompatTag(tagName?: string): boolean;
|
||||
buildChildren(node: Object): Object[];
|
||||
}
|
||||
export const react: ReactHelpers;
|
||||
|
||||
export function assertArrayExpression(node: Object, opts?: Object): void;
|
||||
export function assertAssignmentExpression(node: Object, opts?: Object): void;
|
||||
export function assertBinaryExpression(node: Object, opts?: Object): void;
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
Dms,
|
||||
Vector3d,
|
||||
OsGridRef,
|
||||
LatLonEllipsoidal as LatLon } from 'geodesy';
|
||||
LatLonEllipsoidal as LatLon, LatLonSpherical } from 'geodesy';
|
||||
|
||||
/**
|
||||
* Mgrs
|
||||
@@ -115,3 +115,53 @@ OsGridRef.latLonToOsGrid(latlon);
|
||||
OsGridRef.osGridToLatLon(gridref);
|
||||
OsGridRef.osGridToLatLon(gridref, LatLon.datum.OSGB36);
|
||||
OsGridRef.parse('TG 51409 13177');
|
||||
|
||||
/**
|
||||
* LatLonSpherical
|
||||
*/
|
||||
const point1 = new LatLonSpherical(52.205, 0.119);
|
||||
const point2 = new LatLonSpherical(48.857, 2.351);
|
||||
|
||||
point1.distanceTo(point2); // 404.3 km
|
||||
point1.distanceTo(point2, 6371e3); // 404.3 km
|
||||
point1.bearingTo(point2); // 156.2°
|
||||
point1.finalBearingTo(point2); // 157.9°
|
||||
point1.midpointTo(point2); // 50.5363°N, 001.2746°E
|
||||
point1.intermediatePointTo(point2, 0.25); // 51.3721°N, 000.7073°E
|
||||
point1.destinationPoint(7794, 300.7); // 51.5135°N, 000.0983°W
|
||||
point1.destinationPoint(7794, 300.7, 6371e3); // 51.5135°N, 000.0983°W
|
||||
|
||||
const ctCurrent = new LatLonSpherical(53.2611, -0.7972);
|
||||
const ct1 = new LatLonSpherical(53.3206, -1.7297);
|
||||
const ct2 = new LatLonSpherical(53.1887, 0.1334);
|
||||
ctCurrent.crossTrackDistanceTo(ct1, ct2); // -307.5 m
|
||||
ctCurrent.crossTrackDistanceTo(ct1, ct2, 6371e3); // -307.5 m
|
||||
|
||||
point1.maxLatitude(156);
|
||||
|
||||
const rhumb1 = new LatLonSpherical(51.127, 1.338);
|
||||
const rhumb2 = new LatLonSpherical(50.964, 1.853);
|
||||
rhumb1.rhumbDistanceTo(rhumb2); // 40.31 km
|
||||
rhumb1.rhumbDistanceTo(rhumb2, 6371e3); // 40.31 km
|
||||
rhumb1.rhumbBearingTo(rhumb2); // 116.7°
|
||||
rhumb1.rhumbDestinationPoint(40300, 116.7); // 50.9642°N, 001.8530°E
|
||||
rhumb1.rhumbDestinationPoint(40300, 116.7, 6371e3); // 50.9642°N, 001.8530°E
|
||||
rhumb1.rhumbMidpointTo(rhumb2); // 51.0455°N, 001.5957°E
|
||||
|
||||
const eq1 = new LatLonSpherical(52.205, 0.119);
|
||||
const eq2 = new LatLonSpherical(52.205, 0.119);
|
||||
eq1.equals(eq2); // true
|
||||
|
||||
eq1.toString();
|
||||
eq1.toString('dm');
|
||||
eq1.toString('d', 0);
|
||||
|
||||
// Static functions
|
||||
const brng1 = 108.547;
|
||||
const brng2 = 32.435;
|
||||
LatLonSpherical.intersection(point1, brng1, point2, brng2); // 50.9078°N, 004.5084°E
|
||||
LatLonSpherical.crossingParallels(point1, point2, 30);
|
||||
|
||||
const polygon = [new LatLonSpherical(0, 0), new LatLonSpherical(1, 0), new LatLonSpherical(0, 1)];
|
||||
LatLonSpherical.areaOf(polygon); // 6.18e9 m²
|
||||
LatLonSpherical.areaOf(polygon, 6371e3); // 6.18e9 m²
|
||||
|
||||
Vendored
+24
@@ -1,6 +1,7 @@
|
||||
// Type definitions for geodesy 1.1
|
||||
// Project: https://github.com/chrisveness/geodesy
|
||||
// Definitions by: Denis Carriere <https://github.com/DenisCarriere>
|
||||
// Gilbert Handy <https://github.com/HandyG52>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
export type format = 'd' | 'dm' | 'dms';
|
||||
@@ -147,3 +148,26 @@ export class LatLonEllipsoidal {
|
||||
static datum: Datums;
|
||||
static ellipsoid: Ellipsoids;
|
||||
}
|
||||
|
||||
export class LatLonSpherical {
|
||||
lat: number;
|
||||
lon: number;
|
||||
constructor(lat: number, lon: number)
|
||||
distanceTo(point: LatLonSpherical, radius?: number): number;
|
||||
bearingTo(point: LatLonSpherical): number;
|
||||
finalBearingTo(point: LatLonSpherical): number;
|
||||
midpointTo(point: LatLonSpherical): number;
|
||||
intermediatePointTo(point: LatLonSpherical, fraction: number): LatLonSpherical;
|
||||
destinationPoint(distance: number, bearing: number, radius?: number): LatLonSpherical;
|
||||
static intersection(point1: LatLonSpherical, bearing1: number, point2: LatLonSpherical, bearing2: number): LatLonSpherical;
|
||||
crossTrackDistanceTo(pathStart: LatLonSpherical, pathEnd: LatLonSpherical, radius?: number): number;
|
||||
maxLatitude(bearing: number): number;
|
||||
static crossingParallels(point1: LatLonSpherical, point2: LatLonSpherical, latitude: number): any;
|
||||
rhumbDistanceTo(point: LatLonSpherical, radius?: number): number;
|
||||
rhumbBearingTo(point: LatLonSpherical): number;
|
||||
rhumbDestinationPoint(distance: number, bearing: number, radius?: number): LatLonSpherical;
|
||||
rhumbMidpointTo(point: LatLonSpherical): LatLonSpherical;
|
||||
equals(point: LatLonSpherical): boolean;
|
||||
static areaOf(polygon: LatLonSpherical[], radius?: number): number;
|
||||
toString(format?: string, dp?: number): string;
|
||||
}
|
||||
|
||||
@@ -1,32 +1,37 @@
|
||||
import {IFrameComponent, IFrameOptions, iframeResizer} from "iframe-resizer";
|
||||
import { IFrameComponent, IFrameOptions, iframeResizer } from "iframe-resizer";
|
||||
|
||||
function testOne(): void {
|
||||
let iframe: HTMLIFrameElement = document.createElement('iframe');
|
||||
let options: IFrameOptions = {log: true};
|
||||
let components: IFrameComponent[] = iframeResizer(options, iframe);
|
||||
if (components) {
|
||||
components.forEach(component => console.log(component.iFrameResizer));
|
||||
} else {
|
||||
console.log("No components");
|
||||
}
|
||||
let iframe: HTMLIFrameElement = document.createElement('iframe');
|
||||
let options: IFrameOptions = {log: true};
|
||||
let components: IFrameComponent[] = iframeResizer(options, iframe);
|
||||
if (components) {
|
||||
components.forEach(component => console.log(component.iFrameResizer));
|
||||
} else {
|
||||
console.log("No components");
|
||||
}
|
||||
}
|
||||
|
||||
function testTwo(): void {
|
||||
let iframe: HTMLIFrameElement = document.createElement('iframe');
|
||||
let components: IFrameComponent[] = iframeResizer({
|
||||
initCallback: () => {
|
||||
console.log('Init');
|
||||
},
|
||||
closedCallback: () => {
|
||||
console.log('Closed');
|
||||
}
|
||||
}, iframe);
|
||||
if (components) {
|
||||
components.forEach(component => console.log(component.iFrameResizer));
|
||||
} else {
|
||||
console.log("No components");
|
||||
let iframe: HTMLIFrameElement = document.createElement('iframe');
|
||||
let components: IFrameComponent[] = iframeResizer({
|
||||
initCallback: () => {
|
||||
console.log('Init');
|
||||
},
|
||||
closedCallback: () => {
|
||||
console.log('Closed');
|
||||
}
|
||||
}, iframe);
|
||||
if (components) {
|
||||
components.forEach(component => console.log(component.iFrameResizer));
|
||||
} else {
|
||||
console.log("No components");
|
||||
}
|
||||
}
|
||||
|
||||
function testThree(): void {
|
||||
iframeResizer({}, '.my-iframe');
|
||||
}
|
||||
|
||||
testOne();
|
||||
testTwo();
|
||||
testThree();
|
||||
|
||||
Vendored
+259
-178
@@ -6,191 +6,272 @@
|
||||
// tslint:disable:prefer-method-signature
|
||||
// tslint:disable-next-line:no-single-declare-module
|
||||
declare module 'iframe-resizer' {
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameObject {
|
||||
close(): void;
|
||||
moveToAnchor(anchor: string): void;
|
||||
resize(): void;
|
||||
sendMessage(message: any): void;
|
||||
}
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameObject {
|
||||
close(): void;
|
||||
moveToAnchor(anchor: string): void;
|
||||
resize(): void;
|
||||
sendMessage(message: any, targetOrigin?: string): void;
|
||||
}
|
||||
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameComponent extends HTMLIFrameElement {
|
||||
iFrameResizer: IFrameObject;
|
||||
}
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameComponent extends HTMLIFrameElement {
|
||||
iFrameResizer: IFrameObject;
|
||||
}
|
||||
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameOptions {
|
||||
/**
|
||||
* When enabled changes to the Window size or the DOM will cause the iFrame to resize to the new content size.
|
||||
* Disable if using size method with custom dimensions.
|
||||
*/
|
||||
autoResize?: boolean;
|
||||
/**
|
||||
* Override the body background style in the iFrame.
|
||||
*/
|
||||
bodyBackground?: string;
|
||||
/**
|
||||
* Override the default body margin style in the iFrame. A string can be any valid value for the
|
||||
* CSS margin attribute, for example '8px 3em'. A number value is converted into px.
|
||||
*/
|
||||
bodyMargin?: number;
|
||||
/**
|
||||
* When set to true, only allow incoming messages from the domain listed in the src property of the iFrame tag.
|
||||
* If your iFrame navigates between different domains, ports or protocols; then you will need to
|
||||
* provide an array of URLs or disable this option.
|
||||
*/
|
||||
checkOrigin?: boolean;
|
||||
/**
|
||||
* When enabled in page linking inside the iFrame and from the iFrame to the parent page will be enabled.
|
||||
*/
|
||||
inPageLinks?: boolean;
|
||||
/**
|
||||
* Height calculation method.
|
||||
*/
|
||||
heightCalculationMethod?: string;
|
||||
/**
|
||||
* Set iFrame Id
|
||||
*/
|
||||
id?: string;
|
||||
/**
|
||||
* In browsers that don't support mutationObserver, such as IE10, the library falls back to using
|
||||
* setInterval, to check for changes to the page size.
|
||||
*/
|
||||
interval?: number;
|
||||
/**
|
||||
* Setting the log option to true will make the scripts in both the host page and the iFrame output
|
||||
* everything they do to the JavaScript console so you can see the communication between the two scripts.
|
||||
*/
|
||||
log?: boolean;
|
||||
/**
|
||||
* Set maximum height of iFrame.
|
||||
*/
|
||||
maxHeight?: number;
|
||||
/**
|
||||
* Set maximum width of iFrame.
|
||||
*/
|
||||
maxWidth?: number;
|
||||
/**
|
||||
* Set minimum height of iFrame.
|
||||
*/
|
||||
minHeight?: number;
|
||||
/**
|
||||
* Set minimum width of iFrame.
|
||||
*/
|
||||
minWidth?: number;
|
||||
/**
|
||||
* Listen for resize events from the parent page, or the iFrame. Select the 'child' value if the iFrame
|
||||
* can be resized independently of the browser window. Selecting this value can cause issues with some
|
||||
* height calculation methods on mobile devices.
|
||||
*/
|
||||
resizeFrom?: string;
|
||||
/**
|
||||
* Enable scroll bars in iFrame.
|
||||
*/
|
||||
scrolling?: boolean;
|
||||
/**
|
||||
* Resize iFrame to content height.
|
||||
*/
|
||||
sizeHeight?: boolean;
|
||||
/**
|
||||
* Resize iFrame to content width.
|
||||
*/
|
||||
sizeWidth?: boolean;
|
||||
/**
|
||||
* Set the number of pixels the iFrame content size has to change by, before triggering a resize of the iFrame.
|
||||
*/
|
||||
tolerance?: number;
|
||||
/**
|
||||
* Width calculation method.
|
||||
*/
|
||||
widthCalculationMethod?: string;
|
||||
/**
|
||||
* Called when iFrame is closed via parentIFrame.close() or iframe.iframeResizer.close() methods.
|
||||
*/
|
||||
closedCallback?: (iframeId?: string) => void;
|
||||
/**
|
||||
* Initial setup callback function.
|
||||
*/
|
||||
initCallback?: (iframe?: IFrameComponent) => void;
|
||||
/**
|
||||
* Receive message posted from iFrame with the parentIFrame.sendMessage() method.
|
||||
*/
|
||||
messageCallback?: (data: IFrameMessageData) => void;
|
||||
/**
|
||||
* Function called after iFrame resized. Passes in messageData object containing the iFrame, height, width
|
||||
* and the type of event that triggered the iFrame to resize.
|
||||
*/
|
||||
resizedCallback?: (data: IFrameResizedData) => void;
|
||||
/**
|
||||
* Called before the page is repositioned after a request from the iFrame, due to either an in page link,
|
||||
* or a direct request from either parentIFrame.scrollTo() or parentIFrame.scrollToOffset().
|
||||
* If this callback function returns false, it will stop the library from repositioning the page, so that
|
||||
* you can implement your own animated page scrolling instead.
|
||||
*/
|
||||
scrollCallback?: (data: IFrameScrollData) => boolean;
|
||||
}
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameOptions {
|
||||
/**
|
||||
* When enabled changes to the Window size or the DOM will cause the iFrame to resize to the new content size.
|
||||
* Disable if using size method with custom dimensions.
|
||||
*/
|
||||
autoResize?: boolean;
|
||||
/**
|
||||
* Override the body background style in the iFrame.
|
||||
*/
|
||||
bodyBackground?: string;
|
||||
/**
|
||||
* Override the default body margin style in the iFrame. A string can be any valid value for the
|
||||
* CSS margin attribute, for example '8px 3em'. A number value is converted into px.
|
||||
*/
|
||||
bodyMargin?: number;
|
||||
/**
|
||||
* When set to true, only allow incoming messages from the domain listed in the src property of the iFrame tag.
|
||||
* If your iFrame navigates between different domains, ports or protocols; then you will need to
|
||||
* provide an array of URLs or disable this option.
|
||||
*/
|
||||
checkOrigin?: boolean;
|
||||
/**
|
||||
* When enabled in page linking inside the iFrame and from the iFrame to the parent page will be enabled.
|
||||
*/
|
||||
inPageLinks?: boolean;
|
||||
/**
|
||||
* Height calculation method.
|
||||
*/
|
||||
heightCalculationMethod?: HeightCalculationMethod;
|
||||
/**
|
||||
* Set iFrame Id
|
||||
*/
|
||||
id?: string;
|
||||
/**
|
||||
* In browsers that don't support mutationObserver, such as IE10, the library falls back to using
|
||||
* setInterval, to check for changes to the page size.
|
||||
*/
|
||||
interval?: number;
|
||||
/**
|
||||
* Setting the log option to true will make the scripts in both the host page and the iFrame output
|
||||
* everything they do to the JavaScript console so you can see the communication between the two scripts.
|
||||
*/
|
||||
log?: boolean;
|
||||
/**
|
||||
* Set maximum height of iFrame.
|
||||
*/
|
||||
maxHeight?: number;
|
||||
/**
|
||||
* Set maximum width of iFrame.
|
||||
*/
|
||||
maxWidth?: number;
|
||||
/**
|
||||
* Set minimum height of iFrame.
|
||||
*/
|
||||
minHeight?: number;
|
||||
/**
|
||||
* Set minimum width of iFrame.
|
||||
*/
|
||||
minWidth?: number;
|
||||
/**
|
||||
* Listen for resize events from the parent page, or the iFrame. Select the 'child' value if the iFrame
|
||||
* can be resized independently of the browser window. Selecting this value can cause issues with some
|
||||
* height calculation methods on mobile devices.
|
||||
*/
|
||||
resizeFrom?: 'parent' | 'child';
|
||||
/**
|
||||
* Enable scroll bars in iFrame.
|
||||
*/
|
||||
scrolling?: boolean | 'auto';
|
||||
/**
|
||||
* Resize iFrame to content height.
|
||||
*/
|
||||
sizeHeight?: boolean;
|
||||
/**
|
||||
* Resize iFrame to content width.
|
||||
*/
|
||||
sizeWidth?: boolean;
|
||||
/**
|
||||
* Set the number of pixels the iFrame content size has to change by, before triggering a resize of the iFrame.
|
||||
*/
|
||||
tolerance?: number;
|
||||
/**
|
||||
* Width calculation method.
|
||||
*/
|
||||
widthCalculationMethod?: WidthCalculationMethod;
|
||||
/**
|
||||
* Called when iFrame is closed via parentIFrame.close() or iframe.iframeResizer.close() methods.
|
||||
*/
|
||||
closedCallback?: (iframeId: string) => void;
|
||||
/**
|
||||
* Initial setup callback function.
|
||||
*/
|
||||
initCallback?: (iframe: IFrameComponent) => void;
|
||||
/**
|
||||
* Receive message posted from iFrame with the parentIFrame.sendMessage() method.
|
||||
*/
|
||||
messageCallback?: (data: IFrameMessageData) => void;
|
||||
/**
|
||||
* Function called after iFrame resized. Passes in messageData object containing the iFrame, height, width
|
||||
* and the type of event that triggered the iFrame to resize.
|
||||
*/
|
||||
resizedCallback?: (data: IFrameResizedData) => void;
|
||||
/**
|
||||
* Called before the page is repositioned after a request from the iFrame, due to either an in page link,
|
||||
* or a direct request from either parentIFrame.scrollTo() or parentIFrame.scrollToOffset().
|
||||
* If this callback function returns false, it will stop the library from repositioning the page, so that
|
||||
* you can implement your own animated page scrolling instead.
|
||||
*/
|
||||
scrollCallback?: (data: IFrameScrollData) => boolean;
|
||||
}
|
||||
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFramePageOptions {
|
||||
/**
|
||||
* This option allows you to restrict the domain of the parent page,
|
||||
* to prevent other sites mimicking your parent page.
|
||||
*/
|
||||
targetOrigin?: string;
|
||||
/**
|
||||
* Receive message posted from the parent page with the iframe.iFrameResizer.sendMessage() method.
|
||||
*/
|
||||
messageCallback?: (message: any) => void;
|
||||
/**
|
||||
* This function is called once iFrame-Resizer has been initialized after receiving a call from the parent page.
|
||||
*/
|
||||
readyCallback?: () => void;
|
||||
/**
|
||||
* These option can be used to override the option set in the parent page
|
||||
*/
|
||||
heightCalculationMethod?: string;
|
||||
/**
|
||||
* These option can be used to override the option set in the parent page
|
||||
*/
|
||||
widthCalculationMethod?: string;
|
||||
}
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFramePageOptions {
|
||||
/**
|
||||
* This option allows you to restrict the domain of the parent page,
|
||||
* to prevent other sites mimicking your parent page.
|
||||
*/
|
||||
targetOrigin?: string;
|
||||
/**
|
||||
* Receive message posted from the parent page with the iframe.iFrameResizer.sendMessage() method.
|
||||
*/
|
||||
messageCallback?: (message: any) => void;
|
||||
/**
|
||||
* This function is called once iFrame-Resizer has been initialized after receiving a call from the parent page.
|
||||
*/
|
||||
readyCallback?: () => void;
|
||||
/**
|
||||
* These option can be used to override the option set in the parent page
|
||||
*/
|
||||
heightCalculationMethod?: HeightCalculationMethod | (() => number);
|
||||
/**
|
||||
* These option can be used to override the option set in the parent page
|
||||
*/
|
||||
widthCalculationMethod?: WidthCalculationMethod | (() => number);
|
||||
}
|
||||
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFramePage {
|
||||
autoResize(resize?: boolean): boolean;
|
||||
close(): void;
|
||||
getId(): string;
|
||||
getPageInfo(callback: (data: any) => void | false): void;
|
||||
scrollTo(x: number, y: number): void;
|
||||
scrollToOffset(x: number, y: number): void;
|
||||
sendMessage(message: any, targetOrigin: string): void;
|
||||
setHeightCalculationMethod(method: string): void;
|
||||
setWidthCalculationMethod(method: string): void;
|
||||
setTargetOrigin(targetOrigin: string): void;
|
||||
size(customHeight: string, customWidth: string): void;
|
||||
}
|
||||
type HeightCalculationMethod = 'bodyOffset' | 'bodyScroll' | 'documentElementOffset' | 'documentElementScroll' |
|
||||
'max' | 'min' | 'grow' | 'lowestElement' | 'taggedElement';
|
||||
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameResizedData {
|
||||
iframe: IFrameComponent;
|
||||
height: number;
|
||||
width: number;
|
||||
type: string;
|
||||
}
|
||||
type WidthCalculationMethod = 'bodyOffset' | 'bodyScroll' | 'documentElementOffset' | 'documentElementScroll' |
|
||||
'max' | 'min' | 'scroll' | 'rightMostElement' | 'taggedElement';
|
||||
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameMessageData {
|
||||
iframe: IFrameComponent;
|
||||
message: string;
|
||||
}
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFramePage {
|
||||
/**
|
||||
* Turn autoResizing of the iFrame on and off. Returns bool of current state.
|
||||
*/
|
||||
autoResize(resize?: boolean): boolean;
|
||||
/**
|
||||
* Remove the iFrame from the parent page.
|
||||
*/
|
||||
close(): void;
|
||||
/**
|
||||
* Returns the ID of the iFrame that the page is contained in.
|
||||
*/
|
||||
getId(): string;
|
||||
/**
|
||||
* Ask the containing page for its positioning coordinates.
|
||||
*
|
||||
* Your callback function will be recalled when the parent page is scrolled or resized.
|
||||
*
|
||||
* Pass false to disable the callback.
|
||||
*/
|
||||
getPageInfo(callback: ((data: PageInfo) => void) | false): void;
|
||||
/**
|
||||
* Scroll the parent page to the coordinates x and y
|
||||
*/
|
||||
scrollTo(x: number, y: number): void;
|
||||
/**
|
||||
* Scroll the parent page to the coordinates x and y relative to the position of the iFrame.
|
||||
*/
|
||||
scrollToOffset(x: number, y: number): void;
|
||||
/**
|
||||
* Send data to the containing page, message can be any data type that can be serialized into JSON. The `targetOrigin`
|
||||
* option is used to restrict where the message is sent to; to stop an attacker mimicking your parent page.
|
||||
* See the MDN documentation on postMessage for more details.
|
||||
*/
|
||||
sendMessage(message: any, targetOrigin?: string): void;
|
||||
/**
|
||||
* Change the method use to workout the height of the iFrame.
|
||||
*/
|
||||
setHeightCalculationMethod(method: HeightCalculationMethod): void;
|
||||
/**
|
||||
* Change the method use to workout the width of the iFrame.
|
||||
*/
|
||||
setWidthCalculationMethod(method: WidthCalculationMethod): void;
|
||||
/**
|
||||
* Set default target origin.
|
||||
*/
|
||||
setTargetOrigin(targetOrigin: string): void;
|
||||
/**
|
||||
* Manually force iFrame to resize. To use passed arguments you need first to disable the `autoResize` option to
|
||||
* prevent auto resizing and enable the `sizeWidth` option if you wish to set the width.
|
||||
*/
|
||||
size(customHeight?: string, customWidth?: string): void;
|
||||
}
|
||||
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameScrollData {
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
interface PageInfo {
|
||||
/**
|
||||
* The height of the iframe in pixels
|
||||
*/
|
||||
iframeHeight: number;
|
||||
/**
|
||||
* The width of the iframe in pixels
|
||||
*/
|
||||
iframeWidth: number;
|
||||
/**
|
||||
* The height of the viewport in pixels
|
||||
*/
|
||||
clientHeight: number;
|
||||
/**
|
||||
* The width of the viewport in pixels
|
||||
*/
|
||||
clientWidth: number;
|
||||
/**
|
||||
* The number of pixels between the left edge of the containing page and the left edge of the iframe
|
||||
*/
|
||||
offsetLeft: number;
|
||||
/**
|
||||
* The number of pixels between the top edge of the containing page and the top edge of the iframe
|
||||
*/
|
||||
offsetTop: number;
|
||||
/**
|
||||
* The number of pixels between the left edge of the iframe and the left edge of the iframe viewport
|
||||
*/
|
||||
scrollLeft: number;
|
||||
/**
|
||||
* The number of pixels between the top edge of the iframe and the top edge of the iframe viewport
|
||||
*/
|
||||
scrollTop: number;
|
||||
}
|
||||
|
||||
function iframeResizer(options: IFrameOptions, target: HTMLElement): IFrameComponent[];
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameResizedData {
|
||||
iframe: IFrameComponent;
|
||||
height: number;
|
||||
width: number;
|
||||
type: string;
|
||||
}
|
||||
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameMessageData {
|
||||
iframe: IFrameComponent;
|
||||
message: string;
|
||||
}
|
||||
|
||||
// tslint:disable-next-line:interface-name
|
||||
interface IFrameScrollData {
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
|
||||
function iframeResizer(options: IFrameOptions, target: string | HTMLElement): IFrameComponent[];
|
||||
}
|
||||
// tslint:enable:prefer-method-signature
|
||||
|
||||
Vendored
+1
-1
@@ -587,7 +587,7 @@ interface JQueryStatic<TElement extends Node = HTMLElement> {
|
||||
* @see {@link https://api.jquery.com/jQuery.isEmptyObject/}
|
||||
* @since 1.4
|
||||
*/
|
||||
isEmptyObject(obj: any): obj is {};
|
||||
isEmptyObject(obj: any): boolean;
|
||||
/**
|
||||
* Determine if the argument passed is a JavaScript function object.
|
||||
*
|
||||
|
||||
@@ -622,17 +622,16 @@ function JQueryStatic() {
|
||||
if ($.isArray(obj)) {
|
||||
// $ExpectType any[]
|
||||
obj;
|
||||
} else {
|
||||
// $ExpectType object
|
||||
obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function isEmptyObject() {
|
||||
function type_guard(obj: object) {
|
||||
if ($.isEmptyObject(obj)) {
|
||||
// $ExpectType {}
|
||||
obj;
|
||||
}
|
||||
}
|
||||
// $ExpectType boolean
|
||||
$.isEmptyObject({});
|
||||
}
|
||||
|
||||
function isFunction() {
|
||||
@@ -640,6 +639,9 @@ function JQueryStatic() {
|
||||
if ($.isFunction(obj)) {
|
||||
// $ExpectType Function
|
||||
obj;
|
||||
} else {
|
||||
// $ExpectType object
|
||||
obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -649,6 +651,9 @@ function JQueryStatic() {
|
||||
if ($.isNumeric(obj)) {
|
||||
// $ExpectType (true & number) | (false & number)
|
||||
obj;
|
||||
} else {
|
||||
// $ExpectType boolean
|
||||
obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -667,6 +672,9 @@ function JQueryStatic() {
|
||||
if ($.isWindow(obj)) {
|
||||
// $ExpectType Window
|
||||
obj;
|
||||
} else {
|
||||
// $ExpectType object
|
||||
obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+5
-2
@@ -1,6 +1,6 @@
|
||||
// Type definitions for Mongoose 4.7.0
|
||||
// Type definitions for Mongoose 4.7.1
|
||||
// Project: http://mongoosejs.com/
|
||||
// Definitions by: simonxca <https://github.com/simonxca/>, horiuchi <https://github.com/horiuchi/>, sindrenm <https://github.com/sindrenm>
|
||||
// Definitions by: simonxca <https://github.com/simonxca/>, horiuchi <https://github.com/horiuchi/>, sindrenm <https://github.com/sindrenm>, lukasz-zak <https://github.com/lukasz-zak>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 2.3
|
||||
|
||||
@@ -388,6 +388,9 @@ declare module "mongoose" {
|
||||
|
||||
/** sets the underlying driver's promise library (see http://mongodb.github.io/node-mongodb-native/2.1/api/MongoClient.html) */
|
||||
promiseLibrary?: any;
|
||||
|
||||
/** See http://mongoosejs.com/docs/connections.html#use-mongo-client **/
|
||||
useMongoClient?: boolean;
|
||||
}
|
||||
|
||||
interface ConnectionOptions extends
|
||||
|
||||
+1
-1
@@ -33,6 +33,6 @@ export interface CSSTransitionProps extends TransitionProps {
|
||||
classNames: string | CSSTransitionClassNames;
|
||||
}
|
||||
|
||||
declare class CSSTransition extends Component<CSSTransitionProps, any> {}
|
||||
declare class CSSTransition extends Component<CSSTransitionProps> {}
|
||||
|
||||
export default CSSTransition;
|
||||
|
||||
+1
-1
@@ -66,6 +66,6 @@ export interface TransitionProps extends TransitionActions {
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
declare class Transition extends Component<TransitionProps, any> {}
|
||||
declare class Transition extends Component<TransitionProps> {}
|
||||
|
||||
export default Transition;
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
import { Component, HTMLProps, ReactElement, ReactType } from "react";
|
||||
import { Component, ReactType, HTMLProps, ReactElement } from "react";
|
||||
import { TransitionActions, TransitionProps } from "react-transition-group/Transition";
|
||||
|
||||
export interface IntrinsicTransitionGroupProps<T extends keyof JSX.IntrinsicElements = "div"> extends TransitionActions {
|
||||
@@ -71,6 +71,6 @@ export type TransitionGroupProps<T extends keyof JSX.IntrinsicElements = "div",
|
||||
* components. This means you can mix and match animations across different
|
||||
* list items.
|
||||
*/
|
||||
declare class TransitionGroup extends Component<TransitionGroupProps, any> {}
|
||||
declare class TransitionGroup extends Component<TransitionGroupProps> {}
|
||||
|
||||
export default TransitionGroup;
|
||||
|
||||
Vendored
+4
-4
@@ -96,8 +96,8 @@ declare namespace Sinon {
|
||||
|
||||
interface SinonSpyStatic {
|
||||
(): SinonSpy;
|
||||
(func: any): SinonSpy;
|
||||
(obj: any, method: string): SinonSpy;
|
||||
(func: Function): SinonSpy;
|
||||
<T>(obj: T, method: keyof T): SinonSpy;
|
||||
}
|
||||
|
||||
interface SinonStatic {
|
||||
@@ -153,8 +153,8 @@ declare namespace Sinon {
|
||||
interface SinonStubStatic {
|
||||
(): SinonStub;
|
||||
(obj: any): SinonStub;
|
||||
(obj: any, method: string): SinonStub;
|
||||
(obj: any, method: string, func: any): SinonStub;
|
||||
<T>(obj: T, method: keyof T): SinonStub;
|
||||
<T>(obj: T, method: keyof T, func: Function): SinonStub;
|
||||
}
|
||||
|
||||
interface SinonStatic {
|
||||
|
||||
@@ -30,7 +30,7 @@ function testTwo() {
|
||||
|
||||
function testThree() {
|
||||
let obj = { thisObj: true };
|
||||
let callback = sinon.spy({}, "method");
|
||||
let callback = sinon.spy<any>({}, "method");
|
||||
let proxy = once(callback);
|
||||
proxy.call(obj, callback, 1, 2, 3);
|
||||
if (callback.calledOn(obj)) { console.log("test3 calledOn success"); } else { console.log("test3 calledOn failure"); }
|
||||
@@ -168,7 +168,7 @@ function testSetMatcher() {
|
||||
}
|
||||
|
||||
function testGetterStub() {
|
||||
const myObj: any = {
|
||||
const myObj = {
|
||||
prop: 'foo'
|
||||
};
|
||||
|
||||
@@ -177,7 +177,7 @@ function testGetterStub() {
|
||||
}
|
||||
|
||||
function testSetterStub() {
|
||||
const myObj: any = {
|
||||
const myObj = {
|
||||
prop: 'foo',
|
||||
prop2: 'bar'
|
||||
};
|
||||
@@ -187,7 +187,7 @@ function testSetterStub() {
|
||||
}
|
||||
|
||||
function testValueStub() {
|
||||
const myObj: any = {
|
||||
const myObj = {
|
||||
prop: 'foo'
|
||||
};
|
||||
|
||||
|
||||
Vendored
+173
@@ -0,0 +1,173 @@
|
||||
// Type definitions for stripe-v2 2.x
|
||||
// Project: https://stripe.com/
|
||||
// Definitions by: Andy Hawkins <https://github.com/a904guy/,http://a904guy.com>
|
||||
// Eric J. Smith <https://github.com/ejsmith/>
|
||||
// Amrit Kahlon <https://github.com/amritk/>
|
||||
// Adam Cmiel <https://github.com/adamcmiel>
|
||||
// Justin Leider <https://github.com/jleider>
|
||||
// Kamil Gałuszka <https://github.com/galuszkak>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
declare var Stripe: stripe.StripeStatic;
|
||||
|
||||
declare namespace stripe {
|
||||
interface StripeStatic {
|
||||
applePay: StripeApplePay;
|
||||
setPublishableKey(key: string): void;
|
||||
validateCardNumber(cardNumber: string): boolean;
|
||||
validateExpiry(month: string, year: string): boolean;
|
||||
validateCVC(cardCVC: string): boolean;
|
||||
cardType(cardNumber: string): StripeCardDataBrand;
|
||||
getToken(token: string, responseHandler: (status: number, response: StripeCardTokenResponse) => void): void;
|
||||
card: StripeCard;
|
||||
createToken(data: StripeCardTokenData, responseHandler: (status: number, response: StripeCardTokenResponse) => void): void;
|
||||
bankAccount: StripeBankAccount;
|
||||
}
|
||||
|
||||
interface StripeCardTokenData {
|
||||
number: string;
|
||||
exp_month?: number;
|
||||
exp_year?: number;
|
||||
exp?: string;
|
||||
cvc?: string;
|
||||
name?: string;
|
||||
address_line1?: string;
|
||||
address_line2?: string;
|
||||
address_city?: string;
|
||||
address_state?: string;
|
||||
address_zip?: string;
|
||||
address_country?: string;
|
||||
}
|
||||
|
||||
interface StripeTokenResponse {
|
||||
id: string;
|
||||
client_ip: string;
|
||||
created: number;
|
||||
livemode: boolean;
|
||||
object: string;
|
||||
type: string;
|
||||
used: boolean;
|
||||
error?: StripeError;
|
||||
}
|
||||
|
||||
interface StripeCardTokenResponse extends StripeTokenResponse {
|
||||
card: StripeCard;
|
||||
}
|
||||
|
||||
interface StripeError {
|
||||
type: string;
|
||||
code: string;
|
||||
message: string;
|
||||
param?: string;
|
||||
}
|
||||
|
||||
type StripeCardDataBrand = 'Visa' | 'American Express' | 'MasterCard' | 'Discover' | 'JCB' | 'Diners Club' | 'Unknown';
|
||||
|
||||
type StripeCardDataFunding = 'credit' | 'debit' | 'prepaid' | 'unknown';
|
||||
|
||||
interface StripeCard {
|
||||
object: string;
|
||||
last4: string;
|
||||
exp_month: number;
|
||||
exp_year: number;
|
||||
country?: string;
|
||||
name?: string;
|
||||
address_line1?: string;
|
||||
address_line2?: string;
|
||||
address_city?: string;
|
||||
address_state?: string;
|
||||
address_zip?: string;
|
||||
address_country?: string;
|
||||
brand?: StripeCardDataBrand;
|
||||
funding?: StripeCardDataFunding;
|
||||
createToken(data: StripeCardTokenData, responseHandler: (status: number, response: StripeCardTokenResponse) => void): void;
|
||||
validateCardNumber(cardNumber: string): boolean;
|
||||
validateExpiry(month: string, year: string): boolean;
|
||||
validateCVC(cardCVC: string): boolean;
|
||||
}
|
||||
|
||||
interface StripeBankAccount {
|
||||
createToken(params: StripeBankTokenParams, stripeResponseHandler: (status: number, response: StripeBankTokenResponse) => void): void;
|
||||
validateRoutingNumber(routingNumber: number | string, countryCode: string): boolean;
|
||||
validateAccountNumber(accountNumber: number | string, countryCode: string): boolean;
|
||||
}
|
||||
|
||||
interface StripeBankTokenParams {
|
||||
country: string;
|
||||
currency: string;
|
||||
account_number: number | string;
|
||||
routing_number?: number | string;
|
||||
account_holder_name: string;
|
||||
account_holder_type: string;
|
||||
}
|
||||
|
||||
interface StripeBankTokenResponse extends StripeTokenResponse {
|
||||
bank_account: {
|
||||
country: string;
|
||||
bank_name: string;
|
||||
last4: number;
|
||||
validated: boolean;
|
||||
object: string;
|
||||
};
|
||||
}
|
||||
|
||||
interface StripeApplePay {
|
||||
checkAvailability(resopnseHandler: (result: boolean) => void): void;
|
||||
buildSession(data: StripeApplePayPaymentRequest,
|
||||
onSuccessHandler: (result: StripeApplePaySessionResult, completion: ((value: any) => void)) => void,
|
||||
onErrorHanlder: (error: { message: string }) => void): any;
|
||||
}
|
||||
|
||||
type StripeApplePayBillingContactField = 'postalAddress' | 'name';
|
||||
type StripeApplePayShippingContactField = StripeApplePayBillingContactField | 'phone' | 'email';
|
||||
type StripeApplePayShipping = 'shipping' | 'delivery' | 'storePickup' | 'servicePickup';
|
||||
|
||||
interface StripeApplePayPaymentRequest {
|
||||
billingContact: StripeApplePayPaymentContact;
|
||||
countryCode: string;
|
||||
currencyCode: string;
|
||||
total: StripeApplePayLineItem;
|
||||
lineItems?: StripeApplePayLineItem[];
|
||||
requiredBillingContactFields?: StripeApplePayBillingContactField[];
|
||||
requiredShippingContactFields?: StripeApplePayShippingContactField[];
|
||||
shippingContact?: StripeApplePayPaymentContact;
|
||||
shippingMethods?: StripeApplePayShippingMethod[];
|
||||
shippingType?: StripeApplePayShipping[];
|
||||
}
|
||||
|
||||
// https://developer.apple.com/reference/applepayjs/1916082-applepay_js_data_types
|
||||
interface StripeApplePayLineItem {
|
||||
type: 'pending' | 'final';
|
||||
label: string;
|
||||
amount: number;
|
||||
}
|
||||
|
||||
interface StripeApplePaySessionResult {
|
||||
token: StripeCardTokenResponse;
|
||||
shippingContact?: StripeApplePayPaymentContact;
|
||||
shippingMethod?: StripeApplePayShippingMethod;
|
||||
}
|
||||
|
||||
interface StripeApplePayShippingMethod {
|
||||
label: string;
|
||||
detail: string;
|
||||
amount: number;
|
||||
identifier: string;
|
||||
}
|
||||
|
||||
interface StripeApplePayPaymentContact {
|
||||
emailAddress: string;
|
||||
phoneNumber: string;
|
||||
givenName: string;
|
||||
familyName: string;
|
||||
addressLines: string[];
|
||||
locality: string;
|
||||
administrativeArea: string;
|
||||
postalCode: string;
|
||||
countryCode: string;
|
||||
}
|
||||
}
|
||||
|
||||
// The Stripe client side APIs are not made available to package managers for direct installation.
|
||||
// As explained compliance reasons. Source: https://github.com/stripe/stripe-node/blob/master/README.md#these-are-serverside-bindings-only
|
||||
// A release date versioning schema is used to version these APIs.
|
||||
@@ -0,0 +1,32 @@
|
||||
declare function describe(desc: string, fn: () => void): void;
|
||||
declare function it(desc: string, fn: () => void): void;
|
||||
|
||||
describe("Stripe", () => {
|
||||
it("should excercise Stripe API", () => {
|
||||
function success(card: stripe.StripeCard) {
|
||||
console.log(card.brand && card.brand.toString());
|
||||
}
|
||||
|
||||
const cardNumber = '4242424242424242';
|
||||
|
||||
const isValid = Stripe.validateCardNumber(cardNumber);
|
||||
if (isValid) {
|
||||
const tokenData: stripe.StripeCardTokenData = {
|
||||
number: cardNumber,
|
||||
exp_month: 1,
|
||||
exp_year: 2100,
|
||||
cvc: '111'
|
||||
};
|
||||
Stripe.card.createToken(tokenData, (status, response) => {
|
||||
if (response.error) {
|
||||
console.error(response.error.message);
|
||||
if (response.error.param) {
|
||||
console.error(response.error.param);
|
||||
}
|
||||
} else {
|
||||
success(response.card);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -18,6 +18,6 @@
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"stripe-tests.ts"
|
||||
"stripe-v2-tests.ts"
|
||||
]
|
||||
}
|
||||
+14
-4
@@ -1,20 +1,30 @@
|
||||
// Type definitions for stripe 3.0
|
||||
// Type definitions for stripe-v3 3.0
|
||||
// Project: https://stripe.com/
|
||||
// Definitions by: Andy Hawkins <https://github.com/a904guy/,http://a904guy.com>
|
||||
// Eric J. Smith <https://github.com/ejsmith/>
|
||||
// Amrit Kahlon <https://github.com/amritk/>
|
||||
// Adam Cmiel <https://github.com/adamcmiel>
|
||||
// Justin Leider <https://github.com/jleider>
|
||||
// Kamil Gałuszka <https://github.com/galuszkak>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
export function Stripe(stripePublicKey: string): stripe.StripeStatic;
|
||||
declare var Stripe: stripe.StripeStatic;
|
||||
|
||||
export namespace stripe {
|
||||
declare namespace stripe {
|
||||
interface StripeStatic {
|
||||
(publicKey: string): Stripe;
|
||||
version: number;
|
||||
}
|
||||
|
||||
interface Stripe {
|
||||
elements(options?: elements.ElementsCreateOptions): elements.Elements;
|
||||
createToken(element: elements.Element, options?: TokenOptions): Promise<TokenResponse>;
|
||||
}
|
||||
|
||||
interface StripeOptions {
|
||||
stripeAccount: string;
|
||||
}
|
||||
|
||||
interface TokenOptions {
|
||||
name?: string;
|
||||
address_line1?: string;
|
||||
@@ -153,7 +163,7 @@ export namespace stripe {
|
||||
empty?: Style;
|
||||
invalid?: Style;
|
||||
};
|
||||
value?: string | {[objectKey: string]: string; };
|
||||
value?: string | { [objectKey: string]: string; };
|
||||
}
|
||||
|
||||
interface Style extends StyleOptions {
|
||||
@@ -0,0 +1,113 @@
|
||||
/// <reference types="stripe-v2" />
|
||||
|
||||
declare function describe(desc: string, fn: () => void): void;
|
||||
declare function it(desc: string, fn: () => void): void;
|
||||
|
||||
describe("Stripe", () => {
|
||||
it("should excercise all Stripe API", () => {
|
||||
const stripe = Stripe('public-key');
|
||||
const elements = stripe.elements();
|
||||
const style = {
|
||||
base: {
|
||||
color: '#32325d',
|
||||
lineHeight: '24px',
|
||||
fontFamily: 'Roboto, "Helvetica Neue", sans-serif',
|
||||
fontSmoothing: 'antialiased',
|
||||
fontSize: '16px',
|
||||
'::placeholder': {
|
||||
color: '#aab7c4'
|
||||
}
|
||||
},
|
||||
invalid: {
|
||||
color: '#B71C1C',
|
||||
iconColor: '#B71C1C'
|
||||
}
|
||||
};
|
||||
const card = elements.create('card', { hidePostalCode: true, style });
|
||||
card.mount(document.createElement('div'));
|
||||
card.on('ready', () => {
|
||||
console.log('ready');
|
||||
});
|
||||
card.on('change', (resp: stripe.elements.ElementChangeResponse) => {
|
||||
console.log(resp.brand);
|
||||
});
|
||||
stripe.createToken(card, {
|
||||
name: 'Jimmy',
|
||||
address_city: 'Toronto',
|
||||
address_country: 'Canada'
|
||||
})
|
||||
.then((result: stripe.TokenResponse) => {
|
||||
console.log(result.token);
|
||||
},
|
||||
(error: stripe.Error) => {
|
||||
console.error(error);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("Stripe v2 & v3", () => {
|
||||
it("should excercise all Stripe API", () => {
|
||||
function success(card: stripe.StripeCard) {
|
||||
console.log(card.brand && card.brand.toString());
|
||||
}
|
||||
|
||||
const cardNumber = '4242424242424242';
|
||||
|
||||
const isValid = Stripe.validateCardNumber(cardNumber);
|
||||
if (isValid) {
|
||||
const tokenData: stripe.StripeCardTokenData = {
|
||||
number: cardNumber,
|
||||
exp_month: 1,
|
||||
exp_year: 2100,
|
||||
cvc: '111'
|
||||
};
|
||||
Stripe.card.createToken(tokenData, (status, response) => {
|
||||
if (response.error) {
|
||||
console.error(response.error.message);
|
||||
if (response.error.param) {
|
||||
console.error(response.error.param);
|
||||
}
|
||||
} else {
|
||||
success(response.card);
|
||||
}
|
||||
});
|
||||
}
|
||||
const stripe = Stripe('public-key');
|
||||
const elements = stripe.elements();
|
||||
const style = {
|
||||
base: {
|
||||
color: '#32325d',
|
||||
lineHeight: '24px',
|
||||
fontFamily: 'Roboto, "Helvetica Neue", sans-serif',
|
||||
fontSmoothing: 'antialiased',
|
||||
fontSize: '16px',
|
||||
'::placeholder': {
|
||||
color: '#aab7c4'
|
||||
}
|
||||
},
|
||||
invalid: {
|
||||
color: '#B71C1C',
|
||||
iconColor: '#B71C1C'
|
||||
}
|
||||
};
|
||||
const card = elements.create('card', { hidePostalCode: true, style });
|
||||
card.mount(document.createElement('div'));
|
||||
card.on('ready', () => {
|
||||
console.log('ready');
|
||||
});
|
||||
card.on('change', (resp: stripe.elements.ElementChangeResponse) => {
|
||||
console.log(resp.brand);
|
||||
});
|
||||
stripe.createToken(card, {
|
||||
name: 'Jimmy',
|
||||
address_city: 'Toronto',
|
||||
address_country: 'Canada'
|
||||
})
|
||||
.then((result: stripe.TokenResponse) => {
|
||||
console.log(result.token);
|
||||
},
|
||||
(error: stripe.Error) => {
|
||||
console.error(error);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -8,19 +8,16 @@
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": true,
|
||||
"baseUrl": "../../",
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../../"
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"paths": {
|
||||
"stripe": ["stripe/v2"]
|
||||
},
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"stripe-tests.ts"
|
||||
"stripe-v3-tests.ts"
|
||||
]
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
import {stripe, Stripe} from 'stripe';
|
||||
|
||||
const stripe = Stripe('public-key');
|
||||
const elements = stripe.elements();
|
||||
const style = {
|
||||
base: {
|
||||
color: '#32325d',
|
||||
lineHeight: '24px',
|
||||
fontFamily: 'Roboto, "Helvetica Neue", sans-serif',
|
||||
fontSmoothing: 'antialiased',
|
||||
fontSize: '16px',
|
||||
'::placeholder': {
|
||||
color: '#aab7c4'
|
||||
}
|
||||
},
|
||||
invalid: {
|
||||
color: '#B71C1C',
|
||||
iconColor: '#B71C1C'
|
||||
}
|
||||
};
|
||||
const card = elements.create('card', {hidePostalCode: true, style});
|
||||
card.mount(document.createElement('div'));
|
||||
card.on('ready', () => {
|
||||
console.log('ready');
|
||||
});
|
||||
card.on('change', (resp: stripe.elements.ElementChangeResponse) => {
|
||||
console.log(resp.brand);
|
||||
});
|
||||
stripe.createToken(card, {
|
||||
name: 'Jimmy',
|
||||
address_city: 'Toronto',
|
||||
address_country: 'Canada'
|
||||
})
|
||||
.then((result: stripe.TokenResponse) => {
|
||||
console.log(result.token);
|
||||
},
|
||||
(error: stripe.Error) => {
|
||||
console.error(error);
|
||||
});
|
||||
Vendored
-170
@@ -1,170 +0,0 @@
|
||||
// Type definitions for stripe 2.x
|
||||
// Project: https://stripe.com/
|
||||
// Definitions by: Andy Hawkins <https://github.com/a904guy/,http://a904guy.com>
|
||||
// Eric J. Smith <https://github.com/ejsmith/>
|
||||
// Amrit Kahlon <https://github.com/amritk/>
|
||||
// Adam Cmiel <https://github.com/adamcmiel>
|
||||
// Justin Leider <https://github.com/jleider>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
declare const Stripe: StripeStatic;
|
||||
|
||||
interface StripeStatic {
|
||||
applePay: StripeApplePay;
|
||||
setPublishableKey(key: string): void;
|
||||
validateCardNumber(cardNumber: string): boolean;
|
||||
validateExpiry(month: string, year: string): boolean;
|
||||
validateCVC(cardCVC: string): boolean;
|
||||
cardType(cardNumber: string): StripeCardDataBrand;
|
||||
getToken(token: string, responseHandler: (status: number, response: StripeCardTokenResponse) => void): void;
|
||||
card: StripeCard;
|
||||
createToken(data: StripeCardTokenData, responseHandler: (status: number, response: StripeCardTokenResponse) => void): void;
|
||||
bankAccount: StripeBankAccount;
|
||||
}
|
||||
|
||||
interface StripeCardTokenData {
|
||||
number: string;
|
||||
exp_month?: number;
|
||||
exp_year?: number;
|
||||
exp?: string;
|
||||
cvc?: string;
|
||||
name?: string;
|
||||
address_line1?: string;
|
||||
address_line2?: string;
|
||||
address_city?: string;
|
||||
address_state?: string;
|
||||
address_zip?: string;
|
||||
address_country?: string;
|
||||
}
|
||||
|
||||
interface StripeTokenResponse {
|
||||
id: string;
|
||||
client_ip: string;
|
||||
created: number;
|
||||
livemode: boolean;
|
||||
object: string;
|
||||
type: string;
|
||||
used: boolean;
|
||||
error?: StripeError;
|
||||
}
|
||||
|
||||
interface StripeCardTokenResponse extends StripeTokenResponse {
|
||||
card: StripeCard;
|
||||
}
|
||||
|
||||
interface StripeError {
|
||||
type: string;
|
||||
code: string;
|
||||
message: string;
|
||||
param?: string;
|
||||
}
|
||||
|
||||
type StripeCardDataBrand = 'Visa' | 'American Express' | 'MasterCard' | 'Discover' | 'JCB' | 'Diners Club' | 'Unknown';
|
||||
|
||||
type StripeCardDataFunding = 'credit' | 'debit' | 'prepaid' | 'unknown';
|
||||
|
||||
interface StripeCard {
|
||||
object: string;
|
||||
last4: string;
|
||||
exp_month: number;
|
||||
exp_year: number;
|
||||
country?: string;
|
||||
name?: string;
|
||||
address_line1?: string;
|
||||
address_line2?: string;
|
||||
address_city?: string;
|
||||
address_state?: string;
|
||||
address_zip?: string;
|
||||
address_country?: string;
|
||||
brand?: StripeCardDataBrand;
|
||||
funding?: StripeCardDataFunding;
|
||||
createToken(data: StripeCardTokenData, responseHandler: (status: number, response: StripeCardTokenResponse) => void): void;
|
||||
validateCardNumber(cardNumber: string): boolean;
|
||||
validateExpiry(month: string, year: string): boolean;
|
||||
validateCVC(cardCVC: string): boolean;
|
||||
}
|
||||
|
||||
interface StripeBankAccount {
|
||||
createToken(params: StripeBankTokenParams, stripeResponseHandler: (status: number, response: StripeBankTokenResponse) => void): void;
|
||||
validateRoutingNumber(routingNumber: number | string, countryCode: string): boolean;
|
||||
validateAccountNumber(accountNumber: number | string, countryCode: string): boolean;
|
||||
}
|
||||
|
||||
interface StripeBankTokenParams {
|
||||
country: string;
|
||||
currency: string;
|
||||
account_number: number | string;
|
||||
routing_number?: number | string;
|
||||
account_holder_name: string;
|
||||
account_holder_type: string;
|
||||
}
|
||||
|
||||
interface StripeBankTokenResponse extends StripeTokenResponse {
|
||||
bank_account: {
|
||||
country: string;
|
||||
bank_name: string;
|
||||
last4: number;
|
||||
validated: boolean;
|
||||
object: string;
|
||||
};
|
||||
}
|
||||
|
||||
interface StripeApplePay {
|
||||
checkAvailability(resopnseHandler: (result: boolean) => void): void;
|
||||
buildSession(data: StripeApplePayPaymentRequest,
|
||||
onSuccessHandler: (result: StripeApplePaySessionResult, completion: ((value: any) => void)) => void,
|
||||
onErrorHanlder: (error: { message: string }) => void): any;
|
||||
}
|
||||
|
||||
type StripeApplePayBillingContactField = 'postalAddress' | 'name';
|
||||
type StripeApplePayShippingContactField = StripeApplePayBillingContactField | 'phone' | 'email';
|
||||
type StripeApplePayShipping = 'shipping' | 'delivery' | 'storePickup' | 'servicePickup';
|
||||
|
||||
interface StripeApplePayPaymentRequest {
|
||||
billingContact: StripeApplePayPaymentContact;
|
||||
countryCode: string;
|
||||
currencyCode: string;
|
||||
total: StripeApplePayLineItem;
|
||||
lineItems?: StripeApplePayLineItem[];
|
||||
requiredBillingContactFields?: StripeApplePayBillingContactField[];
|
||||
requiredShippingContactFields?: StripeApplePayShippingContactField[];
|
||||
shippingContact?: StripeApplePayPaymentContact;
|
||||
shippingMethods?: StripeApplePayShippingMethod[];
|
||||
shippingType?: StripeApplePayShipping[];
|
||||
}
|
||||
|
||||
// https://developer.apple.com/reference/applepayjs/1916082-applepay_js_data_types
|
||||
interface StripeApplePayLineItem {
|
||||
type: 'pending' | 'final';
|
||||
label: string;
|
||||
amount: number;
|
||||
}
|
||||
|
||||
interface StripeApplePaySessionResult {
|
||||
token: StripeCardTokenResponse;
|
||||
shippingContact?: StripeApplePayPaymentContact;
|
||||
shippingMethod?: StripeApplePayShippingMethod;
|
||||
}
|
||||
|
||||
interface StripeApplePayShippingMethod {
|
||||
label: string;
|
||||
detail: string;
|
||||
amount: number;
|
||||
identifier: string;
|
||||
}
|
||||
|
||||
interface StripeApplePayPaymentContact {
|
||||
emailAddress: string;
|
||||
phoneNumber: string;
|
||||
givenName: string;
|
||||
familyName: string;
|
||||
addressLines: string[];
|
||||
locality: string;
|
||||
administrativeArea: string;
|
||||
postalCode: string;
|
||||
countryCode: string;
|
||||
}
|
||||
|
||||
// The Stripe client side APIs are not made available to package managers for direct installation.
|
||||
// As explained compliance reasons. Source: https://github.com/stripe/stripe-node/blob/master/README.md#these-are-serverside-bindings-only
|
||||
// A release date versioning schema is used to version these APIs.
|
||||
@@ -1,25 +0,0 @@
|
||||
function success(card: StripeCard) {
|
||||
console.log(card.brand && card.brand.toString());
|
||||
}
|
||||
|
||||
const cardNumber = '4242424242424242';
|
||||
|
||||
const isValid = Stripe.validateCardNumber(cardNumber);
|
||||
if (isValid) {
|
||||
const tokenData: StripeCardTokenData = {
|
||||
number: cardNumber,
|
||||
exp_month: 1,
|
||||
exp_year: 2100,
|
||||
cvc: '111'
|
||||
};
|
||||
Stripe.card.createToken(tokenData, (status, response) => {
|
||||
if (response.error) {
|
||||
console.error(response.error.message);
|
||||
if (response.error.param) {
|
||||
console.error(response.error.param);
|
||||
}
|
||||
} else {
|
||||
success(response.card);
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user