imng-kendo-schematics 7.209.3 → 7.222.4
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/package.json +8 -8
- package/schematics/imng-crud/files/add.component.spec.ts.template +0 -1
- package/schematics/imng-crud/files/api.service.ts.template +2 -2
- package/schematics/imng-crud/files/base-entry.component.ts.template +1 -1
- package/schematics/imng-crud/files/crud.facade.spec.ts.template +3 -4
- package/schematics/imng-crud/files/crud.facade.ts.template +4 -6
- package/schematics/imng-crud/index.js +1 -2
- package/schematics/imng-crud/index.js.map +1 -1
- package/schematics/imng-list/files/index.ts.template +1 -1
- package/schematics/imng-list/files/list.facade.spec.ts.template +3 -5
- package/schematics/imng-list/files/list.facade.ts.template +1 -2
- package/schematics/imng-list/index.js +1 -2
- package/schematics/imng-list/index.js.map +1 -1
- package/schematics/imng-module/files/+state/{__singularizedName@dasherize__.effects.ts.template → __singularizedName@dasherize__-crud.effects.ts.template} +2 -33
- package/schematics/imng-module/files/+state/__singularizedName@dasherize__-list.effects.ts.template +46 -0
- package/schematics/imng-module/files/+state/__singularizedName@dasherize__.selectors.ts.template +3 -3
- package/schematics/imng-module/files/+state/index.ts.template +5 -0
- package/schematics/imng-module/files/__pluralizedName@dasherize__.module.ts.template +2 -3
- package/schematics/imng-module/index.js +4 -4
- package/schematics/imng-module/index.js.map +1 -1
- package/schematics/imng-sub-list/files/+state/__singularizedName@dasherize__.effects.ts.template +3 -3
- package/schematics/imng-sub-list/files/+state/__singularizedName@dasherize__.selectors.ts.template +2 -2
- package/schematics/imng-sub-list/files/__pluralizedName@dasherize__-list/api.service.ts.template +1 -1
- package/schematics/imng-sub-list/files/__pluralizedName@dasherize__-list/list.facade.spec.ts.template +1 -1
- package/schematics/imng-sub-list/files/__pluralizedName@dasherize__-list/list.facade.ts.template +4 -4
- package/schematics/imng-sub-list/index.js +1 -2
- package/schematics/imng-sub-list/index.js.map +1 -1
- package/schematics/ng-add/index.js +2 -3
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/shared/map-properties.js +2 -3
- package/schematics/shared/map-properties.js.map +1 -1
- package/schematics/shared/rules.js +7 -7
- package/schematics/shared/rules.js.map +1 -1
- /package/schematics/imng-module/files/+state/{__singularizedName@dasherize__.reducer.ts.template → __singularizedName@dasherize__.feature.ts.template} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "imng-kendo-schematics",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.222.4",
|
|
4
4
|
"description": "Angular Schematics facilitating Angular, Kendo, NGRX and imng package integration",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsc -p tsconfig.json",
|
|
@@ -20,14 +20,14 @@
|
|
|
20
20
|
"schematics": "./schematics/collection.json",
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"pluralize": "^8.x",
|
|
23
|
-
"@
|
|
24
|
-
"@angular/core": ">=
|
|
25
|
-
"jest": ">=
|
|
23
|
+
"@nx/angular": ">=19.x",
|
|
24
|
+
"@angular/core": ">=18.x",
|
|
25
|
+
"jest": ">=29.x"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@angular-devkit/core": ">=
|
|
29
|
-
"@angular-devkit/schematics": ">=
|
|
30
|
-
"@angular/compiler": ">=
|
|
31
|
-
"typescript": ">=
|
|
28
|
+
"@angular-devkit/core": ">=18.x",
|
|
29
|
+
"@angular-devkit/schematics": ">=18.x",
|
|
30
|
+
"@angular/compiler": ">=18.x",
|
|
31
|
+
"typescript": ">=5.x"
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -11,7 +11,6 @@ import { of } from 'rxjs';<% } %>
|
|
|
11
11
|
import { <%= classify(name) %>AddComponent } from './add.component';
|
|
12
12
|
import { <%= classify(name) %>CrudFacade } from './crud.facade';
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
<% if (hasObjects) { %>export function createMock<%= classify(name) %>Facade() {
|
|
16
15
|
return {
|
|
17
16
|
currentEntity$: of({}),<% swaggerObjectProperties.filter(t=> !t.enum).forEach(function(swaggerProperty){ %>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { NrsrxBaseApiClientService } from 'imng-nrsrx-client-utils';
|
|
3
3
|
import { HttpClient } from '@angular/common/http';
|
|
4
|
-
import { environment } from '
|
|
4
|
+
import { environment } from '@env';
|
|
5
5
|
|
|
6
6
|
@Injectable({
|
|
7
7
|
providedIn: 'root',
|
|
@@ -9,7 +9,7 @@ import { environment } from '../../../../environments/environment';
|
|
|
9
9
|
export class <%= classify(name) %>ApiService extends NrsrxBaseApiClientService<I<%= classify(name) %>> {
|
|
10
10
|
public override url = environment.webApiEndpoints.<%= camelize(pluralizedName) %>;
|
|
11
11
|
<% if (swaggerProperties.filter(t => t.format === 'date')) { %>
|
|
12
|
-
public dateOnlyPropertyNames = [<% swaggerProperties.filter(t => t.format === 'date').forEach(function (swaggerProperty, index, dateProperties) { %>
|
|
12
|
+
public override dateOnlyPropertyNames = [<% swaggerProperties.filter(t => t.format === 'date').forEach(function (swaggerProperty, index, dateProperties) { %>
|
|
13
13
|
<%= classify(singularizedName) %>Properties.<%= swaggerProperty.snakeCaseName.toUpperCase() %><% if (index + 1 < dateProperties.length) { %>,<% }}) %>];
|
|
14
14
|
<% } %>
|
|
15
15
|
constructor(http: HttpClient) {
|
|
@@ -26,7 +26,7 @@ export abstract class <%= classify(name) %>BaseEntryComponent extends BaseDataEn
|
|
|
26
26
|
))));<% }) %>
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
public ngOnInit(): void {
|
|
29
|
+
public override ngOnInit(): void {
|
|
30
30
|
this.initForm();<% swaggerObjectProperties.filter(t=> !t.enum).forEach(function(swaggerProperty){ %>
|
|
31
31
|
this.facade.load<%= classify(swaggerProperty.pluralizedName) %>({ selectors: [<% swaggerProperty.properties.forEach(function(swaggerSubProperty){ %>
|
|
32
32
|
<%= classify(swaggerProperty.propertyTypeName) %>Properties.<%= swaggerSubProperty.snakeCaseName.toUpperCase() %>,<% }) %>] });<% }) %>
|
|
@@ -13,11 +13,10 @@ import {
|
|
|
13
13
|
import { createODataPayload } from 'imng-kendo-odata';
|
|
14
14
|
import { of } from 'rxjs';
|
|
15
15
|
|
|
16
|
-
import { <%= classify(singularizedStoreName) %>
|
|
17
|
-
import { <%= camelize(pluralizedStoreName) %>Feature } from '../+state/<%= dasherize(singularizedStoreName) %>.reducer';
|
|
16
|
+
import { <%= camelize(pluralizedStoreName) %>Feature, <%= classify(singularizedStoreName) %>ListEffects, <%= classify(singularizedStoreName) %>CrudEffects } from '../+state';
|
|
18
17
|
import { <%= classify(name) %>CrudFacade } from './crud.facade';
|
|
19
18
|
import { <%= classify(name) %>ApiService } from './api.service';
|
|
20
|
-
import { environment } from '
|
|
19
|
+
import { environment } from '@env';
|
|
21
20
|
|
|
22
21
|
describe('<%= classify(name) %>CrudFacade', () => {
|
|
23
22
|
let facade: <%= classify(name) %>CrudFacade;
|
|
@@ -32,7 +31,7 @@ describe('<%= classify(name) %>CrudFacade', () => {
|
|
|
32
31
|
@NgModule({
|
|
33
32
|
imports: [
|
|
34
33
|
StoreModule.forFeature(<%= camelize(pluralizedStoreName) %>Feature),
|
|
35
|
-
EffectsModule.forFeature([<%= classify(singularizedStoreName) %>
|
|
34
|
+
EffectsModule.forFeature([<%= classify(singularizedStoreName) %>ListEffects, <%= classify(singularizedStoreName) %>CrudEffects]),
|
|
36
35
|
],
|
|
37
36
|
providers: [
|
|
38
37
|
<%= classify(name) %>CrudFacade,
|
|
@@ -2,16 +2,14 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import { Store } from '@ngrx/store';
|
|
3
3
|
import { IDataEntryFacade } from 'imng-kendo-data-entry';<% if (hasObjects) { %>
|
|
4
4
|
import { ODataState } from 'imng-kendo-odata';<% } %>
|
|
5
|
-
import { <%= camelize(pluralizedStoreName) %>Feature
|
|
6
|
-
import { <%= camelize(singularizedStoreName) %>Queries } from '../+state/<%= dasherize(singularizedStoreName) %>.selectors';
|
|
7
|
-
import * as <%= camelize(singularizedStoreName) %>ActionTypes from '../+state/<%= dasherize(singularizedStoreName) %>.actions';
|
|
5
|
+
import { <%= camelize(pluralizedStoreName) %>Feature, <%= camelize(singularizedStoreName) %>Selectors, <%= camelize(singularizedStoreName) %>ActionTypes } from '../+state';
|
|
8
6
|
|
|
9
7
|
@Injectable()
|
|
10
8
|
export class <%= classify(name) %>CrudFacade implements IDataEntryFacade<I<%= classify(name) %>> {
|
|
11
9
|
loading$ = this.store.select(<%= camelize(pluralizedStoreName) %>Feature.selectLoading);
|
|
12
|
-
currentEntity$ = this.store.select(<%= camelize(
|
|
13
|
-
isEditActive$ = this.store.select(<%= camelize(singularizedStoreName) %>
|
|
14
|
-
isNewActive$ = this.store.select(<%= camelize(singularizedStoreName) %>
|
|
10
|
+
currentEntity$ = this.store.select(<%= camelize(pluralizedStoreName) %>Feature.selectCurrent<%= classify(name) %>);
|
|
11
|
+
isEditActive$ = this.store.select(<%= camelize(singularizedStoreName) %>Selectors.selectIsEdit<%= classify(name) %>Active);
|
|
12
|
+
isNewActive$ = this.store.select(<%= camelize(singularizedStoreName) %>Selectors.selectIsNew<%= classify(name) %>Active);<% swaggerObjectProperties.filter(t=> !t.enum).forEach(function(swaggerProperty){ %>
|
|
15
13
|
<%= camelize(swaggerProperty.pluralizedName) %>$ = this.store.select(<%= camelize(pluralizedStoreName) %>Feature.select<%= classify(swaggerProperty.pluralizedName) %>);<% }); %>
|
|
16
14
|
|
|
17
15
|
constructor(private readonly store: Store) {}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.imngCrud =
|
|
3
|
+
exports.imngCrud = imngCrud;
|
|
4
4
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
5
|
const shared_1 = require("../shared");
|
|
6
6
|
function imngCrud(_options) {
|
|
@@ -8,5 +8,4 @@ function imngCrud(_options) {
|
|
|
8
8
|
return (0, schematics_1.chain)([(0, shared_1.getSwaggerDoc)(_options), (0, shared_1.generateFiles)(_options, 'crud')])(tree, _context);
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
exports.imngCrud = imngCrud;
|
|
12
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/imng-crud/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/imng-crud/index.ts"],"names":[],"mappings":";;AAGA,4BAIC;AAPD,2DAAiF;AACjF,sCAAmE;AAEnE,SAAgB,QAAQ,CAAC,QAAkB;IACzC,OAAO,CAAC,IAAU,EAAE,QAA0B,EAAE,EAAE;QAChD,OAAO,IAAA,kBAAK,EAAC,CAAC,IAAA,sBAAa,EAAC,QAAQ,CAAC,EAAE,IAAA,sBAAa,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3F,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { <%= classify(singularizedName) %>ListComponent } from './list.component';
|
|
2
2
|
export { <%= classify(singularizedName) %>ListFacade } from './list.facade';
|
|
3
|
-
export { <%=
|
|
3
|
+
export { <%= camelize(singularizedName) %>GridState } from './list.grid-state';
|
|
@@ -8,11 +8,9 @@ import { ODataState, createODataPayload, createODataResult, ODataService } from
|
|
|
8
8
|
import { testDeleteCurrentEntity } from 'imng-kendo-data-entry/testing';
|
|
9
9
|
import { Observable, of } from 'rxjs';
|
|
10
10
|
|
|
11
|
-
import { <%= classify(singularizedStoreName) %>
|
|
12
|
-
import * as <%= camelize(singularizedStoreName) %>ActionTypes from '../+state/<%= dasherize(singularizedStoreName) %>.actions';
|
|
13
|
-
import { <%= camelize(pluralizedStoreName) %>Feature } from '../+state/<%= dasherize(singularizedStoreName) %>.reducer';
|
|
11
|
+
import { <%= camelize(pluralizedStoreName) %>Feature, <%= classify(singularizedStoreName) %>ListEffects, <%= classify(singularizedStoreName) %>CrudEffects } from '../+state';
|
|
14
12
|
import { <%= classify(singularizedName) %>ListFacade } from './list.facade';
|
|
15
|
-
import { environment } from '
|
|
13
|
+
import { environment } from '@env';
|
|
16
14
|
|
|
17
15
|
describe('<%= classify(singularizedName) %>ListFacade', () => {
|
|
18
16
|
let facade: <%= classify(singularizedName) %>ListFacade;
|
|
@@ -27,7 +25,7 @@ describe('<%= classify(singularizedName) %>ListFacade', () => {
|
|
|
27
25
|
@NgModule({
|
|
28
26
|
imports: [
|
|
29
27
|
StoreModule.forFeature(<%= camelize(pluralizedStoreName) %>Feature),
|
|
30
|
-
EffectsModule.forFeature([<%= classify(singularizedStoreName) %>
|
|
28
|
+
EffectsModule.forFeature([<%= classify(singularizedStoreName) %>ListEffects, <%= classify(singularizedStoreName) %>CrudEffects]),
|
|
31
29
|
],
|
|
32
30
|
providers: [
|
|
33
31
|
<%= classify(singularizedName) %>ListFacade,
|
|
@@ -4,8 +4,7 @@ import { IDataDeleteFacade } from 'imng-kendo-data-entry';
|
|
|
4
4
|
import { IKendoODataGridFacade } from 'imng-kendo-grid-odata';
|
|
5
5
|
import { ODataState } from 'imng-kendo-odata';
|
|
6
6
|
|
|
7
|
-
import { <%= camelize(pluralizedStoreName) %>Feature } from '../+state
|
|
8
|
-
import * as <%= camelize(storeName) %>ActionTypes from '../+state/<%= dasherize(singularizedStoreName) %>.actions';
|
|
7
|
+
import { <%= camelize(pluralizedStoreName) %>Feature, <%= camelize(storeName) %>ActionTypes } from '../+state';
|
|
9
8
|
|
|
10
9
|
@Injectable()
|
|
11
10
|
export class <%= classify(singularizedName) %>ListFacade implements IKendoODataGridFacade<I<%= classify(name) %>>, IDataDeleteFacade<I<%= classify(name) %>> {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.imngList =
|
|
3
|
+
exports.imngList = imngList;
|
|
4
4
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
5
|
const shared_1 = require("../shared");
|
|
6
6
|
function imngList(_options) {
|
|
@@ -8,5 +8,4 @@ function imngList(_options) {
|
|
|
8
8
|
return (0, schematics_1.chain)([(0, shared_1.getSwaggerDoc)(_options), (0, shared_1.generateFiles)(_options, 'list')])(tree, _context);
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
exports.imngList = imngList;
|
|
12
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/imng-list/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/imng-list/index.ts"],"names":[],"mappings":";;AAGA,4BAIC;AAPD,2DAAiF;AACjF,sCAAmE;AAEnE,SAAgB,QAAQ,CAAC,QAAkB;IACzC,OAAO,CAAC,IAAU,EAAE,QAA0B,EAAE,EAAE;QAChD,OAAO,IAAA,kBAAK,EAAC,CAAC,IAAA,sBAAa,EAAC,QAAQ,CAAC,EAAE,IAAA,sBAAa,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3F,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,52 +1,21 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Store } from '@ngrx/store';
|
|
3
2
|
import { createEffect, Actions, ofType } from '@ngrx/effects';
|
|
4
|
-
import { concatLatestFrom } from '@ngrx/operators';
|
|
5
3
|
import { ODataService } from 'imng-kendo-odata';
|
|
6
4
|
import { handleEffectError } from 'imng-ngrx-utils';
|
|
7
5
|
import { map, switchMap } from 'rxjs/operators';
|
|
8
6
|
|
|
9
|
-
import { <%= camelize(pluralizedStoreName) %>Feature } from './<%= dasherize(singularizedName) %>.reducer';
|
|
10
7
|
import * as <%= camelize(singularizedName) %>ActionTypes from './<%= dasherize(singularizedName) %>.actions';
|
|
11
|
-
import { environment } from '../../../../environments/environment';
|
|
12
8
|
<% if (openApiJsonUrl || openApiJsonFileName) { %>
|
|
13
|
-
import { <%= classify(singularizedName) %>ApiService } from '../<%= dasherize(pluralizedName) %>-crud';
|
|
9
|
+
import { <%= classify(singularizedName) %>ApiService } from '../<%= dasherize(pluralizedName) %>-crud/api.service';
|
|
14
10
|
<% } %>
|
|
15
11
|
@Injectable()
|
|
16
|
-
export class <%= classify(singularizedName) %>
|
|
12
|
+
export class <%= classify(singularizedName) %>CrudEffects {
|
|
17
13
|
constructor(
|
|
18
14
|
private readonly actions$: Actions,
|
|
19
15
|
private readonly odataService: ODataService,
|
|
20
|
-
private readonly store: Store,
|
|
21
16
|
private readonly <%= camelize(singularizedName) %>ApiService : <%= classify(singularizedName) %>ApiService,
|
|
22
17
|
) {}
|
|
23
18
|
<% if (openApiJsonUrl || openApiJsonFileName) { %>
|
|
24
|
-
load<%= classify(pluralizedName) %>Effect$ = createEffect(() => {
|
|
25
|
-
return this.actions$.pipe(
|
|
26
|
-
ofType(<%= camelize(singularizedName) %>ActionTypes.load<%= classify(pluralizedName) %>Request),
|
|
27
|
-
switchMap((action: ReturnType<typeof <%= camelize(singularizedName) %>ActionTypes.load<%= classify(pluralizedName) %>Request>) => this.odataService
|
|
28
|
-
.fetch<I<%= classify(name) %>>(environment.odataEndpoints.<%= camelize(pluralizedName) %>, action.payload<% if(hasNullableDates){ %>, {
|
|
29
|
-
dateNullableProps: [<% swaggerProperties.filter(t=> (t.format==='date-time' || t.format === 'date') && !t.required).forEach((swaggerProperty,i,arr) => { %><%= classify(singularizedName) %>Properties.<%= swaggerProperty.snakeCaseName.toUpperCase() %><% if (i !== arr.length-1){%>, <% } }) %>],
|
|
30
|
-
}<% } %>)
|
|
31
|
-
.pipe(
|
|
32
|
-
map(t => <%= camelize(singularizedName) %>ActionTypes.load<%= classify(pluralizedName) %>Success(t)),
|
|
33
|
-
handleEffectError(action))));
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
reload<%= classify(pluralizedName) %>Effect$ = createEffect(() => {
|
|
37
|
-
return this.actions$.pipe(
|
|
38
|
-
ofType(<%= camelize(singularizedName) %>ActionTypes.reload<%= classify(pluralizedName) %>Request),
|
|
39
|
-
concatLatestFrom(() => this.store.select(<%= camelize(pluralizedStoreName) %>Feature.selectGridODataState)),
|
|
40
|
-
switchMap(([action, odataState]) => this.odataService
|
|
41
|
-
.fetch<I<%= classify(singularizedName) %>>(environment.odataEndpoints.<%= camelize(pluralizedName) %>, odataState, {
|
|
42
|
-
bustCache: true,<% if(hasNullableDates){ %>
|
|
43
|
-
dateNullableProps: [<% swaggerProperties.filter(t=> (t.format==='date-time' || t.format === 'date') && !t.required).forEach((swaggerProperty,i,arr)=> { %><%= classify(singularizedName) %>Properties.<%= swaggerProperty.snakeCaseName.toUpperCase() %><% if (i !== arr.length-1){%>, <% } }) %>],<% } %>
|
|
44
|
-
})
|
|
45
|
-
.pipe(
|
|
46
|
-
map(t => <%= camelize(singularizedName) %>ActionTypes.reload<%= classify(pluralizedName) %>Success(t)),
|
|
47
|
-
handleEffectError(action))));
|
|
48
|
-
});
|
|
49
|
-
|
|
50
19
|
save<%= classify(singularizedName) %>Effect$ = createEffect(() => {
|
|
51
20
|
return this.actions$.pipe(
|
|
52
21
|
ofType(<%= camelize(singularizedName) %>ActionTypes.save<%= classify(singularizedName) %>Request),
|
package/schematics/imng-module/files/+state/__singularizedName@dasherize__-list.effects.ts.template
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Store } from '@ngrx/store';
|
|
3
|
+
import { createEffect, Actions, ofType } from '@ngrx/effects';
|
|
4
|
+
import { concatLatestFrom } from '@ngrx/operators';
|
|
5
|
+
import { ODataService } from 'imng-kendo-odata';
|
|
6
|
+
import { handleEffectError } from 'imng-ngrx-utils';
|
|
7
|
+
import { map, switchMap } from 'rxjs/operators';
|
|
8
|
+
|
|
9
|
+
import { <%= camelize(pluralizedStoreName) %>Feature } from './<%= dasherize(singularizedName) %>.feature';
|
|
10
|
+
import * as <%= camelize(singularizedName) %>ActionTypes from './<%= dasherize(singularizedName) %>.actions';
|
|
11
|
+
import { environment } from '@env';
|
|
12
|
+
|
|
13
|
+
@Injectable()
|
|
14
|
+
export class <%= classify(singularizedName) %>ListEffects {
|
|
15
|
+
constructor(
|
|
16
|
+
private readonly actions$: Actions,
|
|
17
|
+
private readonly odataService: ODataService,
|
|
18
|
+
private readonly store: Store,
|
|
19
|
+
) {}
|
|
20
|
+
<% if (openApiJsonUrl || openApiJsonFileName) { %>
|
|
21
|
+
load<%= classify(pluralizedName) %>Effect$ = createEffect(() => {
|
|
22
|
+
return this.actions$.pipe(
|
|
23
|
+
ofType(<%= camelize(singularizedName) %>ActionTypes.load<%= classify(pluralizedName) %>Request),
|
|
24
|
+
switchMap((action: ReturnType<typeof <%= camelize(singularizedName) %>ActionTypes.load<%= classify(pluralizedName) %>Request>) => this.odataService
|
|
25
|
+
.fetch<I<%= classify(name) %>>(environment.odataEndpoints.<%= camelize(pluralizedName) %>, action.payload<% if(hasNullableDates){ %>, {
|
|
26
|
+
dateNullableProps: [<% swaggerProperties.filter(t=> (t.format==='date-time' || t.format === 'date') && !t.required).forEach((swaggerProperty,i,arr) => { %><%= classify(singularizedName) %>Properties.<%= swaggerProperty.snakeCaseName.toUpperCase() %><% if (i !== arr.length-1){%>, <% } }) %>],
|
|
27
|
+
}<% } %>)
|
|
28
|
+
.pipe(
|
|
29
|
+
map(t => <%= camelize(singularizedName) %>ActionTypes.load<%= classify(pluralizedName) %>Success(t)),
|
|
30
|
+
handleEffectError(action))));
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
reload<%= classify(pluralizedName) %>Effect$ = createEffect(() => {
|
|
34
|
+
return this.actions$.pipe(
|
|
35
|
+
ofType(<%= camelize(singularizedName) %>ActionTypes.reload<%= classify(pluralizedName) %>Request),
|
|
36
|
+
concatLatestFrom(() => this.store.select(<%= camelize(pluralizedStoreName) %>Feature.selectGridODataState)),
|
|
37
|
+
switchMap(([action, odataState]) => this.odataService
|
|
38
|
+
.fetch<I<%= classify(singularizedName) %>>(environment.odataEndpoints.<%= camelize(pluralizedName) %>, odataState, {
|
|
39
|
+
bustCache: true,<% if(hasNullableDates){ %>
|
|
40
|
+
dateNullableProps: [<% swaggerProperties.filter(t=> (t.format==='date-time' || t.format === 'date') && !t.required).forEach((swaggerProperty,i,arr)=> { %><%= classify(singularizedName) %>Properties.<%= swaggerProperty.snakeCaseName.toUpperCase() %><% if (i !== arr.length-1){%>, <% } }) %>],<% } %>
|
|
41
|
+
})
|
|
42
|
+
.pipe(
|
|
43
|
+
map(t => <%= camelize(singularizedName) %>ActionTypes.reload<%= classify(pluralizedName) %>Success(t)),
|
|
44
|
+
handleEffectError(action))));
|
|
45
|
+
});
|
|
46
|
+
<% } %>}
|
package/schematics/imng-module/files/+state/__singularizedName@dasherize__.selectors.ts.template
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createSelector } from '@ngrx/store';
|
|
2
|
-
import { <%= camelize(pluralizedStoreName) %>Feature } from './<%= dasherize(singularizedName) %>.
|
|
2
|
+
import { <%= camelize(pluralizedStoreName) %>Feature } from './<%= dasherize(singularizedName) %>.feature';
|
|
3
3
|
import { isTruthy } from 'imng-ngrx-utils';
|
|
4
4
|
<% if (openApiJsonUrl || openApiJsonFileName) { %>
|
|
5
5
|
const selectIsEdit<%= classify(name) %>Active = createSelector(
|
|
@@ -8,10 +8,10 @@ const selectIsEdit<%= classify(name) %>Active = createSelector(
|
|
|
8
8
|
const selectIsNew<%= classify(name) %>Active = createSelector(
|
|
9
9
|
<%= camelize(pluralizedStoreName) %>Feature.selectCurrent<%= classify(name) %>,
|
|
10
10
|
(entity) => isTruthy(entity) && !isTruthy(entity?.id));
|
|
11
|
-
export const <%= camelize(singularizedName) %>
|
|
11
|
+
export const <%= camelize(singularizedName) %>Selectors = {
|
|
12
12
|
selectIsEdit<%= classify(name) %>Active,
|
|
13
13
|
selectIsNew<%= classify(name) %>Active,
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
<% } else { %>
|
|
17
|
-
export const <%= camelize(singularizedName) %>
|
|
17
|
+
export const <%= camelize(singularizedName) %>Selectors = {};<% } %>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * as <%= camelize(singularizedName) %>ActionTypes from './<%= dasherize(singularizedName) %>.actions';
|
|
2
|
+
export { <%= camelize(pluralizedStoreName) %>Feature } from './<%= dasherize(singularizedName) %>.feature';
|
|
3
|
+
export { <%= classify(singularizedName) %>ListEffects } from './<%= dasherize(singularizedName) %>-list.effects';
|
|
4
|
+
export { <%= classify(singularizedName) %>CrudEffects } from './<%= dasherize(singularizedName) %>-crud.effects';
|
|
5
|
+
export { <%= camelize(singularizedName) %>Selectors } from './<%= dasherize(singularizedName) %>.selectors'
|
|
@@ -14,8 +14,7 @@ import { ImngDataEntryDialogModule } from 'imng-kendo-data-entry';
|
|
|
14
14
|
import { ImngKendoGridFilteringModule } from 'imng-kendo-grid-filtering';
|
|
15
15
|
|
|
16
16
|
import { <%= classify(pluralizedName) %>RoutingModule } from './<%= dasherize(pluralizedName) %>.routing';
|
|
17
|
-
import { <%= camelize(pluralizedStoreName) %>Feature
|
|
18
|
-
import { <%= classify(singularizedName) %>Effects } from './+state/<%= dasherize(singularizedName) %>.effects';
|
|
17
|
+
import { <%= camelize(pluralizedStoreName) %>Feature, <%= classify(singularizedName) %>ListEffects, <%= classify(singularizedName) %>CrudEffects } from './+state';
|
|
19
18
|
<% if (openApiJsonUrl || openApiJsonFileName) { %>
|
|
20
19
|
import { <%= classify(singularizedName) %>ListComponent, <%= classify(singularizedName) %>ListFacade } from './<%= dasherize(pluralizedName) %>-list';
|
|
21
20
|
import { <%= classify(singularizedName) %>AddComponent, <%= classify(singularizedName) %>EditComponent, <%= classify(singularizedName) %>ApiService, <%= classify(singularizedName) %>CrudFacade } from './<%= dasherize(pluralizedName) %>-crud';
|
|
@@ -39,7 +38,7 @@ import { <%= classify(singularizedName) %>AddComponent, <%= classify(singularize
|
|
|
39
38
|
ReactiveFormsModule,
|
|
40
39
|
<%= classify(pluralizedName) %>RoutingModule,
|
|
41
40
|
StoreModule.forFeature(<%= camelize(pluralizedStoreName) %>Feature),
|
|
42
|
-
EffectsModule.forFeature([<%= classify(singularizedName) %>
|
|
41
|
+
EffectsModule.forFeature([<%= classify(singularizedName) %>ListEffects, <%= classify(singularizedName) %>CrudEffects]),
|
|
43
42
|
],
|
|
44
43
|
providers: [
|
|
45
44
|
<% if (openApiJsonUrl || openApiJsonFileName) { %><%= classify(singularizedName) %>ListFacade,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.imngModule =
|
|
3
|
+
exports.imngModule = imngModule;
|
|
4
4
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
5
|
const shared_1 = require("../shared");
|
|
6
6
|
const pluralize = require("pluralize");
|
|
@@ -8,8 +8,9 @@ const path_1 = require("path");
|
|
|
8
8
|
const strings_1 = require("@angular-devkit/core/src/utils/strings");
|
|
9
9
|
function imngModule(_options) {
|
|
10
10
|
return (tree, _context) => {
|
|
11
|
-
|
|
12
|
-
const
|
|
11
|
+
var _a, _b;
|
|
12
|
+
const listOptions = Object.assign(Object.assign({}, _options), { storeName: (_a = _options.storeName) !== null && _a !== void 0 ? _a : _options.name, path: (0, path_1.normalize)(`${_options.path}/${(0, strings_1.dasherize)(pluralize.plural(_options.name))}-module`) });
|
|
13
|
+
const crudOptions = Object.assign(Object.assign({}, _options), { storeName: (_b = _options.storeName) !== null && _b !== void 0 ? _b : _options.name, path: (0, path_1.normalize)(`${_options.path}/${(0, strings_1.dasherize)(pluralize.plural(_options.name))}-module`) });
|
|
13
14
|
return (0, schematics_1.chain)([
|
|
14
15
|
(0, shared_1.getSwaggerDoc)(_options),
|
|
15
16
|
(0, shared_1.generateFiles)(_options, 'module'),
|
|
@@ -18,5 +19,4 @@ function imngModule(_options) {
|
|
|
18
19
|
])(tree, _context);
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
|
-
exports.imngModule = imngModule;
|
|
22
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/imng-module/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/imng-module/index.ts"],"names":[],"mappings":";;AAOA,gCAoBC;AA3BD,2DAAkG;AAClG,sCAAmE;AACnE,uCAAuC;AACvC,+BAAiC;AACjC,oEAAmE;AAGnE,SAAgB,UAAU,CAAC,QAAkB;IAC3C,OAAO,CAAC,IAAU,EAAE,QAA0B,EAAE,EAAE;;QAChD,MAAM,WAAW,mCACZ,QAAQ,KACX,SAAS,EAAE,MAAA,QAAQ,CAAC,SAAS,mCAAI,QAAQ,CAAC,IAAI,EAC9C,IAAI,EAAE,IAAA,gBAAS,EAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAA,mBAAS,EAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GACzF,CAAC;QACF,MAAM,WAAW,mCACZ,QAAQ,KACX,SAAS,EAAE,MAAA,QAAQ,CAAC,SAAS,mCAAI,QAAQ,CAAC,IAAI,EAC9C,IAAI,EAAE,IAAA,gBAAS,EAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAA,mBAAS,EAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GACzF,CAAC;QAEF,OAAO,IAAA,kBAAK,EAAC;YACX,IAAA,sBAAa,EAAC,QAAQ,CAAC;YACvB,IAAA,sBAAa,EAAC,QAAQ,EAAE,QAAQ,CAAC;YACjC,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAA,sBAAS,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAI,GAAE;YACtG,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAA,sBAAS,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAI,GAAE;SACvG,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC"}
|
package/schematics/imng-sub-list/files/+state/__singularizedName@dasherize__.effects.ts.template
CHANGED
|
@@ -6,10 +6,10 @@ import { handleEffectError } from 'imng-ngrx-utils';
|
|
|
6
6
|
import { map, switchMap } from 'rxjs/operators';
|
|
7
7
|
|
|
8
8
|
import * as <%= camelize(singularizedName) %>ActionTypes from './<%= dasherize(singularizedName) %>.actions';
|
|
9
|
-
import { <%= camelize(singularizedName) %>
|
|
9
|
+
import { <%= camelize(singularizedName) %>Selectors } from './<%= dasherize(singularizedName) %>.selectors';<% if (openApiJsonUrl || openApiJsonFileName) { %>
|
|
10
10
|
import { <%= classify(singularizedName) %>ApiService } from '../<%= dasherize(pluralizedName) %>-list';
|
|
11
11
|
<% } %>
|
|
12
|
-
import { environment } from '
|
|
12
|
+
import { environment } from '@env';
|
|
13
13
|
|
|
14
14
|
@Injectable()
|
|
15
15
|
export class <%= classify(singularizedName) %>Effects {
|
|
@@ -34,7 +34,7 @@ export class <%= classify(singularizedName) %>Effects {
|
|
|
34
34
|
return this.actions$.pipe(
|
|
35
35
|
ofType(<%= camelize(singularizedName) %>ActionTypes.reload<%= classify(pluralizedName) %>Request),
|
|
36
36
|
concatLatestFrom((action: ReturnType<typeof <%= camelize(singularizedName) %>ActionTypes.reload<%= classify(pluralizedName) %>Request>) =>
|
|
37
|
-
this.store.select(<%= camelize(singularizedName) %>
|
|
37
|
+
this.store.select(<%= camelize(singularizedName) %>Selectors.selectODataState$(action.payload))),
|
|
38
38
|
switchMap(([action, odataState]) => this.odataService
|
|
39
39
|
.fetch<I<%= classify(singularizedName) %>>(environment.odataEndpoints.<%= camelize(pluralizedName) %>, odataState, { bustCache: true })
|
|
40
40
|
.pipe(
|
package/schematics/imng-sub-list/files/+state/__singularizedName@dasherize__.selectors.ts.template
CHANGED
|
@@ -26,11 +26,11 @@ const selectGridPagerSettings$ = (<%= camelize(parentName) %>Id: string) => crea
|
|
|
26
26
|
entity => entity.<%= camelize(singularizedName) %>PagerSettings || false,
|
|
27
27
|
);
|
|
28
28
|
|
|
29
|
-
export const <%= camelize(singularizedName) %>
|
|
29
|
+
export const <%= camelize(singularizedName) %>Selectors = {
|
|
30
30
|
select<%= classify(pluralizedName) %>,
|
|
31
31
|
selectGridData$,
|
|
32
32
|
selectODataState$,
|
|
33
33
|
selectGridPagerSettings$,
|
|
34
34
|
};
|
|
35
35
|
<% } else { %>
|
|
36
|
-
export const <%= camelize(singularizedName) %>
|
|
36
|
+
export const <%= camelize(singularizedName) %>Selectors = {};<% } %>
|
package/schematics/imng-sub-list/files/__pluralizedName@dasherize__-list/api.service.ts.template
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { NrsrxBaseApiClientService } from 'imng-nrsrx-client-utils';
|
|
3
3
|
import { HttpClient } from '@angular/common/http';
|
|
4
|
-
import { environment } from '
|
|
4
|
+
import { environment } from '@env';
|
|
5
5
|
|
|
6
6
|
@Injectable({
|
|
7
7
|
providedIn: 'root',
|
|
@@ -14,7 +14,7 @@ import { <%= classify(singularizedName) %>Effects } from '../+state/<%= dasheriz
|
|
|
14
14
|
import { <%= camelize(pluralizedStoreName) %>Feature } from '../+state/<%= dasherize(singularizedStoreName) %>.reducer';
|
|
15
15
|
import { <%= classify(singularizedName) %>ListFacade } from './list.facade';
|
|
16
16
|
import { <%= classify(parentName) %>Effects } from '../+state/<%= dasherize(parentName) %>.effects';
|
|
17
|
-
import { environment } from '
|
|
17
|
+
import { environment } from '@env';
|
|
18
18
|
|
|
19
19
|
describe('<%= classify(singularizedName) %>ListFacade', () => {
|
|
20
20
|
let facade: <%= classify(singularizedName) %>ListFacade;
|
package/schematics/imng-sub-list/files/__pluralizedName@dasherize__-list/list.facade.ts.template
CHANGED
|
@@ -8,7 +8,7 @@ import { BehaviorSubject, Observable, switchMap } from 'rxjs';
|
|
|
8
8
|
|
|
9
9
|
import * as <%= camelize(singularizedName) %>ActionTypes from '../+state/<%= dasherize(singularizedName) %>.actions';
|
|
10
10
|
import { <%= camelize(pluralizedStoreName) %>Feature } from '../+state/<%= dasherize(singularizedStoreName) %>.reducer';
|
|
11
|
-
import { <%= camelize(singularizedName) %>
|
|
11
|
+
import { <%= camelize(singularizedName) %>Selectors } from '../+state/<%= dasherize(singularizedName) %>.selectors';
|
|
12
12
|
|
|
13
13
|
@Injectable()
|
|
14
14
|
export class <%= classify(singularizedName) %>ListFacade implements IKendoODataGridFacade<I<%= classify(name) %>>, IDataDeleteFacade<I<%= classify(name) %>> {
|
|
@@ -25,13 +25,13 @@ export class <%= classify(singularizedName) %>ListFacade implements IKendoODataG
|
|
|
25
25
|
loading$ = this.store.select(<%= camelize(pluralizedStoreName) %>Feature.selectLoading);
|
|
26
26
|
gridData$: Observable<ODataResult<I<%= classify(singularizedName) %>>> = this.parentGrid$.pipe(
|
|
27
27
|
switchMap(x =>
|
|
28
|
-
this.store.select(<%= camelize(singularizedName) %>
|
|
28
|
+
this.store.select(<%= camelize(singularizedName) %>Selectors.selectGridData$(x))));
|
|
29
29
|
gridPagerSettings$: Observable<false | PagerSettings> = this.parentGrid$.pipe(
|
|
30
30
|
switchMap(x =>
|
|
31
|
-
this.store.select(<%= camelize(singularizedName) %>
|
|
31
|
+
this.store.select(<%= camelize(singularizedName) %>Selectors.selectGridPagerSettings$(x))));
|
|
32
32
|
gridODataState$: Observable<ODataState> = this.parentGrid$.pipe(
|
|
33
33
|
switchMap(x =>
|
|
34
|
-
this.store.select(<%= camelize(singularizedName) %>
|
|
34
|
+
this.store.select(<%= camelize(singularizedName) %>Selectors.selectODataState$(x))));
|
|
35
35
|
|
|
36
36
|
constructor(private readonly store: Store) {}
|
|
37
37
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.imngSubList =
|
|
3
|
+
exports.imngSubList = imngSubList;
|
|
4
4
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
5
|
const shared_1 = require("../shared");
|
|
6
6
|
function imngSubList(_options) {
|
|
@@ -8,5 +8,4 @@ function imngSubList(_options) {
|
|
|
8
8
|
return (0, schematics_1.chain)([(0, shared_1.getSwaggerDoc)(_options), (0, shared_1.generateFiles)(_options, 'sub-list')])(tree, _context);
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
exports.imngSubList = imngSubList;
|
|
12
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/imng-sub-list/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/imng-sub-list/index.ts"],"names":[],"mappings":";;AAGA,kCAIC;AAPD,2DAAiF;AACjF,sCAAmE;AAEnE,SAAgB,WAAW,CAAC,QAAkB;IAC5C,OAAO,CAAC,IAAU,EAAE,QAA0B,EAAE,EAAE;QAChD,OAAO,IAAA,kBAAK,EAAC,CAAC,IAAA,sBAAa,EAAC,QAAQ,CAAC,EAAE,IAAA,sBAAa,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/F,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ngAdd =
|
|
3
|
+
exports.ngAdd = ngAdd;
|
|
4
4
|
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
|
5
5
|
// Just return the tree
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
|
|
7
7
|
function ngAdd(_options) {
|
|
8
8
|
return (tree, _context) => {
|
|
9
9
|
_context.addTask(new tasks_1.NodePackageInstallTask());
|
|
10
10
|
return tree;
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
|
-
exports.ngAdd = ngAdd;
|
|
14
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ng-add/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ng-add/index.ts"],"names":[],"mappings":";;AAKA,sBAKC;AATD,4DAA0E;AAE1E,uBAAuB;AACvB,iGAAiG;AACjG,SAAgB,KAAK,CAAC,QAAa;IACjC,OAAO,CAAC,IAAU,EAAE,QAA0B,EAAE,EAAE;QAChD,QAAQ,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mapProperties =
|
|
3
|
+
exports.mapProperties = mapProperties;
|
|
4
4
|
const pluralize = require("pluralize");
|
|
5
5
|
const rules_1 = require("./rules");
|
|
6
6
|
const excludedFields = ['createdBy', 'createdOnUtc', 'tenantId', 'updatedBy', 'updatedOnUtc'];
|
|
@@ -21,7 +21,6 @@ function mapProperties(properties, options, openApiComponent, openApiDoc) {
|
|
|
21
21
|
}
|
|
22
22
|
return { firstProperty, filteredProperties };
|
|
23
23
|
}
|
|
24
|
-
exports.mapProperties = mapProperties;
|
|
25
24
|
function mapReferencedProperties(property, propertyKey, openApiComponent, openApiDoc) {
|
|
26
25
|
var _a;
|
|
27
26
|
const prop = openApiComponent.properties[propertyKey];
|
|
@@ -29,7 +28,7 @@ function mapReferencedProperties(property, propertyKey, openApiComponent, openAp
|
|
|
29
28
|
if (propTypeNames) {
|
|
30
29
|
const typeName = propTypeNames.pop() || '';
|
|
31
30
|
property.propertyTypeName = typeName;
|
|
32
|
-
property.pluralizedPropertyTypeName = pluralize(typeName);
|
|
31
|
+
property.pluralizedPropertyTypeName = pluralize.plural(typeName);
|
|
33
32
|
property.singularizedPropertyTypeName = pluralize.singular(typeName);
|
|
34
33
|
const refComponent = openApiDoc.components.schemas[typeName];
|
|
35
34
|
property.enum = refComponent.enum;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-properties.js","sourceRoot":"","sources":["../../../src/shared/map-properties.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"map-properties.js","sourceRoot":"","sources":["../../../src/shared/map-properties.ts"],"names":[],"mappings":";;AAOA,sCAoBC;AA3BD,uCAAuC;AAGvC,mCAAgD;AAEhD,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAE9F,SAAgB,aAAa,CAAC,UAA4C,EAAE,OAAiB,EAAE,gBAAkC,EAAE,UAA2B;;IAC5J,IAAI,aAAuC,CAAC;IAC5C,MAAM,kBAAkB,GAAmB,EAAE,CAAC;IAC9C,KAAK,MAAM,WAAW,IAAI,UAAU,EAAE,CAAC;QACrC,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjF,MAAM,QAAQ,GAAG,IAAA,6BAAqB,EAAC,OAAO,EAAE,gBAAgB,kCAC3D,UAAU,CAAC,WAAW,CAAC,KAC1B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,MAAA,gBAAgB,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IACrE,CAAC;YAEH,uBAAuB,CAAC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;YAC7E,IAAI,CAAC,aAAa,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBAC3C,aAAa,GAAG,QAAQ,CAAC;YAC3B,CAAC;YACD,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;AAC/C,CAAC;AACD,SAAS,uBAAuB,CAAC,QAAsB,EAAE,WAAmB,EAAE,gBAAkC,EAAE,UAA2B;;IAC3I,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,0CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAW,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACnD,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACrC,QAAQ,CAAC,0BAA0B,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjE,QAAQ,CAAC,4BAA4B,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7D,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAClC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC3D,QAAQ,CAAC,gBAAgB,GAAG,GAAG,QAAQ,CAAC,0BAA0B,IAAI,KAAK,EAAE,CAAA;QAC/E,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getSwaggerDoc = getSwaggerDoc;
|
|
4
|
+
exports.processOpenApiDoc = processOpenApiDoc;
|
|
5
|
+
exports.mapPropertyAttributes = mapPropertyAttributes;
|
|
6
|
+
exports.generateFiles = generateFiles;
|
|
4
7
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
8
|
const core_1 = require("@angular-devkit/core");
|
|
6
9
|
const axios_1 = require("axios");
|
|
@@ -42,7 +45,6 @@ function getSwaggerDoc(options) {
|
|
|
42
45
|
return (0, rxjs_1.of)(host);
|
|
43
46
|
};
|
|
44
47
|
}
|
|
45
|
-
exports.getSwaggerDoc = getSwaggerDoc;
|
|
46
48
|
function getFileNames(openApiJsonFileName) {
|
|
47
49
|
const fileName = `${__dirname}/${openApiJsonFileName}`;
|
|
48
50
|
if (fs.existsSync(fileName)) {
|
|
@@ -62,7 +64,7 @@ function processOpenApiDoc(data, options, host) {
|
|
|
62
64
|
mappedProperties.filteredProperties.filter(f => f.$ref).forEach(property => {
|
|
63
65
|
var _a;
|
|
64
66
|
const componentName = (_a = property.$ref) === null || _a === void 0 ? void 0 : _a.split('/').pop();
|
|
65
|
-
const component = data.components.schemas[componentName
|
|
67
|
+
const component = data.components.schemas[componentName !== null && componentName !== void 0 ? componentName : ''];
|
|
66
68
|
if (component) {
|
|
67
69
|
property.properties = (0, map_properties_1.mapProperties)(component.properties, options, component, data).filteredProperties;
|
|
68
70
|
property.firstProperty = property.properties.find(prop => { var _a; return ((_a = prop.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== 'id'; });
|
|
@@ -75,8 +77,8 @@ function processOpenApiDoc(data, options, host) {
|
|
|
75
77
|
options.hasNullableDates = options.swaggerProperties.some(t => (t.format === 'date-time' || t.format === 'date') && !t.required);
|
|
76
78
|
return host;
|
|
77
79
|
}
|
|
78
|
-
exports.processOpenApiDoc = processOpenApiDoc;
|
|
79
80
|
function mapPropertyAttributes(options, source, dest) {
|
|
81
|
+
var _a;
|
|
80
82
|
if (source.type === 'number' || source.type === 'integer') {
|
|
81
83
|
dest.htmlInputType = 'number';
|
|
82
84
|
dest.filterExpression = 'numeric';
|
|
@@ -97,7 +99,7 @@ function mapPropertyAttributes(options, source, dest) {
|
|
|
97
99
|
dest.htmlInputType = 'object';
|
|
98
100
|
dest.filterExpression = 'text';
|
|
99
101
|
dest.$ref = source.$ref;
|
|
100
|
-
dest.pluralizedName = pluralize(dest.name
|
|
102
|
+
dest.pluralizedName = pluralize((_a = dest.name) !== null && _a !== void 0 ? _a : '', plural);
|
|
101
103
|
dest.testFactoryValue = '{}';
|
|
102
104
|
}
|
|
103
105
|
else {
|
|
@@ -110,7 +112,6 @@ function mapPropertyAttributes(options, source, dest) {
|
|
|
110
112
|
dest.startCaseName = _.startCase(dest.name);
|
|
111
113
|
return dest;
|
|
112
114
|
}
|
|
113
|
-
exports.mapPropertyAttributes = mapPropertyAttributes;
|
|
114
115
|
const singular = 1;
|
|
115
116
|
const plural = 2;
|
|
116
117
|
function generateFiles(options, templateType) {
|
|
@@ -142,5 +143,4 @@ function generateFiles(options, templateType) {
|
|
|
142
143
|
return (0, schematics_1.chain)([(0, schematics_1.mergeWith)(templateSource)])(tree, context);
|
|
143
144
|
};
|
|
144
145
|
}
|
|
145
|
-
exports.generateFiles = generateFiles;
|
|
146
146
|
//# sourceMappingURL=rules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/shared/rules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/shared/rules.ts"],"names":[],"mappings":"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"}
|