mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-11 07:55:47 +01:00
Merged in feature/lr-for-plugins (pull request #95)
Feature/lr for plugins
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -757,7 +757,7 @@
|
|||||||
<guice.version>4.0</guice.version>
|
<guice.version>4.0</guice.version>
|
||||||
|
|
||||||
<!-- event bus -->
|
<!-- event bus -->
|
||||||
<legman.version>1.3.0</legman.version>
|
<legman.version>1.4.0</legman.version>
|
||||||
|
|
||||||
<!-- webserver -->
|
<!-- webserver -->
|
||||||
<jetty.version>9.2.10.v20150310</jetty.version>
|
<jetty.version>9.2.10.v20150310</jetty.version>
|
||||||
|
|||||||
@@ -113,92 +113,35 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>sonia.scm.maven</groupId>
|
<groupId>sonia.scm.maven</groupId>
|
||||||
<artifactId>smp-maven-plugin</artifactId>
|
<artifactId>smp-maven-plugin</artifactId>
|
||||||
<version>1.0.0-alpha-2</version>
|
<version>1.0.0-alpha-3</version>
|
||||||
<extensions>true</extensions>
|
<extensions>true</extensions>
|
||||||
<configuration>
|
<configuration>
|
||||||
<disableCompression>true</disableCompression>
|
<links>
|
||||||
|
<link>@scm-manager/ui-types</link>
|
||||||
|
<link>@scm-manager/ui-components</link>
|
||||||
|
</links>
|
||||||
</configuration>
|
</configuration>
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>fix-descriptor</id>
|
|
||||||
<phase>process-resources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>fix-descriptor</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>append-dependencies</id>
|
|
||||||
<phase>process-classes</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>append-dependencies</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>com.github.sdorra</groupId>
|
<groupId>com.github.sdorra</groupId>
|
||||||
<artifactId>buildfrontend-maven-plugin</artifactId>
|
<artifactId>buildfrontend-maven-plugin</artifactId>
|
||||||
<configuration>
|
<configuration>
|
||||||
<node>
|
<node>
|
||||||
<version>${nodejs.version}</version>
|
<version>${nodejs.version}</version>
|
||||||
</node>
|
</node>
|
||||||
<pkgManager>
|
<pkgManager>
|
||||||
<type>YARN</type>
|
<type>YARN</type>
|
||||||
<version>${yarn.version}</version>
|
<version>${yarn.version}</version>
|
||||||
</pkgManager>
|
</pkgManager>
|
||||||
<failOnMissingPackageJson>false</failOnMissingPackageJson>
|
<failOnMissingPackageJson>false</failOnMissingPackageJson>
|
||||||
<script>build</script>
|
</configuration>
|
||||||
</configuration>
|
</plugin>
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>install</id>
|
|
||||||
<phase>process-resources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>install</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>build</id>
|
|
||||||
<phase>compile</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>run</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
<profiles>
|
<profiles>
|
||||||
<profile>
|
|
||||||
<id>release</id>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
|
|
||||||
<plugin>
|
|
||||||
<groupId>sonia.maven</groupId>
|
|
||||||
<artifactId>web-compressor</artifactId>
|
|
||||||
<version>1.4</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>compile</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>compress-directory</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
<configuration>
|
|
||||||
<replace>true</replace>
|
|
||||||
<baseDirectory>${project.build.directory}/classes</baseDirectory>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>doc</id>
|
<id>doc</id>
|
||||||
|
|
||||||
|
|||||||
@@ -4,5 +4,6 @@
|
|||||||
[include]
|
[include]
|
||||||
|
|
||||||
[libs]
|
[libs]
|
||||||
|
./node_modules/@scm-manager/ui-components/flow-typed
|
||||||
|
|
||||||
[options]
|
[options]
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
// flow-typed signature: cf86673cc32d185bdab1d2ea90578d37
|
|
||||||
// flow-typed version: 614bf49aa8/classnames_v2.x.x/flow_>=v0.25.x
|
|
||||||
|
|
||||||
type $npm$classnames$Classes =
|
|
||||||
| string
|
|
||||||
| { [className: string]: * }
|
|
||||||
| false
|
|
||||||
| void
|
|
||||||
| null;
|
|
||||||
|
|
||||||
declare module "classnames" {
|
|
||||||
declare module.exports: (
|
|
||||||
...classes: Array<$npm$classnames$Classes | $npm$classnames$Classes[]>
|
|
||||||
) => string;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "classnames/bind" {
|
|
||||||
declare module.exports: $Exports<"classnames">;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "classnames/dedupe" {
|
|
||||||
declare module.exports: $Exports<"classnames">;
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,331 +0,0 @@
|
|||||||
// flow-typed signature: 23b805356f90ad9384dd88489654e380
|
|
||||||
// flow-typed version: e9374c5fe9/moment_v2.3.x/flow_>=v0.25.x
|
|
||||||
|
|
||||||
type moment$MomentOptions = {
|
|
||||||
y?: number | string,
|
|
||||||
year?: number | string,
|
|
||||||
years?: number | string,
|
|
||||||
M?: number | string,
|
|
||||||
month?: number | string,
|
|
||||||
months?: number | string,
|
|
||||||
d?: number | string,
|
|
||||||
day?: number | string,
|
|
||||||
days?: number | string,
|
|
||||||
date?: number | string,
|
|
||||||
h?: number | string,
|
|
||||||
hour?: number | string,
|
|
||||||
hours?: number | string,
|
|
||||||
m?: number | string,
|
|
||||||
minute?: number | string,
|
|
||||||
minutes?: number | string,
|
|
||||||
s?: number | string,
|
|
||||||
second?: number | string,
|
|
||||||
seconds?: number | string,
|
|
||||||
ms?: number | string,
|
|
||||||
millisecond?: number | string,
|
|
||||||
milliseconds?: number | string
|
|
||||||
};
|
|
||||||
|
|
||||||
type moment$MomentObject = {
|
|
||||||
years: number,
|
|
||||||
months: number,
|
|
||||||
date: number,
|
|
||||||
hours: number,
|
|
||||||
minutes: number,
|
|
||||||
seconds: number,
|
|
||||||
milliseconds: number
|
|
||||||
};
|
|
||||||
|
|
||||||
type moment$MomentCreationData = {
|
|
||||||
input: string,
|
|
||||||
format: string,
|
|
||||||
locale: Object,
|
|
||||||
isUTC: boolean,
|
|
||||||
strict: boolean
|
|
||||||
};
|
|
||||||
|
|
||||||
type moment$CalendarFormat = string | ((moment: moment$Moment) => string);
|
|
||||||
|
|
||||||
type moment$CalendarFormats = {
|
|
||||||
sameDay?: moment$CalendarFormat,
|
|
||||||
nextDay?: moment$CalendarFormat,
|
|
||||||
nextWeek?: moment$CalendarFormat,
|
|
||||||
lastDay?: moment$CalendarFormat,
|
|
||||||
lastWeek?: moment$CalendarFormat,
|
|
||||||
sameElse?: moment$CalendarFormat
|
|
||||||
};
|
|
||||||
|
|
||||||
declare class moment$LocaleData {
|
|
||||||
months(moment: moment$Moment): string,
|
|
||||||
monthsShort(moment: moment$Moment): string,
|
|
||||||
monthsParse(month: string): number,
|
|
||||||
weekdays(moment: moment$Moment): string,
|
|
||||||
weekdaysShort(moment: moment$Moment): string,
|
|
||||||
weekdaysMin(moment: moment$Moment): string,
|
|
||||||
weekdaysParse(weekDay: string): number,
|
|
||||||
longDateFormat(dateFormat: string): string,
|
|
||||||
isPM(date: string): boolean,
|
|
||||||
meridiem(hours: number, minutes: number, isLower: boolean): string,
|
|
||||||
calendar(
|
|
||||||
key:
|
|
||||||
| "sameDay"
|
|
||||||
| "nextDay"
|
|
||||||
| "lastDay"
|
|
||||||
| "nextWeek"
|
|
||||||
| "prevWeek"
|
|
||||||
| "sameElse",
|
|
||||||
moment: moment$Moment
|
|
||||||
): string,
|
|
||||||
relativeTime(
|
|
||||||
number: number,
|
|
||||||
withoutSuffix: boolean,
|
|
||||||
key: "s" | "m" | "mm" | "h" | "hh" | "d" | "dd" | "M" | "MM" | "y" | "yy",
|
|
||||||
isFuture: boolean
|
|
||||||
): string,
|
|
||||||
pastFuture(diff: any, relTime: string): string,
|
|
||||||
ordinal(number: number): string,
|
|
||||||
preparse(str: string): any,
|
|
||||||
postformat(str: string): any,
|
|
||||||
week(moment: moment$Moment): string,
|
|
||||||
invalidDate(): string,
|
|
||||||
firstDayOfWeek(): number,
|
|
||||||
firstDayOfYear(): number
|
|
||||||
}
|
|
||||||
declare class moment$MomentDuration {
|
|
||||||
humanize(suffix?: boolean): string,
|
|
||||||
milliseconds(): number,
|
|
||||||
asMilliseconds(): number,
|
|
||||||
seconds(): number,
|
|
||||||
asSeconds(): number,
|
|
||||||
minutes(): number,
|
|
||||||
asMinutes(): number,
|
|
||||||
hours(): number,
|
|
||||||
asHours(): number,
|
|
||||||
days(): number,
|
|
||||||
asDays(): number,
|
|
||||||
months(): number,
|
|
||||||
asWeeks(): number,
|
|
||||||
weeks(): number,
|
|
||||||
asMonths(): number,
|
|
||||||
years(): number,
|
|
||||||
asYears(): number,
|
|
||||||
add(value: number | moment$MomentDuration | Object, unit?: string): this,
|
|
||||||
subtract(value: number | moment$MomentDuration | Object, unit?: string): this,
|
|
||||||
as(unit: string): number,
|
|
||||||
get(unit: string): number,
|
|
||||||
toJSON(): string,
|
|
||||||
toISOString(): string,
|
|
||||||
isValid(): boolean
|
|
||||||
}
|
|
||||||
declare class moment$Moment {
|
|
||||||
static ISO_8601: string,
|
|
||||||
static (
|
|
||||||
string?: string,
|
|
||||||
format?: string | Array<string>,
|
|
||||||
strict?: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
static (
|
|
||||||
string?: string,
|
|
||||||
format?: string | Array<string>,
|
|
||||||
locale?: string,
|
|
||||||
strict?: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
static (
|
|
||||||
initDate: ?Object | number | Date | Array<number> | moment$Moment | string
|
|
||||||
): moment$Moment,
|
|
||||||
static unix(seconds: number): moment$Moment,
|
|
||||||
static utc(): moment$Moment,
|
|
||||||
static utc(number: number | Array<number>): moment$Moment,
|
|
||||||
static utc(
|
|
||||||
str: string,
|
|
||||||
str2?: string | Array<string>,
|
|
||||||
str3?: string
|
|
||||||
): moment$Moment,
|
|
||||||
static utc(moment: moment$Moment): moment$Moment,
|
|
||||||
static utc(date: Date): moment$Moment,
|
|
||||||
static parseZone(): moment$Moment,
|
|
||||||
static parseZone(rawDate: string): moment$Moment,
|
|
||||||
static parseZone(
|
|
||||||
rawDate: string,
|
|
||||||
format: string | Array<string>
|
|
||||||
): moment$Moment,
|
|
||||||
static parseZone(
|
|
||||||
rawDate: string,
|
|
||||||
format: string,
|
|
||||||
strict: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
static parseZone(
|
|
||||||
rawDate: string,
|
|
||||||
format: string,
|
|
||||||
locale: string,
|
|
||||||
strict: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
isValid(): boolean,
|
|
||||||
invalidAt(): 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
|
||||||
creationData(): moment$MomentCreationData,
|
|
||||||
millisecond(number: number): this,
|
|
||||||
milliseconds(number: number): this,
|
|
||||||
millisecond(): number,
|
|
||||||
milliseconds(): number,
|
|
||||||
second(number: number): this,
|
|
||||||
seconds(number: number): this,
|
|
||||||
second(): number,
|
|
||||||
seconds(): number,
|
|
||||||
minute(number: number): this,
|
|
||||||
minutes(number: number): this,
|
|
||||||
minute(): number,
|
|
||||||
minutes(): number,
|
|
||||||
hour(number: number): this,
|
|
||||||
hours(number: number): this,
|
|
||||||
hour(): number,
|
|
||||||
hours(): number,
|
|
||||||
date(number: number): this,
|
|
||||||
dates(number: number): this,
|
|
||||||
date(): number,
|
|
||||||
dates(): number,
|
|
||||||
day(day: number | string): this,
|
|
||||||
days(day: number | string): this,
|
|
||||||
day(): number,
|
|
||||||
days(): number,
|
|
||||||
weekday(number: number): this,
|
|
||||||
weekday(): number,
|
|
||||||
isoWeekday(number: number): this,
|
|
||||||
isoWeekday(): number,
|
|
||||||
dayOfYear(number: number): this,
|
|
||||||
dayOfYear(): number,
|
|
||||||
week(number: number): this,
|
|
||||||
weeks(number: number): this,
|
|
||||||
week(): number,
|
|
||||||
weeks(): number,
|
|
||||||
isoWeek(number: number): this,
|
|
||||||
isoWeeks(number: number): this,
|
|
||||||
isoWeek(): number,
|
|
||||||
isoWeeks(): number,
|
|
||||||
month(number: number): this,
|
|
||||||
months(number: number): this,
|
|
||||||
month(): number,
|
|
||||||
months(): number,
|
|
||||||
quarter(number: number): this,
|
|
||||||
quarter(): number,
|
|
||||||
year(number: number): this,
|
|
||||||
years(number: number): this,
|
|
||||||
year(): number,
|
|
||||||
years(): number,
|
|
||||||
weekYear(number: number): this,
|
|
||||||
weekYear(): number,
|
|
||||||
isoWeekYear(number: number): this,
|
|
||||||
isoWeekYear(): number,
|
|
||||||
weeksInYear(): number,
|
|
||||||
isoWeeksInYear(): number,
|
|
||||||
get(string: string): number,
|
|
||||||
set(unit: string, value: number): this,
|
|
||||||
set(options: { [unit: string]: number }): this,
|
|
||||||
static max(...dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
static max(dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
static min(...dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
static min(dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
add(
|
|
||||||
value: number | moment$MomentDuration | moment$Moment | Object,
|
|
||||||
unit?: string
|
|
||||||
): this,
|
|
||||||
subtract(
|
|
||||||
value: number | moment$MomentDuration | moment$Moment | string | Object,
|
|
||||||
unit?: string
|
|
||||||
): this,
|
|
||||||
startOf(unit: string): this,
|
|
||||||
endOf(unit: string): this,
|
|
||||||
local(): this,
|
|
||||||
utc(): this,
|
|
||||||
utcOffset(
|
|
||||||
offset: number | string,
|
|
||||||
keepLocalTime?: boolean,
|
|
||||||
keepMinutes?: boolean
|
|
||||||
): this,
|
|
||||||
utcOffset(): number,
|
|
||||||
format(format?: string): string,
|
|
||||||
fromNow(removeSuffix?: boolean): string,
|
|
||||||
from(
|
|
||||||
value: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
removePrefix?: boolean
|
|
||||||
): string,
|
|
||||||
toNow(removePrefix?: boolean): string,
|
|
||||||
to(
|
|
||||||
value: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
removePrefix?: boolean
|
|
||||||
): string,
|
|
||||||
calendar(refTime?: any, formats?: moment$CalendarFormats): string,
|
|
||||||
diff(
|
|
||||||
date: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
format?: string,
|
|
||||||
floating?: boolean
|
|
||||||
): number,
|
|
||||||
valueOf(): number,
|
|
||||||
unix(): number,
|
|
||||||
daysInMonth(): number,
|
|
||||||
toDate(): Date,
|
|
||||||
toArray(): Array<number>,
|
|
||||||
toJSON(): string,
|
|
||||||
toISOString(
|
|
||||||
keepOffset?: boolean
|
|
||||||
): string,
|
|
||||||
toObject(): moment$MomentObject,
|
|
||||||
isBefore(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isSame(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isAfter(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isSameOrBefore(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isSameOrAfter(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isBetween(
|
|
||||||
fromDate: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
toDate?: ?moment$Moment | string | number | Date | Array<number>,
|
|
||||||
granularity?: ?string,
|
|
||||||
inclusion?: ?string
|
|
||||||
): boolean,
|
|
||||||
isDST(): boolean,
|
|
||||||
isDSTShifted(): boolean,
|
|
||||||
isLeapYear(): boolean,
|
|
||||||
clone(): moment$Moment,
|
|
||||||
static isMoment(obj: any): boolean,
|
|
||||||
static isDate(obj: any): boolean,
|
|
||||||
static locale(locale: string, localeData?: Object): string,
|
|
||||||
static updateLocale(locale: string, localeData?: ?Object): void,
|
|
||||||
static locale(locales: Array<string>): string,
|
|
||||||
locale(locale: string, customization?: Object | null): moment$Moment,
|
|
||||||
locale(): string,
|
|
||||||
static months(): Array<string>,
|
|
||||||
static monthsShort(): Array<string>,
|
|
||||||
static weekdays(): Array<string>,
|
|
||||||
static weekdaysShort(): Array<string>,
|
|
||||||
static weekdaysMin(): Array<string>,
|
|
||||||
static months(): string,
|
|
||||||
static monthsShort(): string,
|
|
||||||
static weekdays(): string,
|
|
||||||
static weekdaysShort(): string,
|
|
||||||
static weekdaysMin(): string,
|
|
||||||
static localeData(key?: string): moment$LocaleData,
|
|
||||||
static duration(
|
|
||||||
value: number | Object | string,
|
|
||||||
unit?: string
|
|
||||||
): moment$MomentDuration,
|
|
||||||
static isDuration(obj: any): boolean,
|
|
||||||
static normalizeUnits(unit: string): string,
|
|
||||||
static invalid(object: any): moment$Moment
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "moment" {
|
|
||||||
declare module.exports: Class<moment$Moment>;
|
|
||||||
}
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
// flow-typed signature: ba35d02d668b0d0a3e04a63a6847974e
|
|
||||||
// flow-typed version: <<STUB>>/react-jss_v8.6.1/flow_v0.79.1
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is an autogenerated libdef stub for:
|
|
||||||
*
|
|
||||||
* 'react-jss'
|
|
||||||
*
|
|
||||||
* Fill this stub out by replacing all the `any` types.
|
|
||||||
*
|
|
||||||
* Once filled out, we encourage you to share your work with the
|
|
||||||
* community by sending a pull request to:
|
|
||||||
* https://github.com/flowtype/flow-typed
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare module 'react-jss' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* We include stubs for each file inside this npm package in case you need to
|
|
||||||
* require those files directly. Feel free to delete any files that aren't
|
|
||||||
* needed.
|
|
||||||
*/
|
|
||||||
declare module 'react-jss/dist/react-jss' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/dist/react-jss.min' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/compose' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/compose.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/contextTypes' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/createHoc' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/getDisplayName' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/index' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/index.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/injectSheet' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/injectSheet.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/jss' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/JssProvider' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/JssProvider.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/ns' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/propTypes' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filename aliases
|
|
||||||
declare module 'react-jss/dist/react-jss.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/dist/react-jss'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/dist/react-jss.min.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/dist/react-jss.min'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/compose.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/compose'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/compose.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/compose.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/contextTypes.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/contextTypes'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/createHoc.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/createHoc'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/getDisplayName.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/getDisplayName'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/index.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/index'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/index.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/index.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/injectSheet.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/injectSheet'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/injectSheet.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/injectSheet.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/jss.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/jss'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/JssProvider.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/JssProvider'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/JssProvider.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/JssProvider.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/ns.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/ns'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/propTypes.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/propTypes'>;
|
|
||||||
}
|
|
||||||
@@ -3,12 +3,15 @@
|
|||||||
"license" : "BSD-3-Clause",
|
"license" : "BSD-3-Clause",
|
||||||
"main": "src/main/js/index.js",
|
"main": "src/main/js/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "ui-bundler plugin"
|
"build": "ui-bundler plugin",
|
||||||
|
"watch": "ui-bundler plugin -w",
|
||||||
|
"lint": "ui-bundler lint",
|
||||||
|
"flow": "flow check"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@scm-manager/ui-extensions": "^0.0.7"
|
"@scm-manager/ui-extensions": "^0.0.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@scm-manager/ui-bundler": "^0.0.17"
|
"@scm-manager/ui-bundler": "^0.0.19"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,11 +43,20 @@
|
|||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<!-- create test jar -->
|
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>sonia.scm.maven</groupId>
|
||||||
|
<artifactId>smp-maven-plugin</artifactId>
|
||||||
|
<extensions>true</extensions>
|
||||||
|
<configuration>
|
||||||
|
<corePlugin>true</corePlugin>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<!-- create test jar -->
|
||||||
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-jar-plugin</artifactId>
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
@@ -61,33 +70,6 @@
|
|||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
|
||||||
<groupId>com.github.sdorra</groupId>
|
|
||||||
<artifactId>buildfrontend-maven-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>link-ui-types</id>
|
|
||||||
<phase>process-sources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>install-link</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<pkg>@scm-manager/ui-types</pkg>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>link-ui-components</id>
|
|
||||||
<phase>process-sources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>install-link</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<pkg>@scm-manager/ui-components</pkg>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|||||||
@@ -707,9 +707,9 @@
|
|||||||
version "0.0.2"
|
version "0.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
||||||
|
|
||||||
"@scm-manager/ui-bundler@^0.0.17":
|
"@scm-manager/ui-bundler@^0.0.19":
|
||||||
version "0.0.17"
|
version "0.0.19"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.17.tgz#949b90ca57e4268be28fcf4975bd9622f60278bb"
|
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.19.tgz#646ab1fa1e5389fad614542215c60678fb9816ae"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core" "^7.0.0"
|
"@babel/core" "^7.0.0"
|
||||||
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
||||||
|
|||||||
@@ -4,5 +4,6 @@
|
|||||||
[include]
|
[include]
|
||||||
|
|
||||||
[libs]
|
[libs]
|
||||||
|
./node_modules/@scm-manager/ui-components/flow-typed
|
||||||
|
|
||||||
[options]
|
[options]
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
// flow-typed signature: cf86673cc32d185bdab1d2ea90578d37
|
|
||||||
// flow-typed version: 614bf49aa8/classnames_v2.x.x/flow_>=v0.25.x
|
|
||||||
|
|
||||||
type $npm$classnames$Classes =
|
|
||||||
| string
|
|
||||||
| { [className: string]: * }
|
|
||||||
| false
|
|
||||||
| void
|
|
||||||
| null;
|
|
||||||
|
|
||||||
declare module "classnames" {
|
|
||||||
declare module.exports: (
|
|
||||||
...classes: Array<$npm$classnames$Classes | $npm$classnames$Classes[]>
|
|
||||||
) => string;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "classnames/bind" {
|
|
||||||
declare module.exports: $Exports<"classnames">;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "classnames/dedupe" {
|
|
||||||
declare module.exports: $Exports<"classnames">;
|
|
||||||
}
|
|
||||||
1108
scm-plugins/scm-hg-plugin/flow-typed/npm/jest_v23.x.x.js
vendored
1108
scm-plugins/scm-hg-plugin/flow-typed/npm/jest_v23.x.x.js
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,331 +0,0 @@
|
|||||||
// flow-typed signature: 23b805356f90ad9384dd88489654e380
|
|
||||||
// flow-typed version: e9374c5fe9/moment_v2.3.x/flow_>=v0.25.x
|
|
||||||
|
|
||||||
type moment$MomentOptions = {
|
|
||||||
y?: number | string,
|
|
||||||
year?: number | string,
|
|
||||||
years?: number | string,
|
|
||||||
M?: number | string,
|
|
||||||
month?: number | string,
|
|
||||||
months?: number | string,
|
|
||||||
d?: number | string,
|
|
||||||
day?: number | string,
|
|
||||||
days?: number | string,
|
|
||||||
date?: number | string,
|
|
||||||
h?: number | string,
|
|
||||||
hour?: number | string,
|
|
||||||
hours?: number | string,
|
|
||||||
m?: number | string,
|
|
||||||
minute?: number | string,
|
|
||||||
minutes?: number | string,
|
|
||||||
s?: number | string,
|
|
||||||
second?: number | string,
|
|
||||||
seconds?: number | string,
|
|
||||||
ms?: number | string,
|
|
||||||
millisecond?: number | string,
|
|
||||||
milliseconds?: number | string
|
|
||||||
};
|
|
||||||
|
|
||||||
type moment$MomentObject = {
|
|
||||||
years: number,
|
|
||||||
months: number,
|
|
||||||
date: number,
|
|
||||||
hours: number,
|
|
||||||
minutes: number,
|
|
||||||
seconds: number,
|
|
||||||
milliseconds: number
|
|
||||||
};
|
|
||||||
|
|
||||||
type moment$MomentCreationData = {
|
|
||||||
input: string,
|
|
||||||
format: string,
|
|
||||||
locale: Object,
|
|
||||||
isUTC: boolean,
|
|
||||||
strict: boolean
|
|
||||||
};
|
|
||||||
|
|
||||||
type moment$CalendarFormat = string | ((moment: moment$Moment) => string);
|
|
||||||
|
|
||||||
type moment$CalendarFormats = {
|
|
||||||
sameDay?: moment$CalendarFormat,
|
|
||||||
nextDay?: moment$CalendarFormat,
|
|
||||||
nextWeek?: moment$CalendarFormat,
|
|
||||||
lastDay?: moment$CalendarFormat,
|
|
||||||
lastWeek?: moment$CalendarFormat,
|
|
||||||
sameElse?: moment$CalendarFormat
|
|
||||||
};
|
|
||||||
|
|
||||||
declare class moment$LocaleData {
|
|
||||||
months(moment: moment$Moment): string,
|
|
||||||
monthsShort(moment: moment$Moment): string,
|
|
||||||
monthsParse(month: string): number,
|
|
||||||
weekdays(moment: moment$Moment): string,
|
|
||||||
weekdaysShort(moment: moment$Moment): string,
|
|
||||||
weekdaysMin(moment: moment$Moment): string,
|
|
||||||
weekdaysParse(weekDay: string): number,
|
|
||||||
longDateFormat(dateFormat: string): string,
|
|
||||||
isPM(date: string): boolean,
|
|
||||||
meridiem(hours: number, minutes: number, isLower: boolean): string,
|
|
||||||
calendar(
|
|
||||||
key:
|
|
||||||
| "sameDay"
|
|
||||||
| "nextDay"
|
|
||||||
| "lastDay"
|
|
||||||
| "nextWeek"
|
|
||||||
| "prevWeek"
|
|
||||||
| "sameElse",
|
|
||||||
moment: moment$Moment
|
|
||||||
): string,
|
|
||||||
relativeTime(
|
|
||||||
number: number,
|
|
||||||
withoutSuffix: boolean,
|
|
||||||
key: "s" | "m" | "mm" | "h" | "hh" | "d" | "dd" | "M" | "MM" | "y" | "yy",
|
|
||||||
isFuture: boolean
|
|
||||||
): string,
|
|
||||||
pastFuture(diff: any, relTime: string): string,
|
|
||||||
ordinal(number: number): string,
|
|
||||||
preparse(str: string): any,
|
|
||||||
postformat(str: string): any,
|
|
||||||
week(moment: moment$Moment): string,
|
|
||||||
invalidDate(): string,
|
|
||||||
firstDayOfWeek(): number,
|
|
||||||
firstDayOfYear(): number
|
|
||||||
}
|
|
||||||
declare class moment$MomentDuration {
|
|
||||||
humanize(suffix?: boolean): string,
|
|
||||||
milliseconds(): number,
|
|
||||||
asMilliseconds(): number,
|
|
||||||
seconds(): number,
|
|
||||||
asSeconds(): number,
|
|
||||||
minutes(): number,
|
|
||||||
asMinutes(): number,
|
|
||||||
hours(): number,
|
|
||||||
asHours(): number,
|
|
||||||
days(): number,
|
|
||||||
asDays(): number,
|
|
||||||
months(): number,
|
|
||||||
asWeeks(): number,
|
|
||||||
weeks(): number,
|
|
||||||
asMonths(): number,
|
|
||||||
years(): number,
|
|
||||||
asYears(): number,
|
|
||||||
add(value: number | moment$MomentDuration | Object, unit?: string): this,
|
|
||||||
subtract(value: number | moment$MomentDuration | Object, unit?: string): this,
|
|
||||||
as(unit: string): number,
|
|
||||||
get(unit: string): number,
|
|
||||||
toJSON(): string,
|
|
||||||
toISOString(): string,
|
|
||||||
isValid(): boolean
|
|
||||||
}
|
|
||||||
declare class moment$Moment {
|
|
||||||
static ISO_8601: string,
|
|
||||||
static (
|
|
||||||
string?: string,
|
|
||||||
format?: string | Array<string>,
|
|
||||||
strict?: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
static (
|
|
||||||
string?: string,
|
|
||||||
format?: string | Array<string>,
|
|
||||||
locale?: string,
|
|
||||||
strict?: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
static (
|
|
||||||
initDate: ?Object | number | Date | Array<number> | moment$Moment | string
|
|
||||||
): moment$Moment,
|
|
||||||
static unix(seconds: number): moment$Moment,
|
|
||||||
static utc(): moment$Moment,
|
|
||||||
static utc(number: number | Array<number>): moment$Moment,
|
|
||||||
static utc(
|
|
||||||
str: string,
|
|
||||||
str2?: string | Array<string>,
|
|
||||||
str3?: string
|
|
||||||
): moment$Moment,
|
|
||||||
static utc(moment: moment$Moment): moment$Moment,
|
|
||||||
static utc(date: Date): moment$Moment,
|
|
||||||
static parseZone(): moment$Moment,
|
|
||||||
static parseZone(rawDate: string): moment$Moment,
|
|
||||||
static parseZone(
|
|
||||||
rawDate: string,
|
|
||||||
format: string | Array<string>
|
|
||||||
): moment$Moment,
|
|
||||||
static parseZone(
|
|
||||||
rawDate: string,
|
|
||||||
format: string,
|
|
||||||
strict: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
static parseZone(
|
|
||||||
rawDate: string,
|
|
||||||
format: string,
|
|
||||||
locale: string,
|
|
||||||
strict: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
isValid(): boolean,
|
|
||||||
invalidAt(): 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
|
||||||
creationData(): moment$MomentCreationData,
|
|
||||||
millisecond(number: number): this,
|
|
||||||
milliseconds(number: number): this,
|
|
||||||
millisecond(): number,
|
|
||||||
milliseconds(): number,
|
|
||||||
second(number: number): this,
|
|
||||||
seconds(number: number): this,
|
|
||||||
second(): number,
|
|
||||||
seconds(): number,
|
|
||||||
minute(number: number): this,
|
|
||||||
minutes(number: number): this,
|
|
||||||
minute(): number,
|
|
||||||
minutes(): number,
|
|
||||||
hour(number: number): this,
|
|
||||||
hours(number: number): this,
|
|
||||||
hour(): number,
|
|
||||||
hours(): number,
|
|
||||||
date(number: number): this,
|
|
||||||
dates(number: number): this,
|
|
||||||
date(): number,
|
|
||||||
dates(): number,
|
|
||||||
day(day: number | string): this,
|
|
||||||
days(day: number | string): this,
|
|
||||||
day(): number,
|
|
||||||
days(): number,
|
|
||||||
weekday(number: number): this,
|
|
||||||
weekday(): number,
|
|
||||||
isoWeekday(number: number): this,
|
|
||||||
isoWeekday(): number,
|
|
||||||
dayOfYear(number: number): this,
|
|
||||||
dayOfYear(): number,
|
|
||||||
week(number: number): this,
|
|
||||||
weeks(number: number): this,
|
|
||||||
week(): number,
|
|
||||||
weeks(): number,
|
|
||||||
isoWeek(number: number): this,
|
|
||||||
isoWeeks(number: number): this,
|
|
||||||
isoWeek(): number,
|
|
||||||
isoWeeks(): number,
|
|
||||||
month(number: number): this,
|
|
||||||
months(number: number): this,
|
|
||||||
month(): number,
|
|
||||||
months(): number,
|
|
||||||
quarter(number: number): this,
|
|
||||||
quarter(): number,
|
|
||||||
year(number: number): this,
|
|
||||||
years(number: number): this,
|
|
||||||
year(): number,
|
|
||||||
years(): number,
|
|
||||||
weekYear(number: number): this,
|
|
||||||
weekYear(): number,
|
|
||||||
isoWeekYear(number: number): this,
|
|
||||||
isoWeekYear(): number,
|
|
||||||
weeksInYear(): number,
|
|
||||||
isoWeeksInYear(): number,
|
|
||||||
get(string: string): number,
|
|
||||||
set(unit: string, value: number): this,
|
|
||||||
set(options: { [unit: string]: number }): this,
|
|
||||||
static max(...dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
static max(dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
static min(...dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
static min(dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
add(
|
|
||||||
value: number | moment$MomentDuration | moment$Moment | Object,
|
|
||||||
unit?: string
|
|
||||||
): this,
|
|
||||||
subtract(
|
|
||||||
value: number | moment$MomentDuration | moment$Moment | string | Object,
|
|
||||||
unit?: string
|
|
||||||
): this,
|
|
||||||
startOf(unit: string): this,
|
|
||||||
endOf(unit: string): this,
|
|
||||||
local(): this,
|
|
||||||
utc(): this,
|
|
||||||
utcOffset(
|
|
||||||
offset: number | string,
|
|
||||||
keepLocalTime?: boolean,
|
|
||||||
keepMinutes?: boolean
|
|
||||||
): this,
|
|
||||||
utcOffset(): number,
|
|
||||||
format(format?: string): string,
|
|
||||||
fromNow(removeSuffix?: boolean): string,
|
|
||||||
from(
|
|
||||||
value: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
removePrefix?: boolean
|
|
||||||
): string,
|
|
||||||
toNow(removePrefix?: boolean): string,
|
|
||||||
to(
|
|
||||||
value: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
removePrefix?: boolean
|
|
||||||
): string,
|
|
||||||
calendar(refTime?: any, formats?: moment$CalendarFormats): string,
|
|
||||||
diff(
|
|
||||||
date: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
format?: string,
|
|
||||||
floating?: boolean
|
|
||||||
): number,
|
|
||||||
valueOf(): number,
|
|
||||||
unix(): number,
|
|
||||||
daysInMonth(): number,
|
|
||||||
toDate(): Date,
|
|
||||||
toArray(): Array<number>,
|
|
||||||
toJSON(): string,
|
|
||||||
toISOString(
|
|
||||||
keepOffset?: boolean
|
|
||||||
): string,
|
|
||||||
toObject(): moment$MomentObject,
|
|
||||||
isBefore(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isSame(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isAfter(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isSameOrBefore(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isSameOrAfter(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isBetween(
|
|
||||||
fromDate: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
toDate?: ?moment$Moment | string | number | Date | Array<number>,
|
|
||||||
granularity?: ?string,
|
|
||||||
inclusion?: ?string
|
|
||||||
): boolean,
|
|
||||||
isDST(): boolean,
|
|
||||||
isDSTShifted(): boolean,
|
|
||||||
isLeapYear(): boolean,
|
|
||||||
clone(): moment$Moment,
|
|
||||||
static isMoment(obj: any): boolean,
|
|
||||||
static isDate(obj: any): boolean,
|
|
||||||
static locale(locale: string, localeData?: Object): string,
|
|
||||||
static updateLocale(locale: string, localeData?: ?Object): void,
|
|
||||||
static locale(locales: Array<string>): string,
|
|
||||||
locale(locale: string, customization?: Object | null): moment$Moment,
|
|
||||||
locale(): string,
|
|
||||||
static months(): Array<string>,
|
|
||||||
static monthsShort(): Array<string>,
|
|
||||||
static weekdays(): Array<string>,
|
|
||||||
static weekdaysShort(): Array<string>,
|
|
||||||
static weekdaysMin(): Array<string>,
|
|
||||||
static months(): string,
|
|
||||||
static monthsShort(): string,
|
|
||||||
static weekdays(): string,
|
|
||||||
static weekdaysShort(): string,
|
|
||||||
static weekdaysMin(): string,
|
|
||||||
static localeData(key?: string): moment$LocaleData,
|
|
||||||
static duration(
|
|
||||||
value: number | Object | string,
|
|
||||||
unit?: string
|
|
||||||
): moment$MomentDuration,
|
|
||||||
static isDuration(obj: any): boolean,
|
|
||||||
static normalizeUnits(unit: string): string,
|
|
||||||
static invalid(object: any): moment$Moment
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "moment" {
|
|
||||||
declare module.exports: Class<moment$Moment>;
|
|
||||||
}
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
// flow-typed signature: ba35d02d668b0d0a3e04a63a6847974e
|
|
||||||
// flow-typed version: <<STUB>>/react-jss_v8.6.1/flow_v0.79.1
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is an autogenerated libdef stub for:
|
|
||||||
*
|
|
||||||
* 'react-jss'
|
|
||||||
*
|
|
||||||
* Fill this stub out by replacing all the `any` types.
|
|
||||||
*
|
|
||||||
* Once filled out, we encourage you to share your work with the
|
|
||||||
* community by sending a pull request to:
|
|
||||||
* https://github.com/flowtype/flow-typed
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare module 'react-jss' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* We include stubs for each file inside this npm package in case you need to
|
|
||||||
* require those files directly. Feel free to delete any files that aren't
|
|
||||||
* needed.
|
|
||||||
*/
|
|
||||||
declare module 'react-jss/dist/react-jss' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/dist/react-jss.min' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/compose' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/compose.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/contextTypes' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/createHoc' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/getDisplayName' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/index' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/index.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/injectSheet' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/injectSheet.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/jss' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/JssProvider' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/JssProvider.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/ns' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/propTypes' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filename aliases
|
|
||||||
declare module 'react-jss/dist/react-jss.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/dist/react-jss'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/dist/react-jss.min.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/dist/react-jss.min'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/compose.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/compose'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/compose.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/compose.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/contextTypes.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/contextTypes'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/createHoc.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/createHoc'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/getDisplayName.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/getDisplayName'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/index.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/index'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/index.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/index.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/injectSheet.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/injectSheet'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/injectSheet.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/injectSheet.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/jss.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/jss'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/JssProvider.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/JssProvider'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/JssProvider.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/JssProvider.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/ns.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/ns'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/propTypes.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/propTypes'>;
|
|
||||||
}
|
|
||||||
@@ -9,6 +9,6 @@
|
|||||||
"@scm-manager/ui-extensions": "^0.0.7"
|
"@scm-manager/ui-extensions": "^0.0.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@scm-manager/ui-bundler": "^0.0.17"
|
"@scm-manager/ui-bundler": "^0.0.19"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,8 +31,6 @@
|
|||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<!-- create test jar -->
|
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
|
||||||
@@ -54,7 +52,18 @@
|
|||||||
<strictCheck>true</strictCheck>
|
<strictCheck>true</strictCheck>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>sonia.scm.maven</groupId>
|
||||||
|
<artifactId>smp-maven-plugin</artifactId>
|
||||||
|
<extensions>true</extensions>
|
||||||
|
<configuration>
|
||||||
|
<corePlugin>true</corePlugin>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<!-- create test jar -->
|
||||||
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-jar-plugin</artifactId>
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
@@ -68,33 +77,6 @@
|
|||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
|
||||||
<groupId>com.github.sdorra</groupId>
|
|
||||||
<artifactId>buildfrontend-maven-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>link-ui-types</id>
|
|
||||||
<phase>process-sources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>install-link</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<pkg>@scm-manager/ui-types</pkg>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>link-ui-components</id>
|
|
||||||
<phase>process-sources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>install-link</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<pkg>@scm-manager/ui-components</pkg>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|||||||
@@ -641,9 +641,9 @@
|
|||||||
version "0.0.2"
|
version "0.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
||||||
|
|
||||||
"@scm-manager/ui-bundler@^0.0.17":
|
"@scm-manager/ui-bundler@^0.0.19":
|
||||||
version "0.0.17"
|
version "0.0.19"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.17.tgz#949b90ca57e4268be28fcf4975bd9622f60278bb"
|
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.19.tgz#646ab1fa1e5389fad614542215c60678fb9816ae"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core" "^7.0.0"
|
"@babel/core" "^7.0.0"
|
||||||
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
||||||
@@ -660,6 +660,7 @@
|
|||||||
browserify-css "^0.14.0"
|
browserify-css "^0.14.0"
|
||||||
colors "^1.3.1"
|
colors "^1.3.1"
|
||||||
commander "^2.17.1"
|
commander "^2.17.1"
|
||||||
|
connect-history-api-fallback "^1.5.0"
|
||||||
eslint "^5.4.0"
|
eslint "^5.4.0"
|
||||||
eslint-config-react-app "^2.1.0"
|
eslint-config-react-app "^2.1.0"
|
||||||
eslint-plugin-flowtype "^2.50.0"
|
eslint-plugin-flowtype "^2.50.0"
|
||||||
|
|||||||
@@ -23,4 +23,19 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>sonia.scm.maven</groupId>
|
||||||
|
<artifactId>smp-maven-plugin</artifactId>
|
||||||
|
<extensions>true</extensions>
|
||||||
|
<configuration>
|
||||||
|
<corePlugin>true</corePlugin>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
|
|||||||
@@ -4,5 +4,6 @@
|
|||||||
[include]
|
[include]
|
||||||
|
|
||||||
[libs]
|
[libs]
|
||||||
|
./node_modules/@scm-manager/ui-components/flow-typed
|
||||||
|
|
||||||
[options]
|
[options]
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
// flow-typed signature: cf86673cc32d185bdab1d2ea90578d37
|
|
||||||
// flow-typed version: 614bf49aa8/classnames_v2.x.x/flow_>=v0.25.x
|
|
||||||
|
|
||||||
type $npm$classnames$Classes =
|
|
||||||
| string
|
|
||||||
| { [className: string]: * }
|
|
||||||
| false
|
|
||||||
| void
|
|
||||||
| null;
|
|
||||||
|
|
||||||
declare module "classnames" {
|
|
||||||
declare module.exports: (
|
|
||||||
...classes: Array<$npm$classnames$Classes | $npm$classnames$Classes[]>
|
|
||||||
) => string;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "classnames/bind" {
|
|
||||||
declare module.exports: $Exports<"classnames">;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "classnames/dedupe" {
|
|
||||||
declare module.exports: $Exports<"classnames">;
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,331 +0,0 @@
|
|||||||
// flow-typed signature: 23b805356f90ad9384dd88489654e380
|
|
||||||
// flow-typed version: e9374c5fe9/moment_v2.3.x/flow_>=v0.25.x
|
|
||||||
|
|
||||||
type moment$MomentOptions = {
|
|
||||||
y?: number | string,
|
|
||||||
year?: number | string,
|
|
||||||
years?: number | string,
|
|
||||||
M?: number | string,
|
|
||||||
month?: number | string,
|
|
||||||
months?: number | string,
|
|
||||||
d?: number | string,
|
|
||||||
day?: number | string,
|
|
||||||
days?: number | string,
|
|
||||||
date?: number | string,
|
|
||||||
h?: number | string,
|
|
||||||
hour?: number | string,
|
|
||||||
hours?: number | string,
|
|
||||||
m?: number | string,
|
|
||||||
minute?: number | string,
|
|
||||||
minutes?: number | string,
|
|
||||||
s?: number | string,
|
|
||||||
second?: number | string,
|
|
||||||
seconds?: number | string,
|
|
||||||
ms?: number | string,
|
|
||||||
millisecond?: number | string,
|
|
||||||
milliseconds?: number | string
|
|
||||||
};
|
|
||||||
|
|
||||||
type moment$MomentObject = {
|
|
||||||
years: number,
|
|
||||||
months: number,
|
|
||||||
date: number,
|
|
||||||
hours: number,
|
|
||||||
minutes: number,
|
|
||||||
seconds: number,
|
|
||||||
milliseconds: number
|
|
||||||
};
|
|
||||||
|
|
||||||
type moment$MomentCreationData = {
|
|
||||||
input: string,
|
|
||||||
format: string,
|
|
||||||
locale: Object,
|
|
||||||
isUTC: boolean,
|
|
||||||
strict: boolean
|
|
||||||
};
|
|
||||||
|
|
||||||
type moment$CalendarFormat = string | ((moment: moment$Moment) => string);
|
|
||||||
|
|
||||||
type moment$CalendarFormats = {
|
|
||||||
sameDay?: moment$CalendarFormat,
|
|
||||||
nextDay?: moment$CalendarFormat,
|
|
||||||
nextWeek?: moment$CalendarFormat,
|
|
||||||
lastDay?: moment$CalendarFormat,
|
|
||||||
lastWeek?: moment$CalendarFormat,
|
|
||||||
sameElse?: moment$CalendarFormat
|
|
||||||
};
|
|
||||||
|
|
||||||
declare class moment$LocaleData {
|
|
||||||
months(moment: moment$Moment): string,
|
|
||||||
monthsShort(moment: moment$Moment): string,
|
|
||||||
monthsParse(month: string): number,
|
|
||||||
weekdays(moment: moment$Moment): string,
|
|
||||||
weekdaysShort(moment: moment$Moment): string,
|
|
||||||
weekdaysMin(moment: moment$Moment): string,
|
|
||||||
weekdaysParse(weekDay: string): number,
|
|
||||||
longDateFormat(dateFormat: string): string,
|
|
||||||
isPM(date: string): boolean,
|
|
||||||
meridiem(hours: number, minutes: number, isLower: boolean): string,
|
|
||||||
calendar(
|
|
||||||
key:
|
|
||||||
| "sameDay"
|
|
||||||
| "nextDay"
|
|
||||||
| "lastDay"
|
|
||||||
| "nextWeek"
|
|
||||||
| "prevWeek"
|
|
||||||
| "sameElse",
|
|
||||||
moment: moment$Moment
|
|
||||||
): string,
|
|
||||||
relativeTime(
|
|
||||||
number: number,
|
|
||||||
withoutSuffix: boolean,
|
|
||||||
key: "s" | "m" | "mm" | "h" | "hh" | "d" | "dd" | "M" | "MM" | "y" | "yy",
|
|
||||||
isFuture: boolean
|
|
||||||
): string,
|
|
||||||
pastFuture(diff: any, relTime: string): string,
|
|
||||||
ordinal(number: number): string,
|
|
||||||
preparse(str: string): any,
|
|
||||||
postformat(str: string): any,
|
|
||||||
week(moment: moment$Moment): string,
|
|
||||||
invalidDate(): string,
|
|
||||||
firstDayOfWeek(): number,
|
|
||||||
firstDayOfYear(): number
|
|
||||||
}
|
|
||||||
declare class moment$MomentDuration {
|
|
||||||
humanize(suffix?: boolean): string,
|
|
||||||
milliseconds(): number,
|
|
||||||
asMilliseconds(): number,
|
|
||||||
seconds(): number,
|
|
||||||
asSeconds(): number,
|
|
||||||
minutes(): number,
|
|
||||||
asMinutes(): number,
|
|
||||||
hours(): number,
|
|
||||||
asHours(): number,
|
|
||||||
days(): number,
|
|
||||||
asDays(): number,
|
|
||||||
months(): number,
|
|
||||||
asWeeks(): number,
|
|
||||||
weeks(): number,
|
|
||||||
asMonths(): number,
|
|
||||||
years(): number,
|
|
||||||
asYears(): number,
|
|
||||||
add(value: number | moment$MomentDuration | Object, unit?: string): this,
|
|
||||||
subtract(value: number | moment$MomentDuration | Object, unit?: string): this,
|
|
||||||
as(unit: string): number,
|
|
||||||
get(unit: string): number,
|
|
||||||
toJSON(): string,
|
|
||||||
toISOString(): string,
|
|
||||||
isValid(): boolean
|
|
||||||
}
|
|
||||||
declare class moment$Moment {
|
|
||||||
static ISO_8601: string,
|
|
||||||
static (
|
|
||||||
string?: string,
|
|
||||||
format?: string | Array<string>,
|
|
||||||
strict?: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
static (
|
|
||||||
string?: string,
|
|
||||||
format?: string | Array<string>,
|
|
||||||
locale?: string,
|
|
||||||
strict?: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
static (
|
|
||||||
initDate: ?Object | number | Date | Array<number> | moment$Moment | string
|
|
||||||
): moment$Moment,
|
|
||||||
static unix(seconds: number): moment$Moment,
|
|
||||||
static utc(): moment$Moment,
|
|
||||||
static utc(number: number | Array<number>): moment$Moment,
|
|
||||||
static utc(
|
|
||||||
str: string,
|
|
||||||
str2?: string | Array<string>,
|
|
||||||
str3?: string
|
|
||||||
): moment$Moment,
|
|
||||||
static utc(moment: moment$Moment): moment$Moment,
|
|
||||||
static utc(date: Date): moment$Moment,
|
|
||||||
static parseZone(): moment$Moment,
|
|
||||||
static parseZone(rawDate: string): moment$Moment,
|
|
||||||
static parseZone(
|
|
||||||
rawDate: string,
|
|
||||||
format: string | Array<string>
|
|
||||||
): moment$Moment,
|
|
||||||
static parseZone(
|
|
||||||
rawDate: string,
|
|
||||||
format: string,
|
|
||||||
strict: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
static parseZone(
|
|
||||||
rawDate: string,
|
|
||||||
format: string,
|
|
||||||
locale: string,
|
|
||||||
strict: boolean
|
|
||||||
): moment$Moment,
|
|
||||||
isValid(): boolean,
|
|
||||||
invalidAt(): 0 | 1 | 2 | 3 | 4 | 5 | 6,
|
|
||||||
creationData(): moment$MomentCreationData,
|
|
||||||
millisecond(number: number): this,
|
|
||||||
milliseconds(number: number): this,
|
|
||||||
millisecond(): number,
|
|
||||||
milliseconds(): number,
|
|
||||||
second(number: number): this,
|
|
||||||
seconds(number: number): this,
|
|
||||||
second(): number,
|
|
||||||
seconds(): number,
|
|
||||||
minute(number: number): this,
|
|
||||||
minutes(number: number): this,
|
|
||||||
minute(): number,
|
|
||||||
minutes(): number,
|
|
||||||
hour(number: number): this,
|
|
||||||
hours(number: number): this,
|
|
||||||
hour(): number,
|
|
||||||
hours(): number,
|
|
||||||
date(number: number): this,
|
|
||||||
dates(number: number): this,
|
|
||||||
date(): number,
|
|
||||||
dates(): number,
|
|
||||||
day(day: number | string): this,
|
|
||||||
days(day: number | string): this,
|
|
||||||
day(): number,
|
|
||||||
days(): number,
|
|
||||||
weekday(number: number): this,
|
|
||||||
weekday(): number,
|
|
||||||
isoWeekday(number: number): this,
|
|
||||||
isoWeekday(): number,
|
|
||||||
dayOfYear(number: number): this,
|
|
||||||
dayOfYear(): number,
|
|
||||||
week(number: number): this,
|
|
||||||
weeks(number: number): this,
|
|
||||||
week(): number,
|
|
||||||
weeks(): number,
|
|
||||||
isoWeek(number: number): this,
|
|
||||||
isoWeeks(number: number): this,
|
|
||||||
isoWeek(): number,
|
|
||||||
isoWeeks(): number,
|
|
||||||
month(number: number): this,
|
|
||||||
months(number: number): this,
|
|
||||||
month(): number,
|
|
||||||
months(): number,
|
|
||||||
quarter(number: number): this,
|
|
||||||
quarter(): number,
|
|
||||||
year(number: number): this,
|
|
||||||
years(number: number): this,
|
|
||||||
year(): number,
|
|
||||||
years(): number,
|
|
||||||
weekYear(number: number): this,
|
|
||||||
weekYear(): number,
|
|
||||||
isoWeekYear(number: number): this,
|
|
||||||
isoWeekYear(): number,
|
|
||||||
weeksInYear(): number,
|
|
||||||
isoWeeksInYear(): number,
|
|
||||||
get(string: string): number,
|
|
||||||
set(unit: string, value: number): this,
|
|
||||||
set(options: { [unit: string]: number }): this,
|
|
||||||
static max(...dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
static max(dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
static min(...dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
static min(dates: Array<moment$Moment>): moment$Moment,
|
|
||||||
add(
|
|
||||||
value: number | moment$MomentDuration | moment$Moment | Object,
|
|
||||||
unit?: string
|
|
||||||
): this,
|
|
||||||
subtract(
|
|
||||||
value: number | moment$MomentDuration | moment$Moment | string | Object,
|
|
||||||
unit?: string
|
|
||||||
): this,
|
|
||||||
startOf(unit: string): this,
|
|
||||||
endOf(unit: string): this,
|
|
||||||
local(): this,
|
|
||||||
utc(): this,
|
|
||||||
utcOffset(
|
|
||||||
offset: number | string,
|
|
||||||
keepLocalTime?: boolean,
|
|
||||||
keepMinutes?: boolean
|
|
||||||
): this,
|
|
||||||
utcOffset(): number,
|
|
||||||
format(format?: string): string,
|
|
||||||
fromNow(removeSuffix?: boolean): string,
|
|
||||||
from(
|
|
||||||
value: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
removePrefix?: boolean
|
|
||||||
): string,
|
|
||||||
toNow(removePrefix?: boolean): string,
|
|
||||||
to(
|
|
||||||
value: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
removePrefix?: boolean
|
|
||||||
): string,
|
|
||||||
calendar(refTime?: any, formats?: moment$CalendarFormats): string,
|
|
||||||
diff(
|
|
||||||
date: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
format?: string,
|
|
||||||
floating?: boolean
|
|
||||||
): number,
|
|
||||||
valueOf(): number,
|
|
||||||
unix(): number,
|
|
||||||
daysInMonth(): number,
|
|
||||||
toDate(): Date,
|
|
||||||
toArray(): Array<number>,
|
|
||||||
toJSON(): string,
|
|
||||||
toISOString(
|
|
||||||
keepOffset?: boolean
|
|
||||||
): string,
|
|
||||||
toObject(): moment$MomentObject,
|
|
||||||
isBefore(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isSame(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isAfter(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isSameOrBefore(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isSameOrAfter(
|
|
||||||
date?: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
units?: ?string
|
|
||||||
): boolean,
|
|
||||||
isBetween(
|
|
||||||
fromDate: moment$Moment | string | number | Date | Array<number>,
|
|
||||||
toDate?: ?moment$Moment | string | number | Date | Array<number>,
|
|
||||||
granularity?: ?string,
|
|
||||||
inclusion?: ?string
|
|
||||||
): boolean,
|
|
||||||
isDST(): boolean,
|
|
||||||
isDSTShifted(): boolean,
|
|
||||||
isLeapYear(): boolean,
|
|
||||||
clone(): moment$Moment,
|
|
||||||
static isMoment(obj: any): boolean,
|
|
||||||
static isDate(obj: any): boolean,
|
|
||||||
static locale(locale: string, localeData?: Object): string,
|
|
||||||
static updateLocale(locale: string, localeData?: ?Object): void,
|
|
||||||
static locale(locales: Array<string>): string,
|
|
||||||
locale(locale: string, customization?: Object | null): moment$Moment,
|
|
||||||
locale(): string,
|
|
||||||
static months(): Array<string>,
|
|
||||||
static monthsShort(): Array<string>,
|
|
||||||
static weekdays(): Array<string>,
|
|
||||||
static weekdaysShort(): Array<string>,
|
|
||||||
static weekdaysMin(): Array<string>,
|
|
||||||
static months(): string,
|
|
||||||
static monthsShort(): string,
|
|
||||||
static weekdays(): string,
|
|
||||||
static weekdaysShort(): string,
|
|
||||||
static weekdaysMin(): string,
|
|
||||||
static localeData(key?: string): moment$LocaleData,
|
|
||||||
static duration(
|
|
||||||
value: number | Object | string,
|
|
||||||
unit?: string
|
|
||||||
): moment$MomentDuration,
|
|
||||||
static isDuration(obj: any): boolean,
|
|
||||||
static normalizeUnits(unit: string): string,
|
|
||||||
static invalid(object: any): moment$Moment
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "moment" {
|
|
||||||
declare module.exports: Class<moment$Moment>;
|
|
||||||
}
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
// flow-typed signature: ba35d02d668b0d0a3e04a63a6847974e
|
|
||||||
// flow-typed version: <<STUB>>/react-jss_v8.6.1/flow_v0.79.1
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is an autogenerated libdef stub for:
|
|
||||||
*
|
|
||||||
* 'react-jss'
|
|
||||||
*
|
|
||||||
* Fill this stub out by replacing all the `any` types.
|
|
||||||
*
|
|
||||||
* Once filled out, we encourage you to share your work with the
|
|
||||||
* community by sending a pull request to:
|
|
||||||
* https://github.com/flowtype/flow-typed
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare module 'react-jss' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* We include stubs for each file inside this npm package in case you need to
|
|
||||||
* require those files directly. Feel free to delete any files that aren't
|
|
||||||
* needed.
|
|
||||||
*/
|
|
||||||
declare module 'react-jss/dist/react-jss' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/dist/react-jss.min' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/compose' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/compose.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/contextTypes' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/createHoc' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/getDisplayName' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/index' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/index.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/injectSheet' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/injectSheet.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/jss' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/JssProvider' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/JssProvider.test' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/ns' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module 'react-jss/lib/propTypes' {
|
|
||||||
declare module.exports: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filename aliases
|
|
||||||
declare module 'react-jss/dist/react-jss.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/dist/react-jss'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/dist/react-jss.min.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/dist/react-jss.min'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/compose.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/compose'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/compose.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/compose.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/contextTypes.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/contextTypes'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/createHoc.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/createHoc'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/getDisplayName.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/getDisplayName'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/index.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/index'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/index.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/index.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/injectSheet.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/injectSheet'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/injectSheet.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/injectSheet.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/jss.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/jss'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/JssProvider.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/JssProvider'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/JssProvider.test.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/JssProvider.test'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/ns.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/ns'>;
|
|
||||||
}
|
|
||||||
declare module 'react-jss/lib/propTypes.js' {
|
|
||||||
declare module.exports: $Exports<'react-jss/lib/propTypes'>;
|
|
||||||
}
|
|
||||||
@@ -9,6 +9,6 @@
|
|||||||
"@scm-manager/ui-extensions": "^0.0.7"
|
"@scm-manager/ui-extensions": "^0.0.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@scm-manager/ui-bundler": "^0.0.17"
|
"@scm-manager/ui-bundler": "^0.0.19"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,11 +37,19 @@
|
|||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<!-- create test jar -->
|
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>sonia.scm.maven</groupId>
|
||||||
|
<artifactId>smp-maven-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<corePlugin>true</corePlugin>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<!-- create test jar -->
|
||||||
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-jar-plugin</artifactId>
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
@@ -55,34 +63,6 @@
|
|||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
|
||||||
<groupId>com.github.sdorra</groupId>
|
|
||||||
<artifactId>buildfrontend-maven-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>link-ui-types</id>
|
|
||||||
<phase>process-sources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>install-link</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<pkg>@scm-manager/ui-types</pkg>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>link-ui-components</id>
|
|
||||||
<phase>process-sources</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>install-link</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<pkg>@scm-manager/ui-components</pkg>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|||||||
@@ -641,9 +641,9 @@
|
|||||||
version "0.0.2"
|
version "0.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
||||||
|
|
||||||
"@scm-manager/ui-bundler@^0.0.17":
|
"@scm-manager/ui-bundler@^0.0.19":
|
||||||
version "0.0.17"
|
version "0.0.19"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.17.tgz#949b90ca57e4268be28fcf4975bd9622f60278bb"
|
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.19.tgz#646ab1fa1e5389fad614542215c60678fb9816ae"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core" "^7.0.0"
|
"@babel/core" "^7.0.0"
|
||||||
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
||||||
|
|||||||
95
scm-ui-components/packages/ui-components/flow-typed/npm/react-i18next_v7.x.x.js
vendored
Normal file
95
scm-ui-components/packages/ui-components/flow-typed/npm/react-i18next_v7.x.x.js
vendored
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
// flow-typed signature: 65d42f62f8de603dcc631ea5a6b00580
|
||||||
|
// flow-typed version: f3f13164e0/react-i18next_v7.x.x/flow_>=v0.64.x
|
||||||
|
|
||||||
|
declare module "react-i18next" {
|
||||||
|
declare type TFunction = (key?: ?string, data?: ?Object) => string;
|
||||||
|
|
||||||
|
declare type TranslatorProps = {|
|
||||||
|
t: TFunction,
|
||||||
|
i18nLoadedAt: Date,
|
||||||
|
i18n: Object
|
||||||
|
|};
|
||||||
|
|
||||||
|
declare type TranslatorPropsVoid = {
|
||||||
|
t: TFunction | void,
|
||||||
|
i18nLoadedAt: Date | void,
|
||||||
|
i18n: Object | void
|
||||||
|
};
|
||||||
|
|
||||||
|
declare type Translator<P: {}, Component: React$ComponentType<P>> = (
|
||||||
|
WrappedComponent: Component
|
||||||
|
) => React$ComponentType<
|
||||||
|
$Diff<React$ElementConfig<Component>, TranslatorPropsVoid>
|
||||||
|
>;
|
||||||
|
|
||||||
|
declare type TranslateOptions = $Shape<{
|
||||||
|
wait: boolean,
|
||||||
|
nsMode: "default" | "fallback",
|
||||||
|
bindi18n: false | string,
|
||||||
|
bindStore: false | string,
|
||||||
|
withRef: boolean,
|
||||||
|
translateFuncName: string,
|
||||||
|
i18n: Object,
|
||||||
|
usePureComponent: boolean
|
||||||
|
}>;
|
||||||
|
|
||||||
|
declare function translate<P: {}, Component: React$ComponentType<P>>(
|
||||||
|
namespaces?: | string
|
||||||
|
| Array<string>
|
||||||
|
| (($Diff<P, TranslatorPropsVoid>) => string | Array<string>),
|
||||||
|
options?: TranslateOptions
|
||||||
|
): Translator<P, Component>;
|
||||||
|
|
||||||
|
declare type I18nProps = {
|
||||||
|
i18n?: Object,
|
||||||
|
ns?: string | Array<string>,
|
||||||
|
children: (t: TFunction, { i18n: Object, t: TFunction }) => React$Node,
|
||||||
|
initialI18nStore?: Object,
|
||||||
|
initialLanguage?: string
|
||||||
|
};
|
||||||
|
declare var I18n: React$ComponentType<I18nProps>;
|
||||||
|
|
||||||
|
declare type InterpolateProps = {
|
||||||
|
className?: string,
|
||||||
|
dangerouslySetInnerHTMLPartElement?: string,
|
||||||
|
i18n?: Object,
|
||||||
|
i18nKey?: string,
|
||||||
|
options?: Object,
|
||||||
|
parent?: string,
|
||||||
|
style?: Object,
|
||||||
|
t?: TFunction,
|
||||||
|
useDangerouslySetInnerHTML?: boolean
|
||||||
|
};
|
||||||
|
declare var Interpolate: React$ComponentType<InterpolateProps>;
|
||||||
|
|
||||||
|
declare type TransProps = {
|
||||||
|
count?: number,
|
||||||
|
parent?: string,
|
||||||
|
i18n?: Object,
|
||||||
|
i18nKey?: string,
|
||||||
|
t?: TFunction
|
||||||
|
};
|
||||||
|
declare var Trans: React$ComponentType<TransProps>;
|
||||||
|
|
||||||
|
declare type ProviderProps = { i18n: Object, children: React$Element<*> };
|
||||||
|
declare var I18nextProvider: React$ComponentType<ProviderProps>;
|
||||||
|
|
||||||
|
declare type NamespacesProps = {
|
||||||
|
components: Array<React$ComponentType<*>>,
|
||||||
|
i18n: { loadNamespaces: Function }
|
||||||
|
};
|
||||||
|
declare function loadNamespaces(props: NamespacesProps): Promise<void>;
|
||||||
|
|
||||||
|
declare var reactI18nextModule: {
|
||||||
|
type: "3rdParty",
|
||||||
|
init: (instance: Object) => void
|
||||||
|
};
|
||||||
|
|
||||||
|
declare function setDefaults(options: TranslateOptions): void;
|
||||||
|
|
||||||
|
declare function getDefaults(): TranslateOptions;
|
||||||
|
|
||||||
|
declare function getI18n(): Object;
|
||||||
|
|
||||||
|
declare function setI18n(instance: Object): void;
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
"eslint-fix": "eslint src --fix"
|
"eslint-fix": "eslint src --fix"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@scm-manager/ui-bundler": "^0.0.17",
|
"@scm-manager/ui-bundler": "^0.0.19",
|
||||||
"create-index": "^2.3.0",
|
"create-index": "^2.3.0",
|
||||||
"enzyme": "^3.5.0",
|
"enzyme": "^3.5.0",
|
||||||
"enzyme-adapter-react-16": "^1.3.1",
|
"enzyme-adapter-react-16": "^1.3.1",
|
||||||
|
|||||||
@@ -641,9 +641,9 @@
|
|||||||
version "0.0.2"
|
version "0.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
||||||
|
|
||||||
"@scm-manager/ui-bundler@^0.0.17":
|
"@scm-manager/ui-bundler@^0.0.19":
|
||||||
version "0.0.17"
|
version "0.0.19"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.17.tgz#949b90ca57e4268be28fcf4975bd9622f60278bb"
|
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.19.tgz#646ab1fa1e5389fad614542215c60678fb9816ae"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core" "^7.0.0"
|
"@babel/core" "^7.0.0"
|
||||||
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
"check": "flow check"
|
"check": "flow check"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@scm-manager/ui-bundler": "^0.0.17"
|
"@scm-manager/ui-bundler": "^0.0.19"
|
||||||
},
|
},
|
||||||
"browserify": {
|
"browserify": {
|
||||||
"transform": [
|
"transform": [
|
||||||
|
|||||||
@@ -707,9 +707,9 @@
|
|||||||
version "0.0.2"
|
version "0.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
||||||
|
|
||||||
"@scm-manager/ui-bundler@^0.0.17":
|
"@scm-manager/ui-bundler@^0.0.19":
|
||||||
version "0.0.17"
|
version "0.0.19"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.17.tgz#949b90ca57e4268be28fcf4975bd9622f60278bb"
|
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.19.tgz#646ab1fa1e5389fad614542215c60678fb9816ae"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core" "^7.0.0"
|
"@babel/core" "^7.0.0"
|
||||||
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
"pre-commit": "jest && flow && eslint src"
|
"pre-commit": "jest && flow && eslint src"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@scm-manager/ui-bundler": "^0.0.17",
|
"@scm-manager/ui-bundler": "^0.0.19",
|
||||||
"copyfiles": "^2.0.0",
|
"copyfiles": "^2.0.0",
|
||||||
"enzyme": "^3.3.0",
|
"enzyme": "^3.3.0",
|
||||||
"enzyme-adapter-react-16": "^1.1.1",
|
"enzyme-adapter-react-16": "^1.1.1",
|
||||||
|
|||||||
@@ -36,5 +36,9 @@
|
|||||||
</script>
|
</script>
|
||||||
<script src="{{ contextPath }}/vendor.bundle.js"></script>
|
<script src="{{ contextPath }}/vendor.bundle.js"></script>
|
||||||
<script src="{{ contextPath }}/scm-ui.bundle.js"></script>
|
<script src="{{ contextPath }}/scm-ui.bundle.js"></script>
|
||||||
|
|
||||||
|
{{#liveReloadURL}}
|
||||||
|
<script src="{{liveReloadURL}}"></script>
|
||||||
|
{{/liveReloadURL}}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -645,9 +645,9 @@
|
|||||||
version "0.0.2"
|
version "0.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
resolved "https://registry.yarnpkg.com/@scm-manager/eslint-config/-/eslint-config-0.0.2.tgz#94cc8c3fb4f51f870b235893dc134fc6c423ae85"
|
||||||
|
|
||||||
"@scm-manager/ui-bundler@^0.0.17":
|
"@scm-manager/ui-bundler@^0.0.19":
|
||||||
version "0.0.17"
|
version "0.0.19"
|
||||||
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.17.tgz#949b90ca57e4268be28fcf4975bd9622f60278bb"
|
resolved "https://registry.yarnpkg.com/@scm-manager/ui-bundler/-/ui-bundler-0.0.19.tgz#646ab1fa1e5389fad614542215c60678fb9816ae"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core" "^7.0.0"
|
"@babel/core" "^7.0.0"
|
||||||
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
||||||
|
|||||||
20
scm-webapp/src/main/java/sonia/scm/ResteasyModule.java
Normal file
20
scm-webapp/src/main/java/sonia/scm/ResteasyModule.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package sonia.scm;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import com.google.inject.servlet.ServletModule;
|
||||||
|
import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
|
||||||
|
import org.jboss.resteasy.plugins.server.servlet.ResteasyContextParameters;
|
||||||
|
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ResteasyModule extends ServletModule {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void configureServlets() {
|
||||||
|
bind(HttpServletDispatcher.class).in(Singleton.class);
|
||||||
|
|
||||||
|
Map<String, String> initParams = ImmutableMap.of(ResteasyContextParameters.RESTEASY_SERVLET_MAPPING_PREFIX, "/api");
|
||||||
|
serve("/api/*").with(HttpServletDispatcher.class, initParams);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -126,6 +126,7 @@ public class ScmContextListener extends GuiceResteasyBootstrapServletContextList
|
|||||||
ClassOverrides overrides = ClassOverrides.findOverrides(pluginLoader.getUberClassLoader());
|
ClassOverrides overrides = ClassOverrides.findOverrides(pluginLoader.getUberClassLoader());
|
||||||
List<Module> moduleList = Lists.newArrayList();
|
List<Module> moduleList = Lists.newArrayList();
|
||||||
|
|
||||||
|
moduleList.add(new ResteasyModule());
|
||||||
moduleList.add(new ScmInitializerModule());
|
moduleList.add(new ScmInitializerModule());
|
||||||
moduleList.add(new ScmEventBusModule());
|
moduleList.add(new ScmEventBusModule());
|
||||||
moduleList.add(new EagerSingletonModule());
|
moduleList.add(new EagerSingletonModule());
|
||||||
|
|||||||
@@ -57,5 +57,9 @@ public class TemplatingPushStateDispatcher implements PushStateDispatcher {
|
|||||||
return request.getContextPath();
|
return request.getContextPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getLiveReloadURL() {
|
||||||
|
return System.getProperty("livereload.url");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,22 +34,19 @@ package sonia.scm.boot;
|
|||||||
//~--- non-JDK imports --------------------------------------------------------
|
//~--- non-JDK imports --------------------------------------------------------
|
||||||
|
|
||||||
import com.github.legman.Subscribe;
|
import com.github.legman.Subscribe;
|
||||||
|
|
||||||
import com.google.inject.servlet.GuiceFilter;
|
import com.google.inject.servlet.GuiceFilter;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import sonia.scm.SCMContext;
|
import sonia.scm.SCMContext;
|
||||||
import sonia.scm.Stage;
|
import sonia.scm.Stage;
|
||||||
import sonia.scm.event.ScmEventBus;
|
import sonia.scm.event.ScmEventBus;
|
||||||
|
|
||||||
//~--- JDK imports ------------------------------------------------------------
|
|
||||||
|
|
||||||
import javax.servlet.FilterConfig;
|
import javax.servlet.FilterConfig;
|
||||||
import javax.servlet.ServletContextEvent;
|
import javax.servlet.ServletContextEvent;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
|
|
||||||
|
//~--- JDK imports ------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Sebastian Sdorra
|
* @author Sebastian Sdorra
|
||||||
@@ -65,6 +62,8 @@ public class BootstrapContextFilter extends GuiceFilter
|
|||||||
|
|
||||||
//~--- methods --------------------------------------------------------------
|
//~--- methods --------------------------------------------------------------
|
||||||
|
|
||||||
|
private final BootstrapContextListener listener = new BootstrapContextListener();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restart the whole webapp context.
|
* Restart the whole webapp context.
|
||||||
*
|
*
|
||||||
@@ -85,29 +84,20 @@ public class BootstrapContextFilter extends GuiceFilter
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
logger.warn("destroy filter pipeline, because of a received restart event");
|
||||||
logger.warn(
|
|
||||||
"destroy filter pipeline, because of a received restart event");
|
|
||||||
destroy();
|
destroy();
|
||||||
logger.warn(
|
|
||||||
"reinitialize filter pipeline, because of a received restart event");
|
logger.warn("reinitialize filter pipeline, because of a received restart event");
|
||||||
super.init(filterConfig);
|
initGuice();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Method description
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param filterConfig
|
|
||||||
*
|
|
||||||
* @throws ServletException
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public void init(FilterConfig filterConfig) throws ServletException
|
public void init(FilterConfig filterConfig) throws ServletException
|
||||||
{
|
{
|
||||||
this.filterConfig = filterConfig;
|
this.filterConfig = filterConfig;
|
||||||
super.init(filterConfig);
|
|
||||||
|
initGuice();
|
||||||
|
|
||||||
if (SCMContext.getContext().getStage() == Stage.DEVELOPMENT)
|
if (SCMContext.getContext().getStage() == Stage.DEVELOPMENT)
|
||||||
{
|
{
|
||||||
@@ -116,6 +106,19 @@ public class BootstrapContextFilter extends GuiceFilter
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void initGuice() throws ServletException {
|
||||||
|
super.init(filterConfig);
|
||||||
|
|
||||||
|
listener.contextInitialized(new ServletContextEvent(filterConfig.getServletContext()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroy() {
|
||||||
|
super.destroy();
|
||||||
|
listener.contextDestroyed(new ServletContextEvent(filterConfig.getServletContext()));
|
||||||
|
ServletContextCleaner.cleanup(filterConfig.getServletContext());
|
||||||
|
}
|
||||||
|
|
||||||
//~--- fields ---------------------------------------------------------------
|
//~--- fields ---------------------------------------------------------------
|
||||||
|
|
||||||
/** Field description */
|
/** Field description */
|
||||||
|
|||||||
@@ -148,13 +148,15 @@ public class BootstrapContextListener implements ServletContextListener
|
|||||||
{
|
{
|
||||||
context = sce.getServletContext();
|
context = sce.getServletContext();
|
||||||
|
|
||||||
PluginIndex index = readCorePluginIndex(context);
|
|
||||||
|
|
||||||
File pluginDirectory = getPluginDirectory();
|
File pluginDirectory = getPluginDirectory();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
extractCorePlugins(context, pluginDirectory, index);
|
if (!isCorePluginExtractionDisabled()) {
|
||||||
|
extractCorePlugins(context, pluginDirectory);
|
||||||
|
} else {
|
||||||
|
logger.info("core plugin extraction is disabled");
|
||||||
|
}
|
||||||
|
|
||||||
ClassLoader cl =
|
ClassLoader cl =
|
||||||
ClassLoaders.getContextClassLoader(BootstrapContextListener.class);
|
ClassLoaders.getContextClassLoader(BootstrapContextListener.class);
|
||||||
@@ -181,31 +183,8 @@ public class BootstrapContextListener implements ServletContextListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private boolean isCorePluginExtractionDisabled() {
|
||||||
* Restart the whole webapp context.
|
return Boolean.getBoolean("sonia.scm.boot.disable-core-plugin-extraction");
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param event restart event
|
|
||||||
*/
|
|
||||||
@Subscribe
|
|
||||||
public void handleRestartEvent(RestartEvent event)
|
|
||||||
{
|
|
||||||
logger.warn("received restart event from {} with reason: {}",
|
|
||||||
event.getCause(), event.getReason());
|
|
||||||
|
|
||||||
if (context == null)
|
|
||||||
{
|
|
||||||
logger.error("context is null, scm-manager is not initialized");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ServletContextEvent sce = new ServletContextEvent(context);
|
|
||||||
|
|
||||||
logger.warn("destroy context, because of a received restart event");
|
|
||||||
contextDestroyed(sce);
|
|
||||||
logger.warn("reinitialize context, because of a received restart event");
|
|
||||||
contextInitialized(sce);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -214,7 +193,6 @@ public class BootstrapContextListener implements ServletContextListener
|
|||||||
*
|
*
|
||||||
* @param context
|
* @param context
|
||||||
* @param pluginDirectory
|
* @param pluginDirectory
|
||||||
* @param name
|
|
||||||
* @param entry
|
* @param entry
|
||||||
*
|
*
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
@@ -269,17 +247,15 @@ public class BootstrapContextListener implements ServletContextListener
|
|||||||
*
|
*
|
||||||
* @param context
|
* @param context
|
||||||
* @param pluginDirectory
|
* @param pluginDirectory
|
||||||
* @param lines
|
|
||||||
* @param index
|
|
||||||
*
|
*
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
private void extractCorePlugins(ServletContext context, File pluginDirectory,
|
private void extractCorePlugins(ServletContext context, File pluginDirectory) throws IOException
|
||||||
PluginIndex index)
|
|
||||||
throws IOException
|
|
||||||
{
|
{
|
||||||
IOUtil.mkdirs(pluginDirectory);
|
IOUtil.mkdirs(pluginDirectory);
|
||||||
|
|
||||||
|
PluginIndex index = readCorePluginIndex(context);
|
||||||
|
|
||||||
for (PluginIndexEntry entry : index)
|
for (PluginIndexEntry entry : index)
|
||||||
{
|
{
|
||||||
extractCorePlugin(context, pluginDirectory, entry);
|
extractCorePlugin(context, pluginDirectory, entry);
|
||||||
|
|||||||
97
scm-webapp/src/main/java/sonia/scm/boot/RestartServlet.java
Normal file
97
scm-webapp/src/main/java/sonia/scm/boot/RestartServlet.java
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
package sonia.scm.boot;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import sonia.scm.Priority;
|
||||||
|
import sonia.scm.SCMContext;
|
||||||
|
import sonia.scm.Stage;
|
||||||
|
import sonia.scm.event.ScmEventBus;
|
||||||
|
import sonia.scm.filter.WebElement;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This servlet sends a {@link RestartEvent} to the {@link ScmEventBus} which causes scm-manager to restart the context.
|
||||||
|
* The {@link RestartServlet} can be used for reloading java code or for installing plugins without a complete restart.
|
||||||
|
* At the moment the Servlet accepts only request, if scm-manager was started in the {@link Stage#DEVELOPMENT} stage.
|
||||||
|
*
|
||||||
|
* @since 2.0.0
|
||||||
|
*/
|
||||||
|
@Priority(0)
|
||||||
|
@WebElement("/restart")
|
||||||
|
public class RestartServlet extends HttpServlet {
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(RestartServlet.class);
|
||||||
|
|
||||||
|
private final ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
private final AtomicBoolean restarting = new AtomicBoolean();
|
||||||
|
|
||||||
|
private final ScmEventBus eventBus;
|
||||||
|
private final Stage stage;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public RestartServlet() {
|
||||||
|
this(ScmEventBus.getInstance(), SCMContext.getContext().getStage());
|
||||||
|
}
|
||||||
|
|
||||||
|
RestartServlet(ScmEventBus eventBus, Stage stage) {
|
||||||
|
this.eventBus = eventBus;
|
||||||
|
this.stage = stage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
|
||||||
|
LOG.info("received sendRestartEvent request");
|
||||||
|
|
||||||
|
if (isRestartAllowed()) {
|
||||||
|
|
||||||
|
try (InputStream requestInput = req.getInputStream()) {
|
||||||
|
Reason reason = objectMapper.readValue(requestInput, Reason.class);
|
||||||
|
sendRestartEvent(resp, reason);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
LOG.warn("failed to trigger sendRestartEvent event", ex);
|
||||||
|
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
LOG.debug("received restart event in non development stage");
|
||||||
|
resp.setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isRestartAllowed() {
|
||||||
|
return stage == Stage.DEVELOPMENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendRestartEvent(HttpServletResponse response, Reason reason) {
|
||||||
|
if ( restarting.compareAndSet(false, true) ) {
|
||||||
|
LOG.info("trigger sendRestartEvent, because of {}", reason.getMessage());
|
||||||
|
eventBus.post(new RestartEvent(RestartServlet.class, reason.getMessage()));
|
||||||
|
|
||||||
|
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||||
|
} else {
|
||||||
|
LOG.warn("scm-manager restarts already");
|
||||||
|
response.setStatus(HttpServletResponse.SC_CONFLICT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Reason {
|
||||||
|
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
public void setMessage(String message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMessage() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
package sonia.scm.boot;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import javax.servlet.ServletContext;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove cached resources from {@link ServletContext} to allow a clean restart of scm-manager without stale or
|
||||||
|
* duplicated data.
|
||||||
|
*
|
||||||
|
* @since 2.0.0
|
||||||
|
*/
|
||||||
|
final class ServletContextCleaner {
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(ServletContextCleaner.class);
|
||||||
|
|
||||||
|
private static final Set<String> REMOVE_PREFIX = ImmutableSet.of(
|
||||||
|
"org.jboss.resteasy",
|
||||||
|
"resteasy",
|
||||||
|
"org.apache.shiro",
|
||||||
|
"sonia.scm"
|
||||||
|
);
|
||||||
|
|
||||||
|
private ServletContextCleaner() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove cached attributes from {@link ServletContext}.
|
||||||
|
*
|
||||||
|
* @param servletContext servlet context
|
||||||
|
*/
|
||||||
|
static void cleanup(ServletContext servletContext) {
|
||||||
|
LOG.info("remove cached attributes from context");
|
||||||
|
|
||||||
|
Enumeration<String> attributeNames = servletContext.getAttributeNames();
|
||||||
|
while( attributeNames.hasMoreElements()) {
|
||||||
|
String name = attributeNames.nextElement();
|
||||||
|
if (shouldRemove(name)) {
|
||||||
|
LOG.info("remove attribute {} from servlet context", name);
|
||||||
|
servletContext.removeAttribute(name);
|
||||||
|
} else {
|
||||||
|
LOG.info("keep attribute {} in servlet context", name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean shouldRemove(String name) {
|
||||||
|
for (String prefix : REMOVE_PREFIX) {
|
||||||
|
if (name.startsWith(prefix)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -41,6 +41,8 @@ import com.google.common.collect.ImmutableList;
|
|||||||
import com.google.common.collect.ImmutableList.Builder;
|
import com.google.common.collect.ImmutableList.Builder;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import sonia.scm.SCMContext;
|
||||||
|
import sonia.scm.Stage;
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContext;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
@@ -69,19 +71,21 @@ public class DefaultUberWebResourceLoader implements UberWebResourceLoader
|
|||||||
|
|
||||||
//~--- constructors ---------------------------------------------------------
|
//~--- constructors ---------------------------------------------------------
|
||||||
|
|
||||||
/**
|
public DefaultUberWebResourceLoader(ServletContext servletContext, Iterable<PluginWrapper> plugins) {
|
||||||
* Constructs ...
|
this(servletContext, plugins, SCMContext.getContext().getStage());
|
||||||
*
|
}
|
||||||
*
|
|
||||||
* @param servletContext
|
public DefaultUberWebResourceLoader(ServletContext servletContext, Iterable<PluginWrapper> plugins, Stage stage) {
|
||||||
* @param plugins
|
|
||||||
*/
|
|
||||||
public DefaultUberWebResourceLoader(ServletContext servletContext,
|
|
||||||
Iterable<PluginWrapper> plugins)
|
|
||||||
{
|
|
||||||
this.servletContext = servletContext;
|
this.servletContext = servletContext;
|
||||||
this.plugins = plugins;
|
this.plugins = plugins;
|
||||||
this.cache = CacheBuilder.newBuilder().build();
|
this.cache = createCache(stage);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Cache<String, URL> createCache(Stage stage) {
|
||||||
|
if (stage == Stage.DEVELOPMENT) {
|
||||||
|
return CacheBuilder.newBuilder().maximumSize(0).build(); // Disable caching
|
||||||
|
}
|
||||||
|
return CacheBuilder.newBuilder().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
//~--- get methods ----------------------------------------------------------
|
//~--- get methods ----------------------------------------------------------
|
||||||
@@ -97,7 +101,7 @@ public class DefaultUberWebResourceLoader implements UberWebResourceLoader
|
|||||||
@Override
|
@Override
|
||||||
public URL getResource(String path)
|
public URL getResource(String path)
|
||||||
{
|
{
|
||||||
URL resource = cache.getIfPresent(path);
|
URL resource = getFromCache(path);
|
||||||
|
|
||||||
if (resource == null)
|
if (resource == null)
|
||||||
{
|
{
|
||||||
@@ -105,7 +109,7 @@ public class DefaultUberWebResourceLoader implements UberWebResourceLoader
|
|||||||
|
|
||||||
if (resource != null)
|
if (resource != null)
|
||||||
{
|
{
|
||||||
cache.put(path, resource);
|
addToCache(path, resource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -116,6 +120,14 @@ public class DefaultUberWebResourceLoader implements UberWebResourceLoader
|
|||||||
return resource;
|
return resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private URL getFromCache(String path) {
|
||||||
|
return cache.getIfPresent(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addToCache(String path, URL url) {
|
||||||
|
cache.put(path, url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method description
|
* Method description
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -65,9 +65,6 @@
|
|||||||
<logger name="sonia.scm.event.LegmanScmEventBus" level="DEBUG" />
|
<logger name="sonia.scm.event.LegmanScmEventBus" level="DEBUG" />
|
||||||
<logger name="sonia.scm.plugin.ext.DefaultAnnotationScanner" level="INFO" />
|
<logger name="sonia.scm.plugin.ext.DefaultAnnotationScanner" level="INFO" />
|
||||||
<logger name="sonia.scm.security.ConfigurableLoginAttemptHandler" level="DEBUG" />
|
<logger name="sonia.scm.security.ConfigurableLoginAttemptHandler" level="DEBUG" />
|
||||||
|
|
||||||
<!-- event bus -->
|
|
||||||
<logger name="sonia.scm.event.LegmanScmEventBus" level="INFO" />
|
|
||||||
|
|
||||||
<!-- cgi -->
|
<!-- cgi -->
|
||||||
<logger name="sonia.scm.web.cgi.DefaultCGIExecutor" level="DEBUG" />
|
<logger name="sonia.scm.web.cgi.DefaultCGIExecutor" level="DEBUG" />
|
||||||
@@ -93,7 +90,9 @@
|
|||||||
<logger name="net.sf.ehcache" level="DEBUG" />
|
<logger name="net.sf.ehcache" level="DEBUG" />
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<logger name="org.jboss.resteasy" level="DEBUG" />
|
<logger name="org.jboss.resteasy" level="INFO" />
|
||||||
|
|
||||||
|
<logger name="sonia.scm.boot.RestartServlet" level="TRACE" />
|
||||||
|
|
||||||
<root level="WARN">
|
<root level="WARN">
|
||||||
<appender-ref ref="STDOUT" />
|
<appender-ref ref="STDOUT" />
|
||||||
|
|||||||
@@ -41,10 +41,6 @@
|
|||||||
|
|
||||||
<!-- bootstraping -->
|
<!-- bootstraping -->
|
||||||
|
|
||||||
<listener>
|
|
||||||
<listener-class>sonia.scm.boot.BootstrapContextListener</listener-class>
|
|
||||||
</listener>
|
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<filter-name>BootstrapFilter</filter-name>
|
<filter-name>BootstrapFilter</filter-name>
|
||||||
<filter-class>sonia.scm.boot.BootstrapContextFilter</filter-class>
|
<filter-class>sonia.scm.boot.BootstrapContextFilter</filter-class>
|
||||||
@@ -55,25 +51,6 @@
|
|||||||
<url-pattern>/*</url-pattern>
|
<url-pattern>/*</url-pattern>
|
||||||
</filter-mapping>
|
</filter-mapping>
|
||||||
|
|
||||||
<!-- rest -->
|
|
||||||
|
|
||||||
<context-param>
|
|
||||||
<param-name>resteasy.servlet.mapping.prefix</param-name>
|
|
||||||
<param-value>/api</param-value>
|
|
||||||
</context-param>
|
|
||||||
|
|
||||||
<servlet>
|
|
||||||
<servlet-name>Resteasy</servlet-name>
|
|
||||||
<servlet-class>
|
|
||||||
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
|
|
||||||
</servlet-class>
|
|
||||||
</servlet>
|
|
||||||
|
|
||||||
<servlet-mapping>
|
|
||||||
<servlet-name>Resteasy</servlet-name>
|
|
||||||
<url-pattern>/api/*</url-pattern>
|
|
||||||
</servlet-mapping>
|
|
||||||
|
|
||||||
<!-- capture sessions -->
|
<!-- capture sessions -->
|
||||||
<!--
|
<!--
|
||||||
TODO remove, we need no longer a session
|
TODO remove, we need no longer a session
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import java.io.StringWriter;
|
|||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -45,6 +46,23 @@ public class TemplatingPushStateDispatcherTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDispatch() throws IOException {
|
public void testDispatch() throws IOException {
|
||||||
|
TemplatingPushStateDispatcher.IndexHtmlModel model = dispatch();
|
||||||
|
assertEquals("/scm", model.getContextPath());
|
||||||
|
assertNull(model.getLiveReloadURL());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDispatchWithLiveReloadURL() throws IOException {
|
||||||
|
System.setProperty("livereload.url", "/livereload.js");
|
||||||
|
try {
|
||||||
|
TemplatingPushStateDispatcher.IndexHtmlModel model = dispatch();
|
||||||
|
assertEquals("/livereload.js", model.getLiveReloadURL());
|
||||||
|
} finally {
|
||||||
|
System.clearProperty("livereload.url");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private TemplatingPushStateDispatcher.IndexHtmlModel dispatch() throws IOException {
|
||||||
when(request.getContextPath()).thenReturn("/scm");
|
when(request.getContextPath()).thenReturn("/scm");
|
||||||
when(templateEngine.getTemplate(TemplatingPushStateDispatcher.TEMPLATE)).thenReturn(template);
|
when(templateEngine.getTemplate(TemplatingPushStateDispatcher.TEMPLATE)).thenReturn(template);
|
||||||
|
|
||||||
@@ -59,8 +77,7 @@ public class TemplatingPushStateDispatcherTest {
|
|||||||
|
|
||||||
verify(template).execute(any(Writer.class), captor.capture());
|
verify(template).execute(any(Writer.class), captor.capture());
|
||||||
|
|
||||||
TemplatingPushStateDispatcher.IndexHtmlModel model = (TemplatingPushStateDispatcher.IndexHtmlModel) captor.getValue();
|
return (TemplatingPushStateDispatcher.IndexHtmlModel) captor.getValue();
|
||||||
assertEquals("/scm", model.getContextPath());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
133
scm-webapp/src/test/java/sonia/scm/boot/RestartServletTest.java
Normal file
133
scm-webapp/src/test/java/sonia/scm/boot/RestartServletTest.java
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
package sonia.scm.boot;
|
||||||
|
|
||||||
|
import com.github.legman.Subscribe;
|
||||||
|
import com.google.common.base.Charsets;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
import sonia.scm.Stage;
|
||||||
|
import sonia.scm.event.ScmEventBus;
|
||||||
|
import sonia.scm.event.ScmTestEventBus;
|
||||||
|
|
||||||
|
import javax.servlet.ServletInputStream;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
|
public class RestartServletTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private HttpServletRequest request;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private HttpServletResponse response;
|
||||||
|
|
||||||
|
private RestartServlet restartServlet;
|
||||||
|
|
||||||
|
private EventListener listener;
|
||||||
|
|
||||||
|
private void setUpObjectUnderTest(Stage stage) {
|
||||||
|
listener = new EventListener();
|
||||||
|
ScmEventBus eventBus = ScmTestEventBus.getInstance();
|
||||||
|
eventBus.register(listener);
|
||||||
|
|
||||||
|
restartServlet = new RestartServlet(eventBus, stage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRestart() throws IOException {
|
||||||
|
setUpObjectUnderTest(Stage.DEVELOPMENT);
|
||||||
|
setRequestInputReason("something changed");
|
||||||
|
|
||||||
|
restartServlet.doPost(request, response);
|
||||||
|
|
||||||
|
verify(response).setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||||
|
|
||||||
|
RestartEvent restartEvent = listener.restartEvent;
|
||||||
|
assertThat(restartEvent).isNotNull();
|
||||||
|
assertThat(restartEvent.getCause()).isEqualTo(RestartServlet.class);
|
||||||
|
assertThat(restartEvent.getReason()).isEqualTo("something changed");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRestartCalledTwice() throws IOException {
|
||||||
|
setUpObjectUnderTest(Stage.DEVELOPMENT);
|
||||||
|
|
||||||
|
setRequestInputReason("initial change");
|
||||||
|
restartServlet.doPost(request, response);
|
||||||
|
verify(response).setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||||
|
|
||||||
|
setRequestInputReason("changed again");
|
||||||
|
restartServlet.doPost(request, response);
|
||||||
|
verify(response).setStatus(HttpServletResponse.SC_CONFLICT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRestartWithInvalidContent() throws IOException {
|
||||||
|
setUpObjectUnderTest(Stage.DEVELOPMENT);
|
||||||
|
|
||||||
|
setRequestInputContent("invalid json");
|
||||||
|
|
||||||
|
restartServlet.doPost(request, response);
|
||||||
|
|
||||||
|
verify(response).setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRestartInProductionStage() throws IOException {
|
||||||
|
setUpObjectUnderTest(Stage.PRODUCTION);
|
||||||
|
|
||||||
|
setRequestInputReason("initial change");
|
||||||
|
|
||||||
|
restartServlet.doPost(request, response);
|
||||||
|
|
||||||
|
verify(response).setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setRequestInputReason(String message) throws IOException {
|
||||||
|
String content = createReason(message);
|
||||||
|
setRequestInputContent(content);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setRequestInputContent(String content) throws IOException {
|
||||||
|
InputStream input = createReasonAsInputStream(content);
|
||||||
|
when(request.getInputStream()).thenReturn(createServletInputStream(input));
|
||||||
|
}
|
||||||
|
|
||||||
|
private ServletInputStream createServletInputStream(final InputStream inputStream) {
|
||||||
|
return new ServletInputStream() {
|
||||||
|
@Override
|
||||||
|
public int read() throws IOException {
|
||||||
|
return inputStream.read();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private InputStream createReasonAsInputStream(String content) {
|
||||||
|
return new ByteArrayInputStream(content.getBytes(Charsets.UTF_8));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String createReason(String message) {
|
||||||
|
return String.format("{\"message\": \"%s\"}", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class EventListener {
|
||||||
|
|
||||||
|
private RestartEvent restartEvent;
|
||||||
|
|
||||||
|
@Subscribe(async = false)
|
||||||
|
public void store(RestartEvent restartEvent) {
|
||||||
|
this.restartEvent = restartEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
package sonia.scm.boot;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
|
import javax.servlet.ServletContext;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.Vector;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
|
public class ServletContextCleanerTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private ServletContext servletContext;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCleanup() {
|
||||||
|
Set<String> names = ImmutableSet.of(
|
||||||
|
"org.jboss.resteasy.Dispatcher",
|
||||||
|
"resteasy.Deployment",
|
||||||
|
"sonia.scm.Context",
|
||||||
|
"org.eclipse.jetty.HttpServer",
|
||||||
|
"javax.servlet.Context",
|
||||||
|
"org.apache.shiro.SecurityManager"
|
||||||
|
);
|
||||||
|
|
||||||
|
when(servletContext.getAttributeNames()).thenReturn(toEnumeration(names));
|
||||||
|
|
||||||
|
ServletContextCleaner.cleanup(servletContext);
|
||||||
|
|
||||||
|
verify(servletContext).removeAttribute("org.jboss.resteasy.Dispatcher");
|
||||||
|
verify(servletContext).removeAttribute("resteasy.Deployment");
|
||||||
|
verify(servletContext).removeAttribute("sonia.scm.Context");
|
||||||
|
verify(servletContext, never()).removeAttribute("org.eclipse.jetty.HttpServer");
|
||||||
|
verify(servletContext, never()).removeAttribute("javax.servlet.Context");
|
||||||
|
verify(servletContext).removeAttribute("org.apache.shiro.SecurityManager");
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T> Enumeration<T> toEnumeration(Collection<T> collection) {
|
||||||
|
return new Vector<>(collection).elements();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -42,6 +42,7 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
import sonia.scm.Stage;
|
||||||
|
|
||||||
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContext;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -96,14 +97,12 @@ public class DefaultUberWebResourceLoaderTest extends WebResourceLoaderTestBase
|
|||||||
* Method description
|
* Method description
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @throws MalformedURLException
|
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testGetResourceFromCache() throws MalformedURLException
|
public void testGetResourceFromCache() {
|
||||||
{
|
|
||||||
DefaultUberWebResourceLoader resourceLoader =
|
DefaultUberWebResourceLoader resourceLoader =
|
||||||
new DefaultUberWebResourceLoader(servletContext,
|
new DefaultUberWebResourceLoader(servletContext,
|
||||||
new ArrayList<PluginWrapper>());
|
new ArrayList<PluginWrapper>(), Stage.PRODUCTION);
|
||||||
|
|
||||||
resourceLoader.getCache().put("/myresource", GITHUB);
|
resourceLoader.getCache().put("/myresource", GITHUB);
|
||||||
|
|
||||||
@@ -112,6 +111,15 @@ public class DefaultUberWebResourceLoaderTest extends WebResourceLoaderTestBase
|
|||||||
assertSame(GITHUB, resource);
|
assertSame(GITHUB, resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetResourceCacheIsDisableInStageDevelopment() throws MalformedURLException {
|
||||||
|
DefaultUberWebResourceLoader resourceLoader = new DefaultUberWebResourceLoader(servletContext, new ArrayList<>(), Stage.DEVELOPMENT);
|
||||||
|
when(servletContext.getResource("/scm")).thenAnswer(invocation -> new URL("https://scm-manager.org"));
|
||||||
|
URL url = resourceLoader.getResource("/scm");
|
||||||
|
URL secondUrl = resourceLoader.getResource("/scm");
|
||||||
|
assertNotSame(url, secondUrl);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method description
|
* Method description
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user