@ghentcdh/json-forms-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/index.cjs +1 -0
- package/index.d.ts +12 -0
- package/index.js +6844 -0
- package/lib/column.utils.d.ts +0 -0
- package/lib/control.renderer.type.d.ts +0 -0
- package/lib/filter.d.ts +13 -0
- package/lib/layout/builder.d.ts +12 -0
- package/lib/layout/category.builder.d.ts +20 -0
- package/lib/layout/control.builder.d.ts +67 -0
- package/lib/layout/group.builder.d.ts +13 -0
- package/lib/layout/layout.builder.d.ts +19 -0
- package/lib/request.model.d.ts +55 -0
- package/lib/response.model.d.ts +81 -0
- package/lib/schema.model.d.ts +44 -0
- package/lib/schema.utils.d.ts +12 -0
- package/lib/table/builder.d.ts +31 -0
- package/lib/table/utils.d.ts +7 -0
- package/lib/table.renderer.d.ts +0 -0
- package/lib/zod.types.d.ts +3 -0
- package/package.json +17 -0
|
File without changes
|
|
File without changes
|
package/lib/filter.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SortDir } from './request.model';
|
|
2
|
+
export declare const Operator: readonly ["contains", "equals"];
|
|
3
|
+
export type OperatorType = (typeof Operator)[number];
|
|
4
|
+
export type Filter = {
|
|
5
|
+
key: string;
|
|
6
|
+
value: any;
|
|
7
|
+
operator: OperatorType;
|
|
8
|
+
label?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const buildSort: (key: string, sortDir: SortDir) => any;
|
|
11
|
+
export declare const buildSortKey: (keys: string[], sortDir: any) => any;
|
|
12
|
+
export declare const buildFilter: (filters: string[]) => Record<string, any>;
|
|
13
|
+
export declare const extractFilters: (filters: string[]) => Filter[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ElementBuilder } from './layout.builder';
|
|
2
|
+
export declare abstract class Builder<TYPE> {
|
|
3
|
+
protected readonly type: string;
|
|
4
|
+
constructor(type: string);
|
|
5
|
+
abstract build(): TYPE;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class BuilderWithElements<TYPE, CONTROL_TYPE> extends Builder<TYPE> {
|
|
8
|
+
protected elements: Array<ElementBuilder<CONTROL_TYPE>>;
|
|
9
|
+
addControl(control: ElementBuilder<CONTROL_TYPE>): this;
|
|
10
|
+
addControls(...controls: Array<ElementBuilder<CONTROL_TYPE>>): this;
|
|
11
|
+
protected buildElements(): (import('./control.builder').ControlTypes | import('./layout.builder').LayoutType | import('./category.builder').CategoryType<CONTROL_TYPE> | import('./group.builder').GroupType<CONTROL_TYPE> | import('../..').TextCellType)[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BuilderWithElements } from './builder';
|
|
2
|
+
import { ElementBuilder } from './layout.builder';
|
|
3
|
+
type Rule = {
|
|
4
|
+
effect: 'SHOW';
|
|
5
|
+
condition: any;
|
|
6
|
+
};
|
|
7
|
+
export type CategoryType<TYPE> = {
|
|
8
|
+
type: 'Category';
|
|
9
|
+
label: string;
|
|
10
|
+
elements?: ElementBuilder<TYPE>[];
|
|
11
|
+
rule?: Rule;
|
|
12
|
+
};
|
|
13
|
+
export declare class CategoryBuilder<TYPE> extends BuilderWithElements<CategoryType<TYPE>, TYPE> {
|
|
14
|
+
private readonly label;
|
|
15
|
+
private rule;
|
|
16
|
+
private constructor();
|
|
17
|
+
static label(label: string): CategoryBuilder<unknown>;
|
|
18
|
+
build(): CategoryType<TYPE>;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Builder } from './builder';
|
|
2
|
+
import { LayoutBuilder } from './layout.builder';
|
|
3
|
+
export declare const ControlType: {
|
|
4
|
+
readonly number: "number";
|
|
5
|
+
readonly string: "string";
|
|
6
|
+
readonly integer: "Integer";
|
|
7
|
+
readonly autocomplete: "autocomplete";
|
|
8
|
+
readonly textArea: "textArea";
|
|
9
|
+
readonly markdown: "markdown";
|
|
10
|
+
readonly fixedArray: "fixedArray";
|
|
11
|
+
readonly array: "array";
|
|
12
|
+
readonly custom: "custom";
|
|
13
|
+
};
|
|
14
|
+
export interface TextAreaOptions extends ControlOption {
|
|
15
|
+
format: 'textArea';
|
|
16
|
+
}
|
|
17
|
+
export interface DetailOptions extends ControlOption {
|
|
18
|
+
format: 'fixedArray';
|
|
19
|
+
}
|
|
20
|
+
export interface AutocompleteOptions extends ControlOption {
|
|
21
|
+
format: 'autocomplete';
|
|
22
|
+
uri: string;
|
|
23
|
+
dataField?: string;
|
|
24
|
+
field: {
|
|
25
|
+
id: string;
|
|
26
|
+
label: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export type ArrayActionType = 'edit';
|
|
30
|
+
export type ArrayAction = {
|
|
31
|
+
type: ArrayActionType;
|
|
32
|
+
idField: string;
|
|
33
|
+
};
|
|
34
|
+
export interface ControlOption {
|
|
35
|
+
format?: string;
|
|
36
|
+
readonly?: boolean;
|
|
37
|
+
label?: string;
|
|
38
|
+
styles?: Partial<any>;
|
|
39
|
+
elements?: any;
|
|
40
|
+
elementLabelProp?: string;
|
|
41
|
+
labelKey?: string;
|
|
42
|
+
actions?: ArrayAction[];
|
|
43
|
+
}
|
|
44
|
+
export type ControlTypes = {
|
|
45
|
+
type: 'Control' | 'Object' | 'TextCell';
|
|
46
|
+
scope: string;
|
|
47
|
+
options?: TextAreaOptions | AutocompleteOptions | DetailOptions;
|
|
48
|
+
};
|
|
49
|
+
export declare class ControlBuilder<TYPE, KEY = keyof TYPE> extends Builder<ControlTypes> {
|
|
50
|
+
private readonly scope;
|
|
51
|
+
private options;
|
|
52
|
+
private _detail?;
|
|
53
|
+
private constructor();
|
|
54
|
+
static asObject<TYPE>(property: keyof TYPE): ControlBuilder<TYPE>;
|
|
55
|
+
static properties<TYPE>(property: keyof TYPE): ControlBuilder<TYPE>;
|
|
56
|
+
static asCustom<TYPE>(property: keyof TYPE, type: string): ControlBuilder<TYPE>;
|
|
57
|
+
detail<TYPE>(layoutBuilder: LayoutBuilder<TYPE>, label?: string): this;
|
|
58
|
+
addAction(action: ArrayAction): this;
|
|
59
|
+
detailFixed<TYPE>(layoutBuilder: LayoutBuilder<TYPE>, label?: string): this;
|
|
60
|
+
labelKey(labelKey: string): this;
|
|
61
|
+
readonly(): ControlBuilder<TYPE>;
|
|
62
|
+
markdown(): ControlBuilder<TYPE>;
|
|
63
|
+
textArea(options?: Omit<TextAreaOptions, 'format'>): this;
|
|
64
|
+
autocomplete(options: Omit<AutocompleteOptions, 'format'>): this;
|
|
65
|
+
width(width: 'xs' | 'sm' | 'md' | 'lg' | 'xl'): this;
|
|
66
|
+
build(): ControlTypes;
|
|
67
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BuilderWithElements } from './builder';
|
|
2
|
+
import { ElementBuilder } from './layout.builder';
|
|
3
|
+
export type GroupType<TYPE> = {
|
|
4
|
+
type: 'Group';
|
|
5
|
+
label: string;
|
|
6
|
+
elements?: ElementBuilder<TYPE>[];
|
|
7
|
+
};
|
|
8
|
+
export declare class GroupBuilder<TYPE> extends BuilderWithElements<GroupType<TYPE>, TYPE> {
|
|
9
|
+
private readonly label;
|
|
10
|
+
private constructor();
|
|
11
|
+
static label(label: string): GroupBuilder<unknown>;
|
|
12
|
+
build(): GroupType<TYPE>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BuilderWithElements } from './builder';
|
|
2
|
+
import { CategoryBuilder } from './category.builder';
|
|
3
|
+
import { ControlBuilder, ControlTypes } from './control.builder';
|
|
4
|
+
import { GroupBuilder } from './group.builder';
|
|
5
|
+
import { TextCellBuilder } from '../table/builder';
|
|
6
|
+
export type ElementBuilder<TYPE> = ControlBuilder<TYPE> | LayoutBuilder<TYPE> | CategoryBuilder<TYPE> | GroupBuilder<TYPE> | TextCellBuilder<TYPE>;
|
|
7
|
+
export type LayoutType = {
|
|
8
|
+
type: 'HorizontalLayout' | 'VerticalLayout';
|
|
9
|
+
elements: Array<ControlTypes | LayoutType>;
|
|
10
|
+
};
|
|
11
|
+
export declare class LayoutBuilder<TYPE> extends BuilderWithElements<LayoutType, TYPE> {
|
|
12
|
+
private options;
|
|
13
|
+
protected constructor(type: 'HorizontalLayout' | 'VerticalLayout' | 'Categorization' | 'table', options?: {});
|
|
14
|
+
static horizontal<TYPE>(): LayoutBuilder<TYPE>;
|
|
15
|
+
static stepper(hideNavButtons?: boolean): LayoutBuilder<unknown>;
|
|
16
|
+
static table(): LayoutBuilder<unknown>;
|
|
17
|
+
static vertical<TYPE>(): LayoutBuilder<TYPE>;
|
|
18
|
+
build(): LayoutType;
|
|
19
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const SortDirEnum: z.ZodEnum<["asc", "desc"]>;
|
|
3
|
+
export type SortDir = z.infer<typeof SortDirEnum>;
|
|
4
|
+
export declare const RequestSchema: z.ZodObject<{
|
|
5
|
+
page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
6
|
+
pageSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
7
|
+
sort: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
8
|
+
sortDir: z.ZodDefault<z.ZodOptional<z.ZodEnum<["asc", "desc"]>>>;
|
|
9
|
+
filter: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>, string[], string | string[]>>>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
sort: string;
|
|
12
|
+
filter: string[];
|
|
13
|
+
page: number;
|
|
14
|
+
pageSize: number;
|
|
15
|
+
sortDir: "asc" | "desc";
|
|
16
|
+
}, {
|
|
17
|
+
sort?: string | undefined;
|
|
18
|
+
filter?: string | string[] | undefined;
|
|
19
|
+
page?: number | undefined;
|
|
20
|
+
pageSize?: number | undefined;
|
|
21
|
+
sortDir?: "asc" | "desc" | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
24
|
+
export declare const RequestSchemaWithOffset: z.ZodEffects<z.ZodObject<{
|
|
25
|
+
page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
26
|
+
pageSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
27
|
+
sort: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
28
|
+
sortDir: z.ZodDefault<z.ZodOptional<z.ZodEnum<["asc", "desc"]>>>;
|
|
29
|
+
filter: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>, string[], string | string[]>>>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
sort: string;
|
|
32
|
+
filter: string[];
|
|
33
|
+
page: number;
|
|
34
|
+
pageSize: number;
|
|
35
|
+
sortDir: "asc" | "desc";
|
|
36
|
+
}, {
|
|
37
|
+
sort?: string | undefined;
|
|
38
|
+
filter?: string | string[] | undefined;
|
|
39
|
+
page?: number | undefined;
|
|
40
|
+
pageSize?: number | undefined;
|
|
41
|
+
sortDir?: "asc" | "desc" | undefined;
|
|
42
|
+
}>, {
|
|
43
|
+
sort: string;
|
|
44
|
+
offset: number;
|
|
45
|
+
filter: string[];
|
|
46
|
+
page: number;
|
|
47
|
+
pageSize: number;
|
|
48
|
+
sortDir: "asc" | "desc";
|
|
49
|
+
}, {
|
|
50
|
+
sort?: string | undefined;
|
|
51
|
+
filter?: string | string[] | undefined;
|
|
52
|
+
page?: number | undefined;
|
|
53
|
+
pageSize?: number | undefined;
|
|
54
|
+
sortDir?: "asc" | "desc" | undefined;
|
|
55
|
+
}>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const ResponseRequestSchema: z.ZodObject<{
|
|
3
|
+
page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
4
|
+
pageSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
5
|
+
sort: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
6
|
+
sortDir: z.ZodDefault<z.ZodOptional<z.ZodEnum<["asc", "desc"]>>>;
|
|
7
|
+
filter: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>, string[], string | string[]>>>;
|
|
8
|
+
} & {
|
|
9
|
+
count: z.ZodNumber;
|
|
10
|
+
totalPages: z.ZodNumber;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
sort: string;
|
|
13
|
+
filter: string[];
|
|
14
|
+
page: number;
|
|
15
|
+
pageSize: number;
|
|
16
|
+
sortDir: "asc" | "desc";
|
|
17
|
+
count: number;
|
|
18
|
+
totalPages: number;
|
|
19
|
+
}, {
|
|
20
|
+
count: number;
|
|
21
|
+
totalPages: number;
|
|
22
|
+
sort?: string | undefined;
|
|
23
|
+
filter?: string | string[] | undefined;
|
|
24
|
+
page?: number | undefined;
|
|
25
|
+
pageSize?: number | undefined;
|
|
26
|
+
sortDir?: "asc" | "desc" | undefined;
|
|
27
|
+
}>;
|
|
28
|
+
export declare const ResponseSchema: z.ZodObject<{
|
|
29
|
+
data: z.ZodArray<z.ZodUnknown, "many">;
|
|
30
|
+
request: z.ZodObject<{
|
|
31
|
+
page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
32
|
+
pageSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
33
|
+
sort: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
34
|
+
sortDir: z.ZodDefault<z.ZodOptional<z.ZodEnum<["asc", "desc"]>>>;
|
|
35
|
+
filter: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>, string[], string | string[]>>>;
|
|
36
|
+
} & {
|
|
37
|
+
count: z.ZodNumber;
|
|
38
|
+
totalPages: z.ZodNumber;
|
|
39
|
+
}, "strip", z.ZodTypeAny, {
|
|
40
|
+
sort: string;
|
|
41
|
+
filter: string[];
|
|
42
|
+
page: number;
|
|
43
|
+
pageSize: number;
|
|
44
|
+
sortDir: "asc" | "desc";
|
|
45
|
+
count: number;
|
|
46
|
+
totalPages: number;
|
|
47
|
+
}, {
|
|
48
|
+
count: number;
|
|
49
|
+
totalPages: number;
|
|
50
|
+
sort?: string | undefined;
|
|
51
|
+
filter?: string | string[] | undefined;
|
|
52
|
+
page?: number | undefined;
|
|
53
|
+
pageSize?: number | undefined;
|
|
54
|
+
sortDir?: "asc" | "desc" | undefined;
|
|
55
|
+
}>;
|
|
56
|
+
}, "strip", z.ZodTypeAny, {
|
|
57
|
+
data: unknown[];
|
|
58
|
+
request: {
|
|
59
|
+
sort: string;
|
|
60
|
+
filter: string[];
|
|
61
|
+
page: number;
|
|
62
|
+
pageSize: number;
|
|
63
|
+
sortDir: "asc" | "desc";
|
|
64
|
+
count: number;
|
|
65
|
+
totalPages: number;
|
|
66
|
+
};
|
|
67
|
+
}, {
|
|
68
|
+
data: unknown[];
|
|
69
|
+
request: {
|
|
70
|
+
count: number;
|
|
71
|
+
totalPages: number;
|
|
72
|
+
sort?: string | undefined;
|
|
73
|
+
filter?: string | string[] | undefined;
|
|
74
|
+
page?: number | undefined;
|
|
75
|
+
pageSize?: number | undefined;
|
|
76
|
+
sortDir?: "asc" | "desc" | undefined;
|
|
77
|
+
};
|
|
78
|
+
}>;
|
|
79
|
+
export type ResponseData<TYPE> = z.infer<typeof ResponseSchema> & {
|
|
80
|
+
data: TYPE[];
|
|
81
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { JsonSchema } from '@jsonforms/core';
|
|
2
|
+
import { Layout } from '@jsonforms/core/src/models/uischema';
|
|
3
|
+
import { ZodObject } from 'zod';
|
|
4
|
+
export declare enum Size {
|
|
5
|
+
xs = "xs",
|
|
6
|
+
sm = "sm",
|
|
7
|
+
lg = "lg",
|
|
8
|
+
xl = "xl"
|
|
9
|
+
}
|
|
10
|
+
export type JsonFormsLayout = {
|
|
11
|
+
uiSchema: Layout;
|
|
12
|
+
schema: JsonSchema;
|
|
13
|
+
modalSize?: Size;
|
|
14
|
+
};
|
|
15
|
+
export type FormSchemaModel = {
|
|
16
|
+
form: JsonFormsLayout;
|
|
17
|
+
table?: JsonFormsLayout;
|
|
18
|
+
filter?: JsonFormsLayout;
|
|
19
|
+
uri: string;
|
|
20
|
+
searchUri: string;
|
|
21
|
+
};
|
|
22
|
+
export declare const createSchema: (props: {
|
|
23
|
+
uiSchema: any;
|
|
24
|
+
jsonSchema: JsonSchema;
|
|
25
|
+
tableSchema?: JsonSchema;
|
|
26
|
+
filterSchema?: JsonSchema;
|
|
27
|
+
dtoSchema: ZodObject<any>;
|
|
28
|
+
responseSchema?: ZodObject<any>;
|
|
29
|
+
uri: string;
|
|
30
|
+
searchUri?: string;
|
|
31
|
+
modalSize?: Size;
|
|
32
|
+
}) => {
|
|
33
|
+
dtoSchema: ZodObject<any, import('zod').UnknownKeysParam, import('zod').ZodTypeAny, {
|
|
34
|
+
[x: string]: any;
|
|
35
|
+
}, {
|
|
36
|
+
[x: string]: any;
|
|
37
|
+
}>;
|
|
38
|
+
responseSchema: ZodObject<any, import('zod').UnknownKeysParam, import('zod').ZodTypeAny, {
|
|
39
|
+
[x: string]: any;
|
|
40
|
+
}, {
|
|
41
|
+
[x: string]: any;
|
|
42
|
+
}>;
|
|
43
|
+
schema: FormSchemaModel;
|
|
44
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { JsonSchema } from '@jsonforms/core';
|
|
2
|
+
type Field = {
|
|
3
|
+
scope: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const findProperty: <F extends Field>(column: F, schema: JsonSchema) => {
|
|
6
|
+
id: string;
|
|
7
|
+
property: any;
|
|
8
|
+
} | {
|
|
9
|
+
id: null;
|
|
10
|
+
property: null;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Builder } from '../layout/builder';
|
|
2
|
+
export interface TextCellOption {
|
|
3
|
+
format: 'TextCell';
|
|
4
|
+
sortId?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface KeyValueOption extends Omit<TextCellOption, 'format'> {
|
|
7
|
+
format: 'keyValue';
|
|
8
|
+
key: string;
|
|
9
|
+
}
|
|
10
|
+
export type TextCellType = {
|
|
11
|
+
type: 'TextCell';
|
|
12
|
+
scope: string;
|
|
13
|
+
options?: KeyValueOption;
|
|
14
|
+
};
|
|
15
|
+
export declare class TextCellBuilder<TYPE> extends Builder<TextCellType> {
|
|
16
|
+
private readonly scope;
|
|
17
|
+
private options;
|
|
18
|
+
private constructor();
|
|
19
|
+
static properties<TYPE>(property: keyof TYPE): TextCellBuilder<TYPE>;
|
|
20
|
+
key(key: string): TextCellBuilder<TYPE>;
|
|
21
|
+
setSortId(sortId: string): TextCellBuilder<TYPE>;
|
|
22
|
+
build(): TextCellType;
|
|
23
|
+
}
|
|
24
|
+
export declare class TableBuilder<TYPE> {
|
|
25
|
+
private builder;
|
|
26
|
+
private constructor();
|
|
27
|
+
static init<TYPE>(): TableBuilder<TYPE>;
|
|
28
|
+
addControl(control: TextCellBuilder<TYPE>): this;
|
|
29
|
+
addControls(...controls: Array<TextCellBuilder<TYPE>>): this;
|
|
30
|
+
build(): import('../layout/layout.builder').LayoutType;
|
|
31
|
+
}
|
|
File without changes
|
package/package.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ghentcdh/json-forms-core",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"dependencies": {
|
|
5
|
+
"zod": "^3.24.1",
|
|
6
|
+
"@anatine/zod-openapi": "^2.2.6",
|
|
7
|
+
"@jsonforms/core": "^3.4.1",
|
|
8
|
+
"lodash-es": "^4.17.21"
|
|
9
|
+
},
|
|
10
|
+
"type": "module",
|
|
11
|
+
"main": "./index.js",
|
|
12
|
+
"typings": "./index.d.ts",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "https://github.com/GhentCDH/ghentcdh-monorepo.git"
|
|
16
|
+
}
|
|
17
|
+
}
|