Skip to content

Commit d8b3f44

Browse files
committed
Generated classes now reflects their associated type
Signed-off-by: Jean-Baptiste Bianchi <jb.bianchi@neuroglia.io>
1 parent c13ca72 commit d8b3f44

File tree

194 files changed

+2671
-1521
lines changed

Some content is hidden

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

194 files changed

+2671
-1521
lines changed

src/lib/builder.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* Represents a fluent builder proxy
2020
*/
2121
export type Builder<T> = {
22-
build: () => T;
22+
build: (validate?: boolean) => T;
2323
} & {
2424
[K in keyof T]-?: (arg: T[K]) => Builder<T>;
2525
};
@@ -29,21 +29,21 @@ export type Builder<T> = {
2929
* @param data The object to "build"
3030
* @returns
3131
*/
32-
function defaultBuildingFn<T>(data: Partial<T>): () => T {
33-
return () => data as T;
32+
function defaultBuildingFn<T>(data: Partial<T>): T {
33+
return data as T;
3434
}
3535

3636
/**
3737
* A factory for fluent builders that proxy properties assignations and can validate against schema on build()
3838
* @param {Function} buildingFn The function used to validate and produce the object on build()
3939
* @returns {Builder} A fluent builder
4040
*/
41-
export function builder<T>(buildingFn?: (data: Partial<T>) => () => T): Builder<T> {
41+
export function builder<T>(buildingFn?: (data: Partial<T>) => T): Builder<T> {
4242
const data: Partial<T> = {};
4343
const proxy = new Proxy({} as Builder<T>, {
4444
get: (_, prop) => {
4545
if (prop === 'build') {
46-
return (buildingFn || defaultBuildingFn)(data);
46+
return (validate: boolean = true) => (validate ? (buildingFn || defaultBuildingFn)(data) : data);
4747
}
4848
return (value: unknown): Builder<T> => {
4949
(data as any)[prop.toString()] = value;

src/lib/generated/builders/authentication-policy-basic-builder.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ import { Specification } from '../definitions';
2424
* @param {Specification.AuthenticationPolicyBasic} data The underlying object
2525
* @returns {Specification.AuthenticationPolicyBasic} The validated underlying object
2626
*/
27-
function buildingFn(data: Specification.AuthenticationPolicyBasic): () => Specification.AuthenticationPolicyBasic {
28-
return () => {
29-
const model = new Classes.AuthenticationPolicyBasic();
30-
Object.assign(model, data);
27+
function buildingFn(data: Specification.AuthenticationPolicyBasic): Specification.AuthenticationPolicyBasic {
28+
const model = new Classes.AuthenticationPolicyBasic();
29+
Object.assign(model, data);
3130

32-
validate('AuthenticationPolicyBasic', model);
33-
return model as Specification.AuthenticationPolicyBasic;
34-
};
31+
validate('AuthenticationPolicyBasic', model);
32+
return model as Specification.AuthenticationPolicyBasic;
3533
}
3634

3735
/**

src/lib/generated/builders/authentication-policy-bearer-builder.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ import { Specification } from '../definitions';
2424
* @param {Specification.AuthenticationPolicyBearer} data The underlying object
2525
* @returns {Specification.AuthenticationPolicyBearer} The validated underlying object
2626
*/
27-
function buildingFn(data: Specification.AuthenticationPolicyBearer): () => Specification.AuthenticationPolicyBearer {
28-
return () => {
29-
const model = new Classes.AuthenticationPolicyBearer();
30-
Object.assign(model, data);
27+
function buildingFn(data: Specification.AuthenticationPolicyBearer): Specification.AuthenticationPolicyBearer {
28+
const model = new Classes.AuthenticationPolicyBearer();
29+
Object.assign(model, data);
3130

32-
validate('AuthenticationPolicyBearer', model);
33-
return model as Specification.AuthenticationPolicyBearer;
34-
};
31+
validate('AuthenticationPolicyBearer', model);
32+
return model as Specification.AuthenticationPolicyBearer;
3533
}
3634

3735
/**

src/lib/generated/builders/authentication-policy-builder.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ import { Specification } from '../definitions';
2424
* @param {Specification.AuthenticationPolicy} data The underlying object
2525
* @returns {Specification.AuthenticationPolicy} The validated underlying object
2626
*/
27-
function buildingFn(data: Specification.AuthenticationPolicy): () => Specification.AuthenticationPolicy {
28-
return () => {
29-
const model = new Classes.AuthenticationPolicy();
30-
Object.assign(model, data);
27+
function buildingFn(data: Specification.AuthenticationPolicy): Specification.AuthenticationPolicy {
28+
const model = new Classes.AuthenticationPolicy();
29+
Object.assign(model, data);
3130

32-
validate('AuthenticationPolicy', model);
33-
return model as Specification.AuthenticationPolicy;
34-
};
31+
validate('AuthenticationPolicy', model);
32+
return model as Specification.AuthenticationPolicy;
3533
}
3634

3735
/**

src/lib/generated/builders/authentication-policy-oauth2-builder.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ import { Specification } from '../definitions';
2424
* @param {Specification.AuthenticationPolicyOauth2} data The underlying object
2525
* @returns {Specification.AuthenticationPolicyOauth2} The validated underlying object
2626
*/
27-
function buildingFn(data: Specification.AuthenticationPolicyOauth2): () => Specification.AuthenticationPolicyOauth2 {
28-
return () => {
29-
const model = new Classes.AuthenticationPolicyOauth2();
30-
Object.assign(model, data);
27+
function buildingFn(data: Specification.AuthenticationPolicyOauth2): Specification.AuthenticationPolicyOauth2 {
28+
const model = new Classes.AuthenticationPolicyOauth2();
29+
Object.assign(model, data);
3130

32-
validate('AuthenticationPolicyOauth2', model);
33-
return model as Specification.AuthenticationPolicyOauth2;
34-
};
31+
validate('AuthenticationPolicyOauth2', model);
32+
return model as Specification.AuthenticationPolicyOauth2;
3533
}
3634

3735
/**

src/lib/generated/builders/authentication-policy-oauth2-client-builder.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,12 @@ import { Specification } from '../definitions';
2626
*/
2727
function buildingFn(
2828
data: Specification.AuthenticationPolicyOauth2Client,
29-
): () => Specification.AuthenticationPolicyOauth2Client {
30-
return () => {
31-
const model = new Classes.AuthenticationPolicyOauth2Client();
32-
Object.assign(model, data);
29+
): Specification.AuthenticationPolicyOauth2Client {
30+
const model = new Classes.AuthenticationPolicyOauth2Client();
31+
Object.assign(model, data);
3332

34-
validate('AuthenticationPolicyOauth2Client', model);
35-
return model as Specification.AuthenticationPolicyOauth2Client;
36-
};
33+
validate('AuthenticationPolicyOauth2Client', model);
34+
return model as Specification.AuthenticationPolicyOauth2Client;
3735
}
3836

3937
/**

src/lib/generated/builders/call-async-api-builder.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ import { Specification } from '../definitions';
2424
* @param {Specification.CallAsyncAPI} data The underlying object
2525
* @returns {Specification.CallAsyncAPI} The validated underlying object
2626
*/
27-
function buildingFn(data: Specification.CallAsyncAPI): () => Specification.CallAsyncAPI {
28-
return () => {
29-
const model = new Classes.CallAsyncAPI();
30-
Object.assign(model, data);
27+
function buildingFn(data: Specification.CallAsyncAPI): Specification.CallAsyncAPI {
28+
const model = new Classes.CallAsyncAPI();
29+
Object.assign(model, data);
3130

32-
validate('CallAsyncAPI', model);
33-
return model as Specification.CallAsyncAPI;
34-
};
31+
validate('CallAsyncAPI', model);
32+
return model as Specification.CallAsyncAPI;
3533
}
3634

3735
/**

src/lib/generated/builders/call-async-api-with-authentication-builder.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,12 @@ import { Specification } from '../definitions';
2424
* @param {Specification.CallAsyncAPIWithAuthentication} data The underlying object
2525
* @returns {Specification.CallAsyncAPIWithAuthentication} The validated underlying object
2626
*/
27-
function buildingFn(
28-
data: Specification.CallAsyncAPIWithAuthentication,
29-
): () => Specification.CallAsyncAPIWithAuthentication {
30-
return () => {
31-
const model = new Classes.CallAsyncAPIWithAuthentication();
32-
Object.assign(model, data);
27+
function buildingFn(data: Specification.CallAsyncAPIWithAuthentication): Specification.CallAsyncAPIWithAuthentication {
28+
const model = new Classes.CallAsyncAPIWithAuthentication();
29+
Object.assign(model, data);
3330

34-
validate('CallAsyncAPIWithAuthentication', model);
35-
return model as Specification.CallAsyncAPIWithAuthentication;
36-
};
31+
validate('CallAsyncAPIWithAuthentication', model);
32+
return model as Specification.CallAsyncAPIWithAuthentication;
3733
}
3834

3935
/**

src/lib/generated/builders/call-async-api-with-builder.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ import { Specification } from '../definitions';
2424
* @param {Specification.CallAsyncAPIWith} data The underlying object
2525
* @returns {Specification.CallAsyncAPIWith} The validated underlying object
2626
*/
27-
function buildingFn(data: Specification.CallAsyncAPIWith): () => Specification.CallAsyncAPIWith {
28-
return () => {
29-
const model = new Classes.CallAsyncAPIWith();
30-
Object.assign(model, data);
27+
function buildingFn(data: Specification.CallAsyncAPIWith): Specification.CallAsyncAPIWith {
28+
const model = new Classes.CallAsyncAPIWith();
29+
Object.assign(model, data);
3130

32-
validate('CallAsyncAPIWith', model);
33-
return model as Specification.CallAsyncAPIWith;
34-
};
31+
validate('CallAsyncAPIWith', model);
32+
return model as Specification.CallAsyncAPIWith;
3533
}
3634

3735
/**

src/lib/generated/builders/call-function-builder.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ import { Specification } from '../definitions';
2424
* @param {Specification.CallFunction} data The underlying object
2525
* @returns {Specification.CallFunction} The validated underlying object
2626
*/
27-
function buildingFn(data: Specification.CallFunction): () => Specification.CallFunction {
28-
return () => {
29-
const model = new Classes.CallFunction();
30-
Object.assign(model, data);
27+
function buildingFn(data: Specification.CallFunction): Specification.CallFunction {
28+
const model = new Classes.CallFunction();
29+
Object.assign(model, data);
3130

32-
validate('CallFunction', model);
33-
return model as Specification.CallFunction;
34-
};
31+
validate('CallFunction', model);
32+
return model as Specification.CallFunction;
3533
}
3634

3735
/**

0 commit comments

Comments
 (0)