imng-kendo-schematics 6.292.5 → 7.222.2

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.
Files changed (38) hide show
  1. package/package.json +1 -1
  2. package/schematics/imng-crud/files/add.component.spec.ts.template +5 -6
  3. package/schematics/imng-crud/files/api.service.ts.template +2 -2
  4. package/schematics/imng-crud/files/base-entry.component.ts.template +1 -1
  5. package/schematics/imng-crud/files/crud.facade.spec.ts.template +4 -5
  6. package/schematics/imng-crud/files/crud.facade.ts.template +4 -6
  7. package/schematics/imng-crud/files/edit.component.spec.ts.template +5 -5
  8. package/schematics/imng-crud/index.js +1 -2
  9. package/schematics/imng-crud/index.js.map +1 -1
  10. package/schematics/imng-list/files/index.ts.template +1 -1
  11. package/schematics/imng-list/files/list.component.spec.ts.template +13 -9
  12. package/schematics/imng-list/files/list.facade.spec.ts.template +7 -9
  13. package/schematics/imng-list/files/list.facade.ts.template +1 -2
  14. package/schematics/imng-list/index.js +1 -2
  15. package/schematics/imng-list/index.js.map +1 -1
  16. package/schematics/imng-module/files/+state/{__singularizedName@dasherize__.effects.ts.template → __singularizedName@dasherize__-crud.effects.ts.template} +3 -33
  17. package/schematics/imng-module/files/+state/__singularizedName@dasherize__-list.effects.ts.template +46 -0
  18. package/schematics/imng-module/files/+state/__singularizedName@dasherize__.selectors.ts.template +3 -3
  19. package/schematics/imng-module/files/+state/index.ts.template +5 -0
  20. package/schematics/imng-module/files/__pluralizedName@dasherize__.module.ts.template +2 -3
  21. package/schematics/imng-module/files/__pluralizedName@dasherize__.routing.ts.template +2 -2
  22. package/schematics/imng-module/index.js +4 -4
  23. package/schematics/imng-module/index.js.map +1 -1
  24. package/schematics/imng-sub-list/files/+state/__singularizedName@dasherize__.effects.ts.template +3 -3
  25. package/schematics/imng-sub-list/files/+state/__singularizedName@dasherize__.selectors.ts.template +2 -2
  26. package/schematics/imng-sub-list/files/__pluralizedName@dasherize__-list/api.service.ts.template +1 -1
  27. package/schematics/imng-sub-list/files/__pluralizedName@dasherize__-list/list.component.spec.ts.template +5 -5
  28. package/schematics/imng-sub-list/files/__pluralizedName@dasherize__-list/list.facade.spec.ts.template +5 -5
  29. package/schematics/imng-sub-list/files/__pluralizedName@dasherize__-list/list.facade.ts.template +4 -4
  30. package/schematics/imng-sub-list/index.js +1 -2
  31. package/schematics/imng-sub-list/index.js.map +1 -1
  32. package/schematics/ng-add/index.js +2 -3
  33. package/schematics/ng-add/index.js.map +1 -1
  34. package/schematics/shared/map-properties.js +2 -3
  35. package/schematics/shared/map-properties.js.map +1 -1
  36. package/schematics/shared/rules.js +7 -7
  37. package/schematics/shared/rules.js.map +1 -1
  38. /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": "6.292.5",
3
+ "version": "7.222.2",
4
4
  "description": "Angular Schematics facilitating Angular, Kendo, NGRX and imng package integration",
5
5
  "scripts": {
6
6
  "build": "tsc -p tsconfig.json",
@@ -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){ %>
@@ -68,8 +67,8 @@ describe('<%= classify(name) %>AddComponent', () => {
68
67
  facade.updateExistingEntity = jest.fn();
69
68
  expect(component.getFormErrors()).toStrictEqual([]);
70
69
  component.onSubmit();
71
- expect(facade.saveNewEntity).toBeCalledTimes(1);
72
- expect(facade.updateExistingEntity).toBeCalledTimes(0);
70
+ expect(facade.saveNewEntity).toHaveBeenCalledTimes(1);
71
+ expect(facade.updateExistingEntity).toHaveBeenCalledTimes(0);
73
72
  <% if (hasDates) { %>
74
73
  expect(item).toMatchSnapshot({
75
74
  <% swaggerProperties.filter(t=> t.format === 'date-time' || t.format === 'date').forEach(function(swaggerProperty)
@@ -87,15 +86,15 @@ describe('<%= classify(name) %>AddComponent', () => {
87
86
  const consoleErrorMock = mockConsoleError();
88
87
  component.addEditForm?.patchValue({});
89
88
  component.onSubmit();
90
- expect(facade.saveNewEntity).toBeCalledTimes(0);
91
- expect(facade.updateExistingEntity).toBeCalledTimes(0);
89
+ expect(facade.saveNewEntity).toHaveBeenCalledTimes(0);
90
+ expect(facade.updateExistingEntity).toHaveBeenCalledTimes(0);
92
91
  consoleErrorMock.mockRestore();
93
92
  });
94
93
 
95
94
  test('should cancel', () => {
96
95
  facade.clearCurrentEntity = jest.fn();
97
96
  component.cancel();
98
- expect(facade.clearCurrentEntity).toBeCalledTimes(1);
97
+ expect(facade.clearCurrentEntity).toHaveBeenCalledTimes(1);
99
98
  });<% swaggerObjectProperties.filter(t=> !t.enum).forEach(function(swaggerProperty){ %>
100
99
 
101
100
  test('should support <%= classify(swaggerProperty.name) %> filters', async () => {
@@ -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 '../../../../environments/environment';
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) %>Effects } from '../+state/<%= dasherize(singularizedStoreName) %>.effects';
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 '../../../../environments/environment';
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) %>Effects]),
34
+ EffectsModule.forFeature([<%= classify(singularizedStoreName) %>ListEffects, <%= classify(singularizedStoreName) %>CrudEffects]),
36
35
  ],
37
36
  providers: [
38
37
  <%= classify(name) %>CrudFacade,
@@ -80,7 +79,7 @@ describe('<%= classify(name) %>CrudFacade', () => {
80
79
 
81
80
  test('should load <%= classify(swaggerProperty.pluralizedName) %>', async () => {
82
81
  facade.load<%= classify(swaggerProperty.pluralizedName) %>({});
83
- expect(httpClient.get).toBeCalledTimes(1);
82
+ expect(httpClient.get).toHaveBeenCalledTimes(1);
84
83
  const result = await readFirst(facade.<%= camelize(swaggerProperty.pluralizedName) %>$);
85
84
  expect(result.length).toBe(1);
86
85
  });<% }); %>
@@ -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 } from '../+state/<%= dasherize(singularizedStoreName) %>.reducer';
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(singularizedStoreName) %>Queries.selectCurrent<%= classify(name) %>);
13
- isEditActive$ = this.store.select(<%= camelize(singularizedStoreName) %>Queries.selectIsEdit<%= classify(name) %>Active);
14
- isNewActive$ = this.store.select(<%= camelize(singularizedStoreName) %>Queries.selectIsNew<%= classify(name) %>Active);<% swaggerObjectProperties.filter(t=> !t.enum).forEach(function(swaggerProperty){ %>
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) {}
@@ -50,8 +50,8 @@ describe('<%= classify(name) %>EditComponent', () => {
50
50
  facade.updateExistingEntity = jest.fn(x => (item = x));
51
51
  expect(component.getFormErrors()).toStrictEqual([]);
52
52
  component.onSubmit();
53
- expect(facade.saveNewEntity).toBeCalledTimes(0);
54
- expect(facade.updateExistingEntity).toBeCalledTimes(1);
53
+ expect(facade.saveNewEntity).toHaveBeenCalledTimes(0);
54
+ expect(facade.updateExistingEntity).toHaveBeenCalledTimes(1);
55
55
  <% if (hasDates) { %>
56
56
  expect(item).toMatchSnapshot({
57
57
  <% swaggerProperties.filter(t=> t.format === 'date-time' || t.format === 'date').forEach(function(swaggerProperty)
@@ -70,14 +70,14 @@ describe('<%= classify(name) %>EditComponent', () => {
70
70
  const consoleErrorMock = mockConsoleError();
71
71
  component.addEditForm?.patchValue({});
72
72
  component.onSubmit();
73
- expect(facade.saveNewEntity).toBeCalledTimes(0);
74
- expect(facade.updateExistingEntity).toBeCalledTimes(0);
73
+ expect(facade.saveNewEntity).toHaveBeenCalledTimes(0);
74
+ expect(facade.updateExistingEntity).toHaveBeenCalledTimes(0);
75
75
  consoleErrorMock.mockRestore();
76
76
  });
77
77
 
78
78
  test('should cancel', () => {
79
79
  component.cancel();
80
- expect(facade.clearCurrentEntity).toBeCalledTimes(1);
80
+ expect(facade.clearCurrentEntity).toHaveBeenCalledTimes(1);
81
81
  });<% swaggerObjectProperties.filter(t=> !t.enum).forEach(function(swaggerProperty){ %>
82
82
 
83
83
  test('should support <%= classify(swaggerProperty.name) %> filters', async () => {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.imngCrud = void 0;
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":";;;AAAA,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;AAJD,4BAIC"}
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 { <%= classify(singularizedName) %>GridState } from './list.grid-state';
3
+ export { <%= camelize(singularizedName) %>GridState } from './list.grid-state';
@@ -1,12 +1,14 @@
1
1
  import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';
2
2
  import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
3
- import { RouterTestingModule } from '@angular/router/testing';
3
+ import { provideRouter } from '@angular/router';
4
4
  import { createDataEntryMockFacade, createDataDeleteMockFacade } from 'imng-kendo-data-entry/testing';
5
5
  import { createODataGridMockFacade } from 'imng-kendo-grid-odata/testing';
6
+ import { provideOidcMockFacade } from 'imng-oidc-client/testing';
6
7
 
7
8
  import { <%= classify(singularizedName) %>ListComponent } from './list.component';
8
9
  import { <%= classify(singularizedName) %>ListFacade } from './list.facade';
9
10
  import { <%= classify(singularizedName) %>CrudFacade } from '../<%= dasherize(pluralizedName) %>-crud';
11
+ import { <%= camelize(singularizedName) %>Routes } from '../<%= dasherize(pluralizedName) %>.routing';
10
12
 
11
13
  describe('<%= classify(singularizedName) %>ListComponent', () => {
12
14
  let component: <%= classify(singularizedName) %>ListComponent;
@@ -17,10 +19,12 @@ describe('<%= classify(singularizedName) %>ListComponent', () => {
17
19
  beforeEach(waitForAsync(() => {
18
20
  TestBed.configureTestingModule({
19
21
  declarations: [<%= classify(singularizedName) %>ListComponent],
20
- imports: [RouterTestingModule],
22
+ imports: [],
21
23
  providers: [
22
24
  { provide: <%= classify(singularizedName) %>ListFacade, useValue: createODataGridMockFacade(createDataDeleteMockFacade()) },
23
25
  { provide: <%= classify(singularizedName) %>CrudFacade, useValue: createDataEntryMockFacade() },
26
+ provideRouter(<%= camelize(singularizedName) %>Routes),
27
+ provideOidcMockFacade(),
24
28
  ],
25
29
  schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
26
30
  }).compileComponents();
@@ -50,26 +54,26 @@ describe('<%= classify(singularizedName) %>ListComponent', () => {
50
54
 
51
55
  test('it should handle reload', () => {
52
56
  component.reloadEntities();
53
- expect(listFacade.reloadEntities).toBeCalledTimes(1);
57
+ expect(listFacade.reloadEntities).toHaveBeenCalledTimes(1);
54
58
  });
55
59
 
56
60
  test('it should handle AddItem', () => {
57
61
  component.addItem();
58
- expect(crudFacade.setCurrentEntity).toBeCalledTimes(1);
59
- expect(crudFacade.setCurrentEntity).toBeCalledWith({});
62
+ expect(crudFacade.setCurrentEntity).toHaveBeenCalledTimes(1);
63
+ expect(crudFacade.setCurrentEntity).toHaveBeenCalledWith({});
60
64
  });
61
65
 
62
66
  test('it should handle EditItem', () => {
63
67
  const item = createTest<%= classify(singularizedName) %>();
64
68
  component.editItem(item);
65
- expect(crudFacade.setCurrentEntity).toBeCalledTimes(1);
66
- expect(crudFacade.setCurrentEntity).toBeCalledWith(item);
69
+ expect(crudFacade.setCurrentEntity).toHaveBeenCalledTimes(1);
70
+ expect(crudFacade.setCurrentEntity).toHaveBeenCalledWith(item);
67
71
  });
68
72
 
69
73
  test('it should handle DeleteItem', () => {
70
74
  const item = createTest<%= classify(singularizedName) %>();
71
75
  component.deleteItem(item);
72
- expect(listFacade.deleteExistingEntity).toBeCalledTimes(1);
73
- expect(listFacade.deleteExistingEntity).toBeCalledWith(item);
76
+ expect(listFacade.deleteExistingEntity).toHaveBeenCalledTimes(1);
77
+ expect(listFacade.deleteExistingEntity).toHaveBeenCalledWith(item);
74
78
  });
75
79
  });
@@ -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) %>Effects } from '../+state/<%= dasherize(singularizedStoreName) %>.effects';
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 '../../../../environments/environment';
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) %>Effects]),
28
+ EffectsModule.forFeature([<%= classify(singularizedStoreName) %>ListEffects, <%= classify(singularizedStoreName) %>CrudEffects]),
31
29
  ],
32
30
  providers: [
33
31
  <%= classify(singularizedName) %>ListFacade,
@@ -63,11 +61,11 @@ describe('<%= classify(singularizedName) %>ListFacade', () => {
63
61
  const loading = await readFirst(facade.loading$);
64
62
  expect(list?.data.length).toBe(1);
65
63
  expect(loading).toBe(false);
66
- expect(httpClient.get).toBeCalledTimes(1);
67
- expect(httpClient.get).toBeCalledWith('<%= dasherize(pluralizedStoreName) %>-odata/odata/v1/<%= classify(pluralizedName) %>?&$count=true');
64
+ expect(httpClient.get).toHaveBeenCalledTimes(1);
65
+ expect(httpClient.get).toHaveBeenCalledWith('<%= dasherize(pluralizedStoreName) %>-odata/odata/v1/<%= classify(pluralizedName) %>?&$count=true');
68
66
 
69
67
  facade.reloadEntities();
70
- expect(httpClient.get).toBeCalledTimes(2);
68
+ expect(httpClient.get).toHaveBeenCalledTimes(2);
71
69
  });
72
70
 
73
71
  test('reloadEntities() should return empty list with loaded == true', async () => {
@@ -87,7 +85,7 @@ describe('<%= classify(singularizedName) %>ListFacade', () => {
87
85
 
88
86
  expect(list?.data.length).toBe(3);
89
87
  expect(isloading).toBe(false);
90
- expect(service.fetch).toBeCalledTimes(1);
88
+ expect(service.fetch).toHaveBeenCalledTimes(1);
91
89
  });
92
90
 
93
91
  test('it should get the grid state', async () => {
@@ -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/<%= dasherize(singularizedStoreName) %>.reducer';
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 = void 0;
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":";;;AAAA,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;AAJD,4BAIC"}
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,51 +1,21 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { Store } from '@ngrx/store';
3
- import { createEffect, Actions, ofType, concatLatestFrom } from '@ngrx/effects';
2
+ import { createEffect, Actions, ofType } from '@ngrx/effects';
4
3
  import { ODataService } from 'imng-kendo-odata';
5
4
  import { handleEffectError } from 'imng-ngrx-utils';
6
5
  import { map, switchMap } from 'rxjs/operators';
7
6
 
8
- import { <%= camelize(pluralizedStoreName) %>Feature } from './<%= dasherize(singularizedName) %>.reducer';
9
7
  import * as <%= camelize(singularizedName) %>ActionTypes from './<%= dasherize(singularizedName) %>.actions';
10
- import { environment } from '../../../../environments/environment';
11
8
  <% if (openApiJsonUrl || openApiJsonFileName) { %>
12
- import { <%= classify(singularizedName) %>ApiService } from '../<%= dasherize(pluralizedName) %>-crud';
9
+ import { <%= classify(singularizedName) %>ApiService } from '../<%= dasherize(pluralizedName) %>-crud/api.service';
13
10
  <% } %>
14
11
  @Injectable()
15
- export class <%= classify(singularizedName) %>Effects {
12
+ export class <%= classify(singularizedName) %>CrudEffects {
16
13
  constructor(
17
14
  private readonly actions$: Actions,
18
15
  private readonly odataService: ODataService,
19
- private readonly store: Store,
20
16
  private readonly <%= camelize(singularizedName) %>ApiService : <%= classify(singularizedName) %>ApiService,
21
17
  ) {}
22
18
  <% if (openApiJsonUrl || openApiJsonFileName) { %>
23
- load<%= classify(pluralizedName) %>Effect$ = createEffect(() => {
24
- return this.actions$.pipe(
25
- ofType(<%= camelize(singularizedName) %>ActionTypes.load<%= classify(pluralizedName) %>Request),
26
- switchMap((action: ReturnType<typeof <%= camelize(singularizedName) %>ActionTypes.load<%= classify(pluralizedName) %>Request>) => this.odataService
27
- .fetch<I<%= classify(name) %>>(environment.odataEndpoints.<%= camelize(pluralizedName) %>, action.payload<% if(hasNullableDates){ %>, {
28
- 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){%>, <% } }) %>],
29
- }<% } %>)
30
- .pipe(
31
- map(t => <%= camelize(singularizedName) %>ActionTypes.load<%= classify(pluralizedName) %>Success(t)),
32
- handleEffectError(action))));
33
- });
34
-
35
- reload<%= classify(pluralizedName) %>Effect$ = createEffect(() => {
36
- return this.actions$.pipe(
37
- ofType(<%= camelize(singularizedName) %>ActionTypes.reload<%= classify(pluralizedName) %>Request),
38
- concatLatestFrom(() => this.store.select(<%= camelize(pluralizedStoreName) %>Feature.selectGridODataState)),
39
- switchMap(([action, odataState]) => this.odataService
40
- .fetch<I<%= classify(singularizedName) %>>(environment.odataEndpoints.<%= camelize(pluralizedName) %>, odataState, {
41
- bustCache: true,<% if(hasNullableDates){ %>
42
- 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){%>, <% } }) %>],<% } %>
43
- })
44
- .pipe(
45
- map(t => <%= camelize(singularizedName) %>ActionTypes.reload<%= classify(pluralizedName) %>Success(t)),
46
- handleEffectError(action))));
47
- });
48
-
49
19
  save<%= classify(singularizedName) %>Effect$ = createEffect(() => {
50
20
  return this.actions$.pipe(
51
21
  ofType(<%= camelize(singularizedName) %>ActionTypes.save<%= classify(singularizedName) %>Request),
@@ -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
+ <% } %>}
@@ -1,5 +1,5 @@
1
1
  import { createSelector } from '@ngrx/store';
2
- import { <%= camelize(pluralizedStoreName) %>Feature } from './<%= dasherize(singularizedName) %>.reducer';
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) %>Queries = {
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) %>Queries = {};<% } %>
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 } from './+state/<%= dasherize(singularizedName) %>.reducer';
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) %>Effects]),
41
+ EffectsModule.forFeature([<%= classify(singularizedName) %>ListEffects, <%= classify(singularizedName) %>CrudEffects]),
43
42
  ],
44
43
  providers: [
45
44
  <% if (openApiJsonUrl || openApiJsonFileName) { %><%= classify(singularizedName) %>ListFacade,
@@ -4,12 +4,12 @@ import { AuthGuard } from 'imng-oidc-client';<% if (openApiJsonUrl || openApiJso
4
4
  import { <%= classify(singularizedName) %>ListComponent } from './<%= dasherize(pluralizedName) %>-list';
5
5
  <% } %>
6
6
 
7
- const routes: Routes = [
7
+ export const <%= camelize(singularizedName) %>Routes: Routes = [
8
8
  { path: '', component: <% if (openApiJsonUrl || openApiJsonFileName) { %><%= classify(singularizedName) %>ListComponent<% } %>, canActivate: [AuthGuard] }
9
9
  ];
10
10
 
11
11
  @NgModule({
12
- imports: [RouterModule.forChild(routes)],
12
+ imports: [RouterModule.forChild(<%= camelize(singularizedName) %>Routes)],
13
13
  exports: [RouterModule]
14
14
  })
15
15
  export class <%= classify(pluralizedName) %>RoutingModule { }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.imngModule = void 0;
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
- const listOptions = Object.assign(Object.assign({}, _options), { storeName: _options.storeName || _options.name, path: (0, path_1.normalize)(`${_options.path}/${(0, strings_1.dasherize)(pluralize(_options.name))}-module`) });
12
- const crudOptions = Object.assign(Object.assign({}, _options), { storeName: _options.storeName || _options.name, path: (0, path_1.normalize)(`${_options.path}/${(0, strings_1.dasherize)(pluralize(_options.name))}-module`) });
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":";;;AAAA,2DAAkG;AAClG,sCAAmE;AACnE,uCAAwC;AACxC,+BAAiC;AACjC,oEAAmE;AAGnE,SAAgB,UAAU,CAAC,QAAkB;IAC3C,OAAO,CAAC,IAAU,EAAE,QAA0B,EAAE,EAAE;QAChD,MAAM,WAAW,mCACZ,QAAQ,KACX,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,EAC9C,IAAI,EAAE,IAAA,gBAAS,EAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAA,mBAAS,EAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAClF,CAAC;QACF,MAAM,WAAW,mCACZ,QAAQ,KACX,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,EAC9C,IAAI,EAAE,IAAA,gBAAS,EAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAA,mBAAS,EAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAClF,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;AApBD,gCAoBC"}
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"}
@@ -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) %>Queries } from './<%= dasherize(singularizedName) %>.selectors';<% if (openApiJsonUrl || openApiJsonFileName) { %>
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 '../../../../environments/environment';
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) %>Queries.selectODataState$(action.payload))),
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(
@@ -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) %>Queries = {
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) %>Queries = {};<% } %>
36
+ export const <%= camelize(singularizedName) %>Selectors = {};<% } %>
@@ -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 '../../../../environments/environment';
4
+ import { environment } from '@env';
5
5
 
6
6
  @Injectable({
7
7
  providedIn: 'root',
@@ -1,12 +1,12 @@
1
1
  import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';
2
2
  import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
3
- import { RouterTestingModule } from '@angular/router/testing';
4
3
  import { createDataDeleteMockFacade } from 'imng-kendo-data-entry/testing';
5
4
  import { createODataGridMockFacade } from 'imng-kendo-grid-odata/testing';
6
5
 
7
6
  import { <%= classify(singularizedName) %>ListComponent } from './list.component';
8
7
  import { <%= classify(singularizedName) %>ListFacade } from './list.facade';
9
8
 
9
+
10
10
  describe('<%= classify(singularizedName) %>ListComponent', () => {
11
11
  let component: <%= classify(singularizedName) %>ListComponent;
12
12
  let fixture: ComponentFixture<<%= classify(singularizedName) %>ListComponent>;
@@ -15,7 +15,7 @@ describe('<%= classify(singularizedName) %>ListComponent', () => {
15
15
  beforeEach(waitForAsync(() => {
16
16
  TestBed.configureTestingModule({
17
17
  declarations: [<%= classify(singularizedName) %>ListComponent],
18
- imports: [RouterTestingModule],
18
+ imports: [],
19
19
  providers: [
20
20
  { provide: <%= classify(singularizedName) %>ListFacade, useValue: createODataGridMockFacade(createDataDeleteMockFacade()) },
21
21
  ],
@@ -41,13 +41,13 @@ describe('<%= classify(singularizedName) %>ListComponent', () => {
41
41
 
42
42
  test('it should handle reload', () => {
43
43
  component.reloadEntities();
44
- expect(listFacade.reloadEntities).toBeCalledTimes(1);
44
+ expect(listFacade.reloadEntities).toHaveBeenCalledTimes(1);
45
45
  });
46
46
 
47
47
  test('it should handle DeleteItem', () => {
48
48
  const item = createTest<%= classify(singularizedName) %>();
49
49
  component.deleteItem(item);
50
- expect(listFacade.deleteExistingEntity).toBeCalledTimes(1);
51
- expect(listFacade.deleteExistingEntity).toBeCalledWith(item);
50
+ expect(listFacade.deleteExistingEntity).toHaveBeenCalledTimes(1);
51
+ expect(listFacade.deleteExistingEntity).toHaveBeenCalledWith(item);
52
52
  });
53
53
  });
@@ -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 '../../../../environments/environment';
17
+ import { environment } from '@env';
18
18
 
19
19
  describe('<%= classify(singularizedName) %>ListFacade', () => {
20
20
  let facade: <%= classify(singularizedName) %>ListFacade;
@@ -73,12 +73,12 @@ describe('<%= classify(singularizedName) %>ListFacade', () => {
73
73
  const gridPagerSettings$ = await readFirst(facade.gridPagerSettings$);
74
74
  expect(gridPagerSettings$).toBe(false);
75
75
 
76
- expect(httpClient.get).toBeCalledTimes(1);
77
- expect(httpClient.get).toBeCalledWith(
76
+ expect(httpClient.get).toHaveBeenCalledTimes(1);
77
+ expect(httpClient.get).toHaveBeenCalledWith(
78
78
  `<%= dasherize(pluralizedStoreName) %>-odata/odata/v1/<%= classify(pluralizedName) %>?$filter=<%= camelize(singularizedParentName) %>Id eq '<%= snakeCasedParentName %>_ID'&$count=true`);
79
79
 
80
80
  facade.reloadEntities();
81
- expect(httpClient.get).toBeCalledTimes(2);
81
+ expect(httpClient.get).toHaveBeenCalledTimes(2);
82
82
  });
83
83
 
84
84
  test('reloadEntities() should return empty list with loaded == true', async () => {
@@ -101,7 +101,7 @@ describe('<%= classify(singularizedName) %>ListFacade', () => {
101
101
 
102
102
  expect(list?.data.length).toBe(3);
103
103
  expect(isloading).toBe(false);
104
- expect(service.fetch).toBeCalledTimes(1);
104
+ expect(service.fetch).toHaveBeenCalledTimes(1);
105
105
  });
106
106
 
107
107
  test('it should get the grid state', async () => {
@@ -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) %>Queries } from '../+state/<%= dasherize(singularizedName) %>.selectors';
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) %>Queries.selectGridData$(x))));
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) %>Queries.selectGridPagerSettings$(x))));
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) %>Queries.selectODataState$(x))));
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 = void 0;
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":";;;AAAA,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;AAJD,kCAIC"}
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 = void 0;
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/explicit-module-boundary-types, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
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":";;;AACA,4DAA0E;AAE1E,uBAAuB;AACvB,oJAAoJ;AACpJ,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;AALD,sBAKC"}
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 = void 0;
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":";;;AAAA,uCAAwC;AAGxC,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;QACpC,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;YAChF,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,EAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;YAC5E,IAAI,CAAC,aAAa,IAAI,WAAW,KAAK,IAAI,EAAE;gBAC1C,aAAa,GAAG,QAAQ,CAAC;aAC1B;YACD,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACnC;KACF;IACD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;AAC/C,CAAC;AApBD,sCAoBC;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;QACjB,MAAM,QAAQ,GAAW,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACnD,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACrC,QAAQ,CAAC,0BAA0B,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1D,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,EAAC;YAChB,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;SAC9E;KACF;AACH,CAAC"}
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.generateFiles = exports.mapPropertyAttributes = exports.processOpenApiDoc = exports.getSwaggerDoc = void 0;
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 || '', plural);
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":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/shared/rules.ts"],"names":[],"mappings":"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"}