tin-spa 20.14.113 → 20.16.0

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 (44) hide show
  1. package/core/index.d.ts +80 -10
  2. package/fesm2022/{tin-spa-accounting.module-Cg4vWaJE.mjs → tin-spa-accounting.module-CamqAeW_.mjs} +71 -83
  3. package/fesm2022/tin-spa-accounting.module-CamqAeW_.mjs.map +1 -0
  4. package/fesm2022/{tin-spa-agent-page.component-DJvMPjCQ.mjs → tin-spa-agent-page.component-DTYn54p0.mjs} +2 -2
  5. package/fesm2022/{tin-spa-agent-page.component-DJvMPjCQ.mjs.map → tin-spa-agent-page.component-DTYn54p0.mjs.map} +1 -1
  6. package/fesm2022/{tin-spa-agent.component-D0CGGnGZ.mjs → tin-spa-agent.component-CZKMWl3r.mjs} +2 -2
  7. package/fesm2022/{tin-spa-agent.component-D0CGGnGZ.mjs.map → tin-spa-agent.component-CZKMWl3r.mjs.map} +1 -1
  8. package/fesm2022/{tin-spa-assets.module-qIWNwJ2E.mjs → tin-spa-assets.module-BcOjlhfm.mjs} +16 -11
  9. package/fesm2022/tin-spa-assets.module-BcOjlhfm.mjs.map +1 -0
  10. package/fesm2022/tin-spa-core.mjs +426 -112
  11. package/fesm2022/tin-spa-core.mjs.map +1 -1
  12. package/fesm2022/{tin-spa-general-erp.module-CoYxceLj.mjs → tin-spa-general-erp.module-b6SjnWUM.mjs} +2 -2
  13. package/fesm2022/{tin-spa-general-erp.module-CoYxceLj.mjs.map → tin-spa-general-erp.module-b6SjnWUM.mjs.map} +1 -1
  14. package/fesm2022/{tin-spa-hr.module-CKPZ9ZOj.mjs → tin-spa-hr.module-DkGVK2lX.mjs} +2 -2
  15. package/fesm2022/{tin-spa-hr.module-CKPZ9ZOj.mjs.map → tin-spa-hr.module-DkGVK2lX.mjs.map} +1 -1
  16. package/fesm2022/tin-spa-http.mjs +32 -1
  17. package/fesm2022/tin-spa-http.mjs.map +1 -1
  18. package/fesm2022/{tin-spa-inventory.module-DRKAcNau.mjs → tin-spa-inventory.module-CYWBqSCd.mjs} +16 -11
  19. package/fesm2022/tin-spa-inventory.module-CYWBqSCd.mjs.map +1 -0
  20. package/fesm2022/{tin-spa-loans.module-BTDmgrWo.mjs → tin-spa-loans.module-BDh-T-Ng.mjs} +2 -2
  21. package/fesm2022/{tin-spa-loans.module-BTDmgrWo.mjs.map → tin-spa-loans.module-BDh-T-Ng.mjs.map} +1 -1
  22. package/fesm2022/{tin-spa-manufacturing.module-CHta6oV_.mjs → tin-spa-manufacturing.module-9Ti-BFb2.mjs} +2 -2
  23. package/fesm2022/{tin-spa-manufacturing.module-CHta6oV_.mjs.map → tin-spa-manufacturing.module-9Ti-BFb2.mjs.map} +1 -1
  24. package/fesm2022/{tin-spa-payroll.module-CZ_GO1jF.mjs → tin-spa-payroll.module-54Efumv_.mjs} +9 -6
  25. package/fesm2022/{tin-spa-payroll.module-CZ_GO1jF.mjs.map → tin-spa-payroll.module-54Efumv_.mjs.map} +1 -1
  26. package/fesm2022/{tin-spa-purchasing.module-NCdwquaF.mjs → tin-spa-purchasing.module-Bq8JnsyM.mjs} +16 -11
  27. package/fesm2022/tin-spa-purchasing.module-Bq8JnsyM.mjs.map +1 -0
  28. package/fesm2022/{tin-spa-sales.module-D0uEGJW7.mjs → tin-spa-sales.module-nyrJulzD.mjs} +40 -17
  29. package/fesm2022/tin-spa-sales.module-nyrJulzD.mjs.map +1 -0
  30. package/fesm2022/{tin-spa-tenancy-erp.module-GwIv8Wbc.mjs → tin-spa-tenancy-erp.module-DGATA-p_.mjs} +2 -2
  31. package/fesm2022/{tin-spa-tenancy-erp.module-GwIv8Wbc.mjs.map → tin-spa-tenancy-erp.module-DGATA-p_.mjs.map} +1 -1
  32. package/fesm2022/{tin-spa-tin-spa-Cqe5hYTr.mjs → tin-spa-tin-spa-BMy59BVn.mjs} +1428 -219
  33. package/fesm2022/tin-spa-tin-spa-BMy59BVn.mjs.map +1 -0
  34. package/fesm2022/tin-spa.mjs +1 -1
  35. package/http/index.d.ts +3 -1
  36. package/index.d.ts +144 -24
  37. package/package.json +1 -1
  38. package/src/tin-styles.css +27 -0
  39. package/fesm2022/tin-spa-accounting.module-Cg4vWaJE.mjs.map +0 -1
  40. package/fesm2022/tin-spa-assets.module-qIWNwJ2E.mjs.map +0 -1
  41. package/fesm2022/tin-spa-inventory.module-DRKAcNau.mjs.map +0 -1
  42. package/fesm2022/tin-spa-purchasing.module-NCdwquaF.mjs.map +0 -1
  43. package/fesm2022/tin-spa-sales.module-D0uEGJW7.mjs.map +0 -1
  44. package/fesm2022/tin-spa-tin-spa-Cqe5hYTr.mjs.map +0 -1
@@ -3,7 +3,7 @@ import { inject, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/router';
4
4
  import { RouterModule } from '@angular/router';
5
5
  import { CommonModule } from '@angular/common';
6
- import { P as PageComponent, c as TinSpaModule, e as SpaAdminModule } from './tin-spa-tin-spa-Cqe5hYTr.mjs';
6
+ import { P as PageComponent, c as TinSpaModule, e as SpaAdminModule } from './tin-spa-tin-spa-BMy59BVn.mjs';
7
7
  import { DataServiceLib, MessageService, AuthService, GeneralService } from 'tin-spa/core';
8
8
 
9
9
  class CustomersComponent {
@@ -135,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
135
135
  }] });
136
136
 
137
137
  export { GENERAL_ERP_ROUTES, GeneralErpModule };
138
- //# sourceMappingURL=tin-spa-general-erp.module-CoYxceLj.mjs.map
138
+ //# sourceMappingURL=tin-spa-general-erp.module-b6SjnWUM.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tin-spa-general-erp.module-CoYxceLj.mjs","sources":["../../../projects/tin-spa/src/lib/pages/customers/customers.component.ts","../../../projects/tin-spa/src/lib/pages/suppliers/suppliers.component.ts","../../../projects/tin-spa/src/lib/pages/categories/categories.component.ts","../../../projects/tin-spa/src/lib/pages/subcategories/subcategories.component.ts","../../../projects/tin-spa/src/lib/pages/brands/brands.component.ts","../../../projects/tin-spa/src/lib/modules/general-erp/general-erp.module.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-customers',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class CustomersComponent {\n private dataService = inject(DataServiceLib);\n \n pageConfig: PageConfig = {\n title: 'Customers',\n tableConfig: this.dataService.customersTableConfig\n };\n\n}\n","import { Component, inject } from '@angular/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { MessageService } from 'tin-spa/core';\nimport { AuthService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-suppliers',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class SuppliersComponent {\n private dataService = inject(DataServiceLib);\n private messageService = inject(MessageService);\n private authService = inject(AuthService);\n \n pageConfig: PageConfig = {\n title: 'Suppliers',\n tableConfig: this.dataService.suppliersTableConfig\n };\n\n\n\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { TinSpaModule } from '../../tin-spa.module';\nimport { GeneralService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-categories',\n standalone: true,\n imports: [TinSpaModule],\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class CategoriesComponent {\n private generalService = inject(GeneralService);\n \n pageConfig: PageConfig = {\n title: 'Categories',\n tableConfig: this.generalService.categoriesTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { TinSpaModule } from '../../tin-spa.module';\nimport { GeneralService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-subcategories',\n standalone: true,\n imports: [TinSpaModule],\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class SubCategoriesComponent {\n private generalService = inject(GeneralService);\n \n pageConfig: PageConfig = {\n title: 'Sub Categories',\n tableConfig: this.generalService.subCategoriesTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { TinSpaModule } from '../../tin-spa.module';\nimport { GeneralService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-brands',\n standalone: true,\n imports: [TinSpaModule],\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class BrandsComponent {\n private generalService = inject(GeneralService);\n \n pageConfig: PageConfig = {\n title: 'Brands',\n tableConfig: this.generalService.brandsTableConfig\n };\n}\n","// Added (S10-part-1): the five ERP leaves that used to sit inside the CORE GeneralModule — customers,\n// suppliers, categories, subcategories, brands. They keep their exact URLs (home/general/<leaf>); only their\n// LOADING changed. GeneralModule stays eager and keeps its one non-ERP leaf, tasks.\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { SpaAdminModule } from '../spa-admin.module';\nimport { CustomersComponent } from '../../pages/customers/customers.component';\nimport { SuppliersComponent } from '../../pages/suppliers/suppliers.component';\nimport { CategoriesComponent } from '../../pages/categories/categories.component';\nimport { SubCategoriesComponent } from '../../pages/subcategories/subcategories.component';\nimport { BrandsComponent } from '../../pages/brands/brands.component';\n\nexport const GENERAL_ERP_ROUTES: Routes = [\n { path: \"customers\", component: CustomersComponent },\n { path: \"suppliers\", component: SuppliersComponent },\n { path: \"categories\", component: CategoriesComponent },\n { path: \"subcategories\", component: SubCategoriesComponent },\n { path: \"brands\", component: BrandsComponent }\n];\n\n@NgModule({\n declarations: [CustomersComponent, SuppliersComponent], // the other three are standalone\n imports: [CommonModule, SpaAdminModule, CategoriesComponent, SubCategoriesComponent, BrandsComponent, RouterModule.forChild(GENERAL_ERP_ROUTES)]\n})\nexport class GeneralErpModule { }\n"],"names":["i1.PageComponent"],"mappings":"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"}
1
+ {"version":3,"file":"tin-spa-general-erp.module-b6SjnWUM.mjs","sources":["../../../projects/tin-spa/src/lib/pages/customers/customers.component.ts","../../../projects/tin-spa/src/lib/pages/suppliers/suppliers.component.ts","../../../projects/tin-spa/src/lib/pages/categories/categories.component.ts","../../../projects/tin-spa/src/lib/pages/subcategories/subcategories.component.ts","../../../projects/tin-spa/src/lib/pages/brands/brands.component.ts","../../../projects/tin-spa/src/lib/modules/general-erp/general-erp.module.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-customers',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class CustomersComponent {\n private dataService = inject(DataServiceLib);\n \n pageConfig: PageConfig = {\n title: 'Customers',\n tableConfig: this.dataService.customersTableConfig\n };\n\n}\n","import { Component, inject } from '@angular/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { MessageService } from 'tin-spa/core';\nimport { AuthService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-suppliers',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class SuppliersComponent {\n private dataService = inject(DataServiceLib);\n private messageService = inject(MessageService);\n private authService = inject(AuthService);\n \n pageConfig: PageConfig = {\n title: 'Suppliers',\n tableConfig: this.dataService.suppliersTableConfig\n };\n\n\n\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { TinSpaModule } from '../../tin-spa.module';\nimport { GeneralService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-categories',\n standalone: true,\n imports: [TinSpaModule],\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class CategoriesComponent {\n private generalService = inject(GeneralService);\n \n pageConfig: PageConfig = {\n title: 'Categories',\n tableConfig: this.generalService.categoriesTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { TinSpaModule } from '../../tin-spa.module';\nimport { GeneralService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-subcategories',\n standalone: true,\n imports: [TinSpaModule],\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class SubCategoriesComponent {\n private generalService = inject(GeneralService);\n \n pageConfig: PageConfig = {\n title: 'Sub Categories',\n tableConfig: this.generalService.subCategoriesTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { TinSpaModule } from '../../tin-spa.module';\nimport { GeneralService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-brands',\n standalone: true,\n imports: [TinSpaModule],\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class BrandsComponent {\n private generalService = inject(GeneralService);\n \n pageConfig: PageConfig = {\n title: 'Brands',\n tableConfig: this.generalService.brandsTableConfig\n };\n}\n","// Added (S10-part-1): the five ERP leaves that used to sit inside the CORE GeneralModule — customers,\n// suppliers, categories, subcategories, brands. They keep their exact URLs (home/general/<leaf>); only their\n// LOADING changed. GeneralModule stays eager and keeps its one non-ERP leaf, tasks.\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { SpaAdminModule } from '../spa-admin.module';\nimport { CustomersComponent } from '../../pages/customers/customers.component';\nimport { SuppliersComponent } from '../../pages/suppliers/suppliers.component';\nimport { CategoriesComponent } from '../../pages/categories/categories.component';\nimport { SubCategoriesComponent } from '../../pages/subcategories/subcategories.component';\nimport { BrandsComponent } from '../../pages/brands/brands.component';\n\nexport const GENERAL_ERP_ROUTES: Routes = [\n { path: \"customers\", component: CustomersComponent },\n { path: \"suppliers\", component: SuppliersComponent },\n { path: \"categories\", component: CategoriesComponent },\n { path: \"subcategories\", component: SubCategoriesComponent },\n { path: \"brands\", component: BrandsComponent }\n];\n\n@NgModule({\n declarations: [CustomersComponent, SuppliersComponent], // the other three are standalone\n imports: [CommonModule, SpaAdminModule, CategoriesComponent, SubCategoriesComponent, BrandsComponent, RouterModule.forChild(GENERAL_ERP_ROUTES)]\n})\nexport class GeneralErpModule { }\n"],"names":["i1.PageComponent"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { inject, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/router';
4
4
  import { RouterModule } from '@angular/router';
5
5
  import { DataServiceLib, AuthService, MessageService } from 'tin-spa/core';
6
- import { P as PageComponent, e as SpaAdminModule } from './tin-spa-tin-spa-Cqe5hYTr.mjs';
6
+ import { P as PageComponent, e as SpaAdminModule } from './tin-spa-tin-spa-BMy59BVn.mjs';
7
7
  import { CommonModule } from '@angular/common';
8
8
 
9
9
  class EmployeesComponent {
@@ -131,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
131
131
  }] });
132
132
 
133
133
  export { HRModule };
134
- //# sourceMappingURL=tin-spa-hr.module-CKPZ9ZOj.mjs.map
134
+ //# sourceMappingURL=tin-spa-hr.module-DkGVK2lX.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tin-spa-hr.module-CKPZ9ZOj.mjs","sources":["../../../projects/tin-spa/src/lib/pages/employees/employees.component.ts","../../../projects/tin-spa/src/lib/pages/departments/departments.component.ts","../../../projects/tin-spa/src/lib/pages/positions/positions.component.ts","../../../projects/tin-spa/src/lib/pages/grades/grades.component.ts","../../../projects/tin-spa/src/lib/pages/grades/grades.component.html","../../../projects/tin-spa/src/lib/modules/hr/hr-routing.module.ts","../../../projects/tin-spa/src/lib/modules/hr/hr.module.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { AuthService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-employees',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class EmployeesComponent {\n private dataService = inject(DataServiceLib);\n private authService = inject(AuthService);\n \n pageConfig: PageConfig = {\n title: 'Employees',\n tableConfig: this.dataService.employeesTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { MessageService } from 'tin-spa/core';\nimport { AuthService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-departments',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class DepartmentsComponent {\n private dataService = inject(DataServiceLib);\n private messageService = inject(MessageService);\n private authService = inject(AuthService);\n \n pageConfig: PageConfig = {\n title: 'Departments',\n tableConfig: this.dataService.departmentTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { AuthService } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-positions',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class PositionsComponent {\n private dataService = inject(DataServiceLib);\n private authService = inject(AuthService);\n \n pageConfig: PageConfig = {\n title: 'Positions',\n tableConfig: this.dataService.positionsTableConfig\n };\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spa-grades',\n templateUrl: './grades.component.html',\n styleUrls: ['./grades.component.css'],\n standalone: false\n})\nexport class GradesComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<h4>Grades</h4>\n<hr>\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { EmployeesComponent } from '../../pages/employees/employees.component';\nimport { DepartmentsComponent } from '../../pages/departments/departments.component';\nimport { PositionsComponent } from '../../pages/positions/positions.component';\nimport { GradesComponent } from '../../pages/grades/grades.component';\n\nexport const HR_ROUTES: Routes = [\n { path: \"employees\", component: EmployeesComponent },\n { path: \"departments\", component: DepartmentsComponent },\n { path: \"positions\", component: PositionsComponent },\n { path: \"grades\", component: GradesComponent },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(HR_ROUTES)],\n exports: [RouterModule]\n})\nexport class HRRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { HRRoutingModule } from './hr-routing.module'; // Added (S10-part-1): this domain is now reached by loadChildren, so it carries its own RouterModule.forChild table instead of contributing routes to the eager parent\nimport { CommonModule } from '@angular/common';\nimport { SpaAdminModule } from '../spa-admin.module';\nimport { EmployeesComponent } from '../../pages/employees/employees.component';\nimport { DepartmentsComponent } from '../../pages/departments/departments.component';\nimport { PositionsComponent } from '../../pages/positions/positions.component';\nimport { GradesComponent } from '../../pages/grades/grades.component';\n\n@NgModule({\n declarations: [\n EmployeesComponent,\n DepartmentsComponent,\n PositionsComponent,\n GradesComponent,\n ],\n imports: [\n HRRoutingModule,\n CommonModule,\n SpaAdminModule\n ]\n})\nexport class HRModule { }\n"],"names":["i1.PageComponent"],"mappings":"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"}
1
+ {"version":3,"file":"tin-spa-hr.module-DkGVK2lX.mjs","sources":["../../../projects/tin-spa/src/lib/pages/employees/employees.component.ts","../../../projects/tin-spa/src/lib/pages/departments/departments.component.ts","../../../projects/tin-spa/src/lib/pages/positions/positions.component.ts","../../../projects/tin-spa/src/lib/pages/grades/grades.component.ts","../../../projects/tin-spa/src/lib/pages/grades/grades.component.html","../../../projects/tin-spa/src/lib/modules/hr/hr-routing.module.ts","../../../projects/tin-spa/src/lib/modules/hr/hr.module.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { AuthService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-employees',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class EmployeesComponent {\n private dataService = inject(DataServiceLib);\n private authService = inject(AuthService);\n \n pageConfig: PageConfig = {\n title: 'Employees',\n tableConfig: this.dataService.employeesTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { MessageService } from 'tin-spa/core';\nimport { AuthService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-departments',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class DepartmentsComponent {\n private dataService = inject(DataServiceLib);\n private messageService = inject(MessageService);\n private authService = inject(AuthService);\n \n pageConfig: PageConfig = {\n title: 'Departments',\n tableConfig: this.dataService.departmentTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { AuthService } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core';\nimport { PageConfig } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-positions',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class PositionsComponent {\n private dataService = inject(DataServiceLib);\n private authService = inject(AuthService);\n \n pageConfig: PageConfig = {\n title: 'Positions',\n tableConfig: this.dataService.positionsTableConfig\n };\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spa-grades',\n templateUrl: './grades.component.html',\n styleUrls: ['./grades.component.css'],\n standalone: false\n})\nexport class GradesComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<h4>Grades</h4>\n<hr>\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { EmployeesComponent } from '../../pages/employees/employees.component';\nimport { DepartmentsComponent } from '../../pages/departments/departments.component';\nimport { PositionsComponent } from '../../pages/positions/positions.component';\nimport { GradesComponent } from '../../pages/grades/grades.component';\n\nexport const HR_ROUTES: Routes = [\n { path: \"employees\", component: EmployeesComponent },\n { path: \"departments\", component: DepartmentsComponent },\n { path: \"positions\", component: PositionsComponent },\n { path: \"grades\", component: GradesComponent },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(HR_ROUTES)],\n exports: [RouterModule]\n})\nexport class HRRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { HRRoutingModule } from './hr-routing.module'; // Added (S10-part-1): this domain is now reached by loadChildren, so it carries its own RouterModule.forChild table instead of contributing routes to the eager parent\nimport { CommonModule } from '@angular/common';\nimport { SpaAdminModule } from '../spa-admin.module';\nimport { EmployeesComponent } from '../../pages/employees/employees.component';\nimport { DepartmentsComponent } from '../../pages/departments/departments.component';\nimport { PositionsComponent } from '../../pages/positions/positions.component';\nimport { GradesComponent } from '../../pages/grades/grades.component';\n\n@NgModule({\n declarations: [\n EmployeesComponent,\n DepartmentsComponent,\n PositionsComponent,\n GradesComponent,\n ],\n imports: [\n HRRoutingModule,\n CommonModule,\n SpaAdminModule\n ]\n})\nexport class HRModule { }\n"],"names":["i1.PageComponent"],"mappings":"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"}
@@ -102,6 +102,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
102
102
  type: Injectable
103
103
  }] });
104
104
 
105
+ // Added: build a fallback token attacher over any token source. `getToken` is read PER REQUEST, never
106
+ // captured, so a caller may hand over a source that is still empty at construction time — which is
107
+ // exactly the cold-reload case: AuthService installs this from its constructor, before
108
+ // tryRestoreSession() has put a token anywhere.
109
+ function createTinTokenAttacher(getToken) {
110
+ return (req) => {
111
+ const token = getToken();
112
+ const url = req.url || '';
113
+ // DELIBERATE DEVIATION 1 from LoaderInterceptor.addToken — this is CONDITIONAL on a non-empty
114
+ // token, where addToken is not. addToken clones unconditionally and therefore sends a bare
115
+ // "Bearer " when tokenSource is still empty. That is not hypothetical: it is the measured
116
+ // accounts-prefetch-401 defect written up at length in accounting.service.ts:2308-2326, where a
117
+ // prefetch fired off `loggedinObserv` beat the token into tokenSource and answered 401 every
118
+ // time. This attacher lives ENTIRELY inside that same pre-token window, so it would hit the bug
119
+ // constantly rather than occasionally. Returning the request unchanged is also what preserves
120
+ // the fail-open guarantee for the LOGIN POST itself, which must go out anonymously.
121
+ //
122
+ // DELIBERATE DEVIATION 2 — the refresh/revoke exclusion is INLINE here rather than at the call
123
+ // site. In LoaderInterceptor the same test sits in intercept() around the addToken() call
124
+ // (loader-interceptor.service.ts, the `url.includes('User/refresh') || url.includes('User/revoke')`
125
+ // line). There is no equivalent call site here — TinRootInterceptor's fallback branch is
126
+ // deliberately dumb — so the rule has to travel with the attacher. Those endpoints are
127
+ // AllowAnonymous and authenticate from the request BODY; a stale bearer on them is at best noise
128
+ // and at worst a rejected refresh.
129
+ if (!token || url.includes('User/refresh') || url.includes('User/revoke')) {
130
+ return req;
131
+ }
132
+ return req.clone({ setHeaders: { Authorization: `Bearer ${token}` } });
133
+ };
134
+ }
135
+
105
136
  // tin-spa/http — the ROOT HttpClient slot, and NOTHING else.
106
137
  //
107
138
  // It imports only @angular/core and @angular/common/http. It must NEVER import from the tin-spa
@@ -113,5 +144,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
113
144
  * Generated bundle index. Do not edit.
114
145
  */
115
146
 
116
- export { TIN_LOADER_RAN, TinRootInterceptor, setTinFallbackTokenAttacher, setTinHttpDelegate };
147
+ export { TIN_LOADER_RAN, TinRootInterceptor, createTinTokenAttacher, setTinFallbackTokenAttacher, setTinHttpDelegate };
117
148
  //# sourceMappingURL=tin-spa-http.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tin-spa-http.mjs","sources":["../../../projects/tin-spa/http/src/lib/root-interceptor.ts","../../../projects/tin-spa/http/src/public-api.ts","../../../projects/tin-spa/http/src/tin-spa-http.ts"],"sourcesContent":["// Added (landing-first L2, arbiter ruling 2026-09-01): the ROOT HttpClient slot that the lazy primary fills.\n//\n// 🔴 WHY THIS FILE EXISTS — it fixes a MEASURED 401 STORM, not a cosmetic defect.\n//\n// Dropping TinSpaModule from an app's ROOT module is what takes the ~2.9MB tin-spa primary out of an\n// anonymous visitor's download. But TinSpaModule was also registering\n// { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true }\n// and LoaderInterceptor.addToken is the SOLE bearer-token attachment point in the estate. Moving those\n// providers onto the LAZY shell route did not move that registration into the root chain — an interceptor\n// registered by a lazy route NEVER joins it. Measured consequence on shift-spa: 33 x 401 after a real\n// login, with NO Authorization header on the wire, while the same token via curl returned 200.\n// The app was unusable after login. \"The global loading bar does not run\" was a symptom of this, not\n// the consequence of it.\n//\n// 🔑 THE SHAPE IS FORCED, and it was ruled on rather than chosen. Angular DI cannot express\n// \"root-position provider whose implementation is supplied later by a CHILD environment injector\":\n// * Moving LoaderInterceptor into a dependency-free entry point is impossible — it injects nine\n// services (AuthService, MessageService, LoaderService, Router, LogService, StorageService,\n// OfflineService, ApiErrorService) plus Constants. That set IS the primary; such an entry point\n// would be the primary wearing a hat, and importing it eagerly reclaims the whole bundle.\n// * A root FUNCTIONAL interceptor cannot see the lazy route injector that owns the instance, and\n// consumer roots use HttpClientModule, which honours HTTP_INTERCEPTORS but ignores\n// withInterceptors(). Going functional would force a provideHttpClient migration in five apps.\n// So: the root chain permanently holds ONE slot that injects nothing, and the primary fills it the\n// moment the lazy shell route's environment injector is created.\n//\n// ⏱️ THE TIMING IS SAFE, and this was verified against Angular's shipped runtime rather than assumed.\n// In @angular/router/fesm2022/router2.mjs, matchWithChecks() calls getOrCreateRouteInjectorIfNeeded()\n// (:3847) BEFORE runCanMatchGuards() (:3848), and that function (:1887-1891) is what calls\n// createEnvironmentInjector(route.providers, ...). The route's providers — and therefore the\n// ENVIRONMENT_INITIALIZER that fills this delegate — are live during the RECOGNITION phase: before\n// canMatch, before canActivateChild, and before any component. No guard can race a tokenless request out.\nimport { HttpContextToken, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n// Added: set by whichever interceptor does the real work, so a request can never be processed twice.\n// This is the double-interception guard. An app that (wrongly) has BOTH TinSpaModule at root AND this\n// shim registered would otherwise run LoaderInterceptor twice per request — double loader bookkeeping and\n// two 401-refresh attempts. Defaults false, is set only by the real interceptor, and is never cleared.\nexport const TIN_LOADER_RAN = new HttpContextToken<boolean>(() => false);\n\n// Added: the delegate slot. Module-scoped and mutable BY NECESSITY — see the DI note above.\n// Write-once from library code. There is deliberately NO reset/clear path: clearing it mid-session would\n// reopen the untokenised window on the auth path (arbiter assumption 3).\nlet delegate: HttpInterceptor | null = null;\n\n// Added: called by TIN_SPA_MODULE_PROVIDERS' ENVIRONMENT_INITIALIZER when the lazy primary loads.\n// NOT re-exported from the primary barrel — consumer apps have no reason to call it.\nexport function setTinHttpDelegate(interceptor: HttpInterceptor): void {\n if (delegate) { return; } // Write-once: the first primary to load owns the slot\n delegate = interceptor;\n}\n\n// Added (token-slot, arbiter ruling A-0901-17): the FALLBACK token attacher.\n//\n// 🔗 MAINTENANCE SEAM — this slot is one half of a pair. The other half is\n// TIN_LOGIN_TIER_HTTP_PROVIDERS in `tin-spa/core` (core/src/lib/runtime/login-tier-http.ts), which is\n// the ONLY thing in the estate that fills this slot. Read that file before changing this one.\n//\n// 🔑 THE LAW OF THE PAIR, in three lines:\n// 1. THE DELEGATE ALWAYS WINS. The moment the primary loads, this attacher is never consulted again.\n// 2. THE FALLBACK ONLY ATTACHES. It adds an Authorization header and nothing else — no loading bar,\n// no 401 refresh, no error dialog, no offline suppression. It is not a small LoaderInterceptor\n// and must never grow into one.\n// 3. THE CORRECT FIX FOR ANYTHING MORE IS TO LOAD THE PRIMARY. If a route needs real interceptor\n// behaviour, give it the primary; do not enrich this slot.\n//\n// WHY IT EXISTS: the login tier deliberately does not reference the primary, so between a successful\n// login POST and the shell route's injector coming up, library code issues ~5 authenticated GETs while\n// `delegate` is still null. Measured on shift-spa: 6 untokenised warnings and 5 x 401 on every login.\n// The page recovered and looked perfect, which is what made it dangerous.\n//\n// Same write-once law as the delegate, and for the same reason: a reset path would reopen the\n// untokenised window on the auth path mid-session.\nexport type TinTokenAttacher = (req: HttpRequest<any>) => HttpRequest<any>;\n\nlet fallbackAttacher: TinTokenAttacher | null = null;\n\nexport function setTinFallbackTokenAttacher(attacher: TinTokenAttacher): void {\n if (fallbackAttacher) { return; } // Write-once: deliberately no reset/clear path\n fallbackAttacher = attacher;\n}\n\n@Injectable()\nexport class TinRootInterceptor implements HttpInterceptor {\n\n // Injects NOTHING. That is the entire point — it is the only thing that lets this class sit in the\n // eager root chain of an app that no longer references the tin-spa primary.\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n // Added (token-slot A-0901-17): the DELEGATE IS CHECKED FIRST and its branch is unchanged. Once the\n // primary has loaded there is exactly one code path, byte-for-byte the one that shipped in 20.14.110.\n if (delegate) {\n return delegate.intercept(request, next);\n }\n\n // Added (token-slot A-0901-17): the primary is not here yet, but the login tier has supplied a\n // minimal attacher — see TIN_LOGIN_TIER_HTTP_PROVIDERS in tin-spa/core. The request goes out WITH a\n // bearer token instead of tokenless.\n //\n // DELIBERATELY console.info, NOT console.warn. The warn below is a RACE DETECTOR for a genuinely\n // untokenised request; this case is the handled one, and the two must stay distinguishable — both by\n // a reader and by the gate that counts untokenised warnings. Do not \"tidy\" these into one call.\n //\n // TIN_LOADER_RAN IS NOT SET HERE, on purpose. That marker means \"the real interceptor has already\n // done its work\". The attacher does not do that work — it only adds a header. Setting it would make\n // a later LoaderInterceptor step aside for a request it never actually processed.\n if (fallbackAttacher) {\n console.info(`[tin-spa] HTTP request issued before the tin-spa primary loaded — token attached by the login-tier fallback: ${request.method} ${request.url}`);\n return next.handle(fallbackAttacher(request));\n }\n\n // Added: FAIL-OPEN before the primary has loaded, ruled deliberately (arbiter, 2026-09-01).\n // Fail-CLOSED is the instinctive \"secure\" answer and it is wrong here: it would block the LOGIN POST\n // itself — the one request that must go out anonymously, and the one that creates the token the\n // delegate needs. The risk of passing through is a TOKENLESS request, which fails 401 loudly at the\n // server; the risk of blocking is a broken login that the server never even sees. 401 is the better\n // failure. The warn is UNTHROTTLED on purpose: it is a race detector, and suppressing it defeats it.\n // Note (A-0901-17): once an app installs the fallback attacher, this branch is reached ONLY by apps\n // that have not opted into the login tier. The login POST of an opted-in app takes the attacher\n // branch above and is returned UNCHANGED there (no token exists yet), so it still goes out\n // anonymously — the fail-open guarantee is preserved by the attacher, not by this branch.\n console.warn(`[tin-spa] HTTP request issued before the tin-spa primary loaded — sent WITHOUT an Authorization header: ${request.method} ${request.url}`);\n return next.handle(request);\n }\n}\n","// tin-spa/http — the ROOT HttpClient slot, and NOTHING else.\n//\n// It imports only @angular/core and @angular/common/http. It must NEVER import from the tin-spa\n// PRIMARY (not a value, not a type, not a re-export): a static reference from here would reclaim the\n// ~2.9MB primary into the eager anonymous bundle and undo the entire landing-first initiative. That is\n// the same law that keeps tin-spa/keys dependency-free.\nexport * from './lib/root-interceptor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAU,MAAM,KAAK;AAEvE;AACA;AACA;AACA,IAAI,QAAQ,GAA2B,IAAI;AAE3C;AACA;AACM,SAAU,kBAAkB,CAAC,WAA4B,EAAA;IAC7D,IAAI,QAAQ,EAAE;QAAE;AAAQ,IAAA,CAAC;IACzB,QAAQ,GAAG,WAAW;AACxB;AAyBA,IAAI,gBAAgB,GAA4B,IAAI;AAE9C,SAAU,2BAA2B,CAAC,QAA0B,EAAA;IACpE,IAAI,gBAAgB,EAAE;QAAE;AAAQ,IAAA,CAAC;IACjC,gBAAgB,GAAG,QAAQ;AAC7B;MAGa,kBAAkB,CAAA;;;IAK7B,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;;;QAIpD,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;QAC1C;;;;;;;;;;;;QAaA,IAAI,gBAAgB,EAAE;AACpB,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,6GAAA,EAAgH,OAAO,CAAC,MAAM,CAAA,CAAA,EAAI,OAAO,CAAC,GAAG,CAAA,CAAE,CAAC;YAC7J,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C;;;;;;;;;;;AAYA,QAAA,OAAO,CAAC,IAAI,CAAC,CAAA,wGAAA,EAA2G,OAAO,CAAC,MAAM,CAAA,CAAA,EAAI,OAAO,CAAC,GAAG,CAAA,CAAE,CAAC;AACxJ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B;+GAzCW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACpFD;AACA;AACA;AACA;AACA;AACA;;ACLA;;AAEG;;;;"}
1
+ {"version":3,"file":"tin-spa-http.mjs","sources":["../../../projects/tin-spa/http/src/lib/root-interceptor.ts","../../../projects/tin-spa/http/src/lib/token-attacher.ts","../../../projects/tin-spa/http/src/public-api.ts","../../../projects/tin-spa/http/src/tin-spa-http.ts"],"sourcesContent":["// Added (landing-first L2, arbiter ruling 2026-09-01): the ROOT HttpClient slot that the lazy primary fills.\n//\n// 🔴 WHY THIS FILE EXISTS — it fixes a MEASURED 401 STORM, not a cosmetic defect.\n//\n// Dropping TinSpaModule from an app's ROOT module is what takes the ~2.9MB tin-spa primary out of an\n// anonymous visitor's download. But TinSpaModule was also registering\n// { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true }\n// and LoaderInterceptor.addToken is the SOLE bearer-token attachment point in the estate. Moving those\n// providers onto the LAZY shell route did not move that registration into the root chain — an interceptor\n// registered by a lazy route NEVER joins it. Measured consequence on shift-spa: 33 x 401 after a real\n// login, with NO Authorization header on the wire, while the same token via curl returned 200.\n// The app was unusable after login. \"The global loading bar does not run\" was a symptom of this, not\n// the consequence of it.\n//\n// 🔑 THE SHAPE IS FORCED, and it was ruled on rather than chosen. Angular DI cannot express\n// \"root-position provider whose implementation is supplied later by a CHILD environment injector\":\n// * Moving LoaderInterceptor into a dependency-free entry point is impossible — it injects nine\n// services (AuthService, MessageService, LoaderService, Router, LogService, StorageService,\n// OfflineService, ApiErrorService) plus Constants. That set IS the primary; such an entry point\n// would be the primary wearing a hat, and importing it eagerly reclaims the whole bundle.\n// * A root FUNCTIONAL interceptor cannot see the lazy route injector that owns the instance, and\n// consumer roots use HttpClientModule, which honours HTTP_INTERCEPTORS but ignores\n// withInterceptors(). Going functional would force a provideHttpClient migration in five apps.\n// So: the root chain permanently holds ONE slot that injects nothing, and the primary fills it the\n// moment the lazy shell route's environment injector is created.\n//\n// ⏱️ THE TIMING IS SAFE, and this was verified against Angular's shipped runtime rather than assumed.\n// In @angular/router/fesm2022/router2.mjs, matchWithChecks() calls getOrCreateRouteInjectorIfNeeded()\n// (:3847) BEFORE runCanMatchGuards() (:3848), and that function (:1887-1891) is what calls\n// createEnvironmentInjector(route.providers, ...). The route's providers — and therefore the\n// ENVIRONMENT_INITIALIZER that fills this delegate — are live during the RECOGNITION phase: before\n// canMatch, before canActivateChild, and before any component. No guard can race a tokenless request out.\nimport { HttpContextToken, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n// Added: set by whichever interceptor does the real work, so a request can never be processed twice.\n// This is the double-interception guard. An app that (wrongly) has BOTH TinSpaModule at root AND this\n// shim registered would otherwise run LoaderInterceptor twice per request — double loader bookkeeping and\n// two 401-refresh attempts. Defaults false, is set only by the real interceptor, and is never cleared.\nexport const TIN_LOADER_RAN = new HttpContextToken<boolean>(() => false);\n\n// Added: the delegate slot. Module-scoped and mutable BY NECESSITY — see the DI note above.\n// Write-once from library code. There is deliberately NO reset/clear path: clearing it mid-session would\n// reopen the untokenised window on the auth path (arbiter assumption 3).\nlet delegate: HttpInterceptor | null = null;\n\n// Added: called by TIN_SPA_MODULE_PROVIDERS' ENVIRONMENT_INITIALIZER when the lazy primary loads.\n// NOT re-exported from the primary barrel — consumer apps have no reason to call it.\nexport function setTinHttpDelegate(interceptor: HttpInterceptor): void {\n if (delegate) { return; } // Write-once: the first primary to load owns the slot\n delegate = interceptor;\n}\n\n// Added (token-slot, arbiter ruling A-0901-17): the FALLBACK token attacher.\n//\n// 🔗 MAINTENANCE SEAM — this slot is one half of a pair. The other half is\n// TIN_LOGIN_TIER_HTTP_PROVIDERS in `tin-spa/core` (core/src/lib/runtime/login-tier-http.ts), which is\n// the ONLY thing in the estate that fills this slot. Read that file before changing this one.\n//\n// 🔑 THE LAW OF THE PAIR, in three lines:\n// 1. THE DELEGATE ALWAYS WINS. The moment the primary loads, this attacher is never consulted again.\n// 2. THE FALLBACK ONLY ATTACHES. It adds an Authorization header and nothing else — no loading bar,\n// no 401 refresh, no error dialog, no offline suppression. It is not a small LoaderInterceptor\n// and must never grow into one.\n// 3. THE CORRECT FIX FOR ANYTHING MORE IS TO LOAD THE PRIMARY. If a route needs real interceptor\n// behaviour, give it the primary; do not enrich this slot.\n//\n// WHY IT EXISTS: the login tier deliberately does not reference the primary, so between a successful\n// login POST and the shell route's injector coming up, library code issues ~5 authenticated GETs while\n// `delegate` is still null. Measured on shift-spa: 6 untokenised warnings and 5 x 401 on every login.\n// The page recovered and looked perfect, which is what made it dangerous.\n//\n// Same write-once law as the delegate, and for the same reason: a reset path would reopen the\n// untokenised window on the auth path mid-session.\nexport type TinTokenAttacher = (req: HttpRequest<any>) => HttpRequest<any>;\n\nlet fallbackAttacher: TinTokenAttacher | null = null;\n\nexport function setTinFallbackTokenAttacher(attacher: TinTokenAttacher): void {\n if (fallbackAttacher) { return; } // Write-once: deliberately no reset/clear path\n fallbackAttacher = attacher;\n}\n\n@Injectable()\nexport class TinRootInterceptor implements HttpInterceptor {\n\n // Injects NOTHING. That is the entire point — it is the only thing that lets this class sit in the\n // eager root chain of an app that no longer references the tin-spa primary.\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n // Added (token-slot A-0901-17): the DELEGATE IS CHECKED FIRST and its branch is unchanged. Once the\n // primary has loaded there is exactly one code path, byte-for-byte the one that shipped in 20.14.110.\n if (delegate) {\n return delegate.intercept(request, next);\n }\n\n // Added (token-slot A-0901-17): the primary is not here yet, but the login tier has supplied a\n // minimal attacher — see TIN_LOGIN_TIER_HTTP_PROVIDERS in tin-spa/core. The request goes out WITH a\n // bearer token instead of tokenless.\n //\n // DELIBERATELY console.info, NOT console.warn. The warn below is a RACE DETECTOR for a genuinely\n // untokenised request; this case is the handled one, and the two must stay distinguishable — both by\n // a reader and by the gate that counts untokenised warnings. Do not \"tidy\" these into one call.\n //\n // TIN_LOADER_RAN IS NOT SET HERE, on purpose. That marker means \"the real interceptor has already\n // done its work\". The attacher does not do that work — it only adds a header. Setting it would make\n // a later LoaderInterceptor step aside for a request it never actually processed.\n if (fallbackAttacher) {\n console.info(`[tin-spa] HTTP request issued before the tin-spa primary loaded — token attached by the login-tier fallback: ${request.method} ${request.url}`);\n return next.handle(fallbackAttacher(request));\n }\n\n // Added: FAIL-OPEN before the primary has loaded, ruled deliberately (arbiter, 2026-09-01).\n // Fail-CLOSED is the instinctive \"secure\" answer and it is wrong here: it would block the LOGIN POST\n // itself — the one request that must go out anonymously, and the one that creates the token the\n // delegate needs. The risk of passing through is a TOKENLESS request, which fails 401 loudly at the\n // server; the risk of blocking is a broken login that the server never even sees. 401 is the better\n // failure. The warn is UNTHROTTLED on purpose: it is a race detector, and suppressing it defeats it.\n // Note (A-0901-17): once an app installs the fallback attacher, this branch is reached ONLY by apps\n // that have not opted into the login tier. The login POST of an opted-in app takes the attacher\n // branch above and is returned UNCHANGED there (no token exists yet), so it still goes out\n // anonymously — the fail-open guarantee is preserved by the attacher, not by this branch.\n console.warn(`[tin-spa] HTTP request issued before the tin-spa primary loaded — sent WITHOUT an Authorization header: ${request.method} ${request.url}`);\n return next.handle(request);\n }\n}\n","// Added (cold-reload 401, option D): the ONE attacher BODY, moved here VERBATIM out of\n// `tin-spa/core` (core/src/lib/runtime/login-tier-http.ts) and parameterised on its only dependency.\n//\n// 🔗 MAINTENANCE SEAM — this file is one third of a trio: the write-once slot\n// `setTinFallbackTokenAttacher` (root-interceptor.ts, same entry point), this body, and its two callers\n// — `TIN_LOGIN_TIER_HTTP_PROVIDERS` (tin-spa/core, the LOGIN route) and `AuthService`'s constructor\n// (tin-spa/core, every app, every tier). Read root-interceptor.ts before changing this one.\n//\n// 🔑 THE LAW OF THE PAIR (A-0901-17) IS UNCHANGED AND IS WHY THE BODY MOVED HERE:\n// 1. THE DELEGATE ALWAYS WINS. TinRootInterceptor checks the primary's delegate FIRST; the moment the\n// primary loads, this attacher is never consulted again.\n// 2. THIS ATTACHES A HEADER AND NOTHING ELSE. No loading bar, no 401 refresh, no error dialog, no\n// offline suppression, no TIN_LOADER_RAN. It is not a small LoaderInterceptor and must never\n// become one.\n// 3. THE CORRECT FIX FOR ANYTHING MORE IS TO LOAD THE PRIMARY.\n// ONE body, now living in the dependency-free half of the pair, with TWO callers supplying a token\n// source. That is the whole point of the move.\n//\n// WHY IT LIVES IN `tin-spa/http`: `login-tier-http.ts` imports `AuthService`, and AuthService's DI graph\n// (SignalR, social auth, HttpService, StorageService, MessageService, LogService, OfflineService,\n// DataServiceLib, ConfigService, Router) is ~1.18 MB raw / ~185 kB transfer of eager weight — MEASURED on\n// shift-spa 2026-09-03, which is what killed the \"register the login-tier providers at the eager root\"\n// option. `tin-spa/http` imports only @angular/core and @angular/common/http, so a caller that needs the\n// attacher body but not AuthService pays nothing for it.\nimport { HttpRequest } from '@angular/common/http';\nimport { TinTokenAttacher } from './root-interceptor';\n\n// Added: build a fallback token attacher over any token source. `getToken` is read PER REQUEST, never\n// captured, so a caller may hand over a source that is still empty at construction time — which is\n// exactly the cold-reload case: AuthService installs this from its constructor, before\n// tryRestoreSession() has put a token anywhere.\nexport function createTinTokenAttacher(getToken: () => string): TinTokenAttacher {\n\n return (req: HttpRequest<any>) => {\n\n const token = getToken();\n const url = req.url || '';\n\n // DELIBERATE DEVIATION 1 from LoaderInterceptor.addToken — this is CONDITIONAL on a non-empty\n // token, where addToken is not. addToken clones unconditionally and therefore sends a bare\n // \"Bearer \" when tokenSource is still empty. That is not hypothetical: it is the measured\n // accounts-prefetch-401 defect written up at length in accounting.service.ts:2308-2326, where a\n // prefetch fired off `loggedinObserv` beat the token into tokenSource and answered 401 every\n // time. This attacher lives ENTIRELY inside that same pre-token window, so it would hit the bug\n // constantly rather than occasionally. Returning the request unchanged is also what preserves\n // the fail-open guarantee for the LOGIN POST itself, which must go out anonymously.\n //\n // DELIBERATE DEVIATION 2 — the refresh/revoke exclusion is INLINE here rather than at the call\n // site. In LoaderInterceptor the same test sits in intercept() around the addToken() call\n // (loader-interceptor.service.ts, the `url.includes('User/refresh') || url.includes('User/revoke')`\n // line). There is no equivalent call site here — TinRootInterceptor's fallback branch is\n // deliberately dumb — so the rule has to travel with the attacher. Those endpoints are\n // AllowAnonymous and authenticate from the request BODY; a stale bearer on them is at best noise\n // and at worst a rejected refresh.\n if (!token || url.includes('User/refresh') || url.includes('User/revoke')) {\n return req;\n }\n\n return req.clone({ setHeaders: { Authorization: `Bearer ${token}` } });\n };\n}\n","// tin-spa/http — the ROOT HttpClient slot, and NOTHING else.\n//\n// It imports only @angular/core and @angular/common/http. It must NEVER import from the tin-spa\n// PRIMARY (not a value, not a type, not a re-export): a static reference from here would reclaim the\n// ~2.9MB primary into the eager anonymous bundle and undo the entire landing-first initiative. That is\n// the same law that keeps tin-spa/keys dependency-free.\nexport * from './lib/root-interceptor';\nexport * from './lib/token-attacher';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAU,MAAM,KAAK;AAEvE;AACA;AACA;AACA,IAAI,QAAQ,GAA2B,IAAI;AAE3C;AACA;AACM,SAAU,kBAAkB,CAAC,WAA4B,EAAA;IAC7D,IAAI,QAAQ,EAAE;QAAE;AAAQ,IAAA,CAAC;IACzB,QAAQ,GAAG,WAAW;AACxB;AAyBA,IAAI,gBAAgB,GAA4B,IAAI;AAE9C,SAAU,2BAA2B,CAAC,QAA0B,EAAA;IACpE,IAAI,gBAAgB,EAAE;QAAE;AAAQ,IAAA,CAAC;IACjC,gBAAgB,GAAG,QAAQ;AAC7B;MAGa,kBAAkB,CAAA;;;IAK7B,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;;;QAIpD,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;QAC1C;;;;;;;;;;;;QAaA,IAAI,gBAAgB,EAAE;AACpB,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,6GAAA,EAAgH,OAAO,CAAC,MAAM,CAAA,CAAA,EAAI,OAAO,CAAC,GAAG,CAAA,CAAE,CAAC;YAC7J,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C;;;;;;;;;;;AAYA,QAAA,OAAO,CAAC,IAAI,CAAC,CAAA,wGAAA,EAA2G,OAAO,CAAC,MAAM,CAAA,CAAA,EAAI,OAAO,CAAC,GAAG,CAAA,CAAE,CAAC;AACxJ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B;+GAzCW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACzDD;AACA;AACA;AACA;AACM,SAAU,sBAAsB,CAAC,QAAsB,EAAA;IAE3D,OAAO,CAAC,GAAqB,KAAI;AAE/B,QAAA,MAAM,KAAK,GAAG,QAAQ,EAAE;AACxB,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE;;;;;;;;;;;;;;;;;AAkBzB,QAAA,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACzE,YAAA,OAAO,GAAG;QACZ;AAEA,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAA,CAAE,EAAE,EAAE,CAAC;AACxE,IAAA,CAAC;AACH;;AC5DA;AACA;AACA;AACA;AACA;AACA;;ACLA;;AAEG;;;;"}
@@ -1,9 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, Component, NgModule } from '@angular/core';
3
- import * as i1 from '@angular/router';
3
+ import * as i1$1 from '@angular/router';
4
4
  import { RouterModule } from '@angular/router';
5
+ import * as i1 from 'tin-spa/core';
5
6
  import { InventoryService } from 'tin-spa/core';
6
- import { P as PageComponent, T as TilesComponent, C as ChartsComponent, e as SpaAdminModule } from './tin-spa-tin-spa-Cqe5hYTr.mjs';
7
+ import { P as PageComponent, T as TilesComponent, C as ChartsComponent, e as SpaAdminModule } from './tin-spa-tin-spa-BMy59BVn.mjs';
7
8
  import * as i3 from '@angular/material/icon';
8
9
  import { CommonModule } from '@angular/common';
9
10
 
@@ -142,7 +143,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
142
143
 
143
144
  // Inventory module dashboard with stock KPI tiles and charts
144
145
  class InventoryDashboardComponent {
145
- constructor() {
146
+ constructor(dataService) {
147
+ this.dataService = dataService;
146
148
  this.summaryTiles = {
147
149
  tiles: [
148
150
  { name: 'totalProducts', alias: 'Total Products', color: '#2196f3', icon: 'category', style: 'icon', info: 'Total active products' },
@@ -152,7 +154,8 @@ class InventoryDashboardComponent {
152
154
  { name: 'adjustmentsThisMonth', alias: 'Adjustments (MTD)', color: '#9c27b0', icon: 'tune', style: 'icon', info: 'Inventory adjustments this month' },
153
155
  ],
154
156
  loadAction: { url: 'products/dashboard-summary/x' }, // Changed: Use module-specific CustomCriteria endpoint
155
- loadInit: true
157
+ loadInit: true,
158
+ security: { allow: [this.dataService.capInventoryDashboard] } // Added (dashboard-alignment 1-D.3): cap35 (datalib.service.ts:614) — a single-module dashboard, so the gate sits on the whole config
156
159
  };
157
160
  // Changed: Chart-style tiles now use loadAction with dataField for dynamic data
158
161
  this.chartTiles = {
@@ -162,7 +165,8 @@ class InventoryDashboardComponent {
162
165
  { name: 'categorySplit', alias: 'By Category', color: '#ff9800', chart: { type: 'pie', colors: ['#2196f3', '#4caf50', '#ff9800', '#f44336', '#9c27b0'], height: 130, dataField: 'categorySplit' }, footer: 'Value distribution', footerIcon: 'donut_large' }, // Changed: dataField replaces inline data
163
166
  ],
164
167
  loadAction: { url: 'products/dashboard-chart-tiles/x' }, // Changed: Load chart tile data from API
165
- loadInit: true
168
+ loadInit: true,
169
+ security: { allow: [this.dataService.capInventoryDashboard] } // Added (dashboard-alignment 1-D.3): cap35
166
170
  };
167
171
  this.chartConfig = {
168
172
  charts: [
@@ -173,10 +177,11 @@ class InventoryDashboardComponent {
173
177
  ],
174
178
  loadAction: { url: 'products/dashboard-charts/x' }, // Changed: Use module-specific CustomCriteria endpoint
175
179
  loadInit: true,
176
- columns: 2
180
+ columns: 2,
181
+ security: { allow: [this.dataService.capInventoryDashboard] } // Added (dashboard-alignment 1-D.3): cap35
177
182
  };
178
183
  }
179
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: InventoryDashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: InventoryDashboardComponent, deps: [{ token: i1.DataServiceLib }], target: i0.ɵɵFactoryTarget.Component }); }
180
185
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: InventoryDashboardComponent, isStandalone: false, selector: "spa-inventory-dashboard", ngImport: i0, template: `
181
186
  <div class="dashboard-container">
182
187
  <h4 class="dashboard-title"><mat-icon>inventory_2</mat-icon> Inventory Dashboard</h4>
@@ -186,7 +191,7 @@ class InventoryDashboardComponent {
186
191
  <spa-tiles [config]="chartTiles"></spa-tiles>
187
192
  <spa-charts [config]="chartConfig"></spa-charts>
188
193
  </div>
189
- `, isInline: true, styles: [".dashboard-container{padding:16px}.dashboard-title{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:#333;font-weight:500}\n"], dependencies: [{ kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "tileClick", "tileUnClick"] }, { kind: "component", type: ChartsComponent, selector: "spa-charts", inputs: ["config", "data", "reload"] }] }); }
194
+ `, isInline: true, styles: [".dashboard-container{padding:16px}.dashboard-title{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:#333;font-weight:500}\n"], dependencies: [{ kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TilesComponent, selector: "spa-tiles", inputs: ["config", "lastSearch", "data", "reload"], outputs: ["tileActionSelected", "contentResolved", "tileClick", "tileUnClick"] }, { kind: "component", type: ChartsComponent, selector: "spa-charts", inputs: ["config", "data", "reload"], outputs: ["contentResolved"] }] }); }
190
195
  }
191
196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: InventoryDashboardComponent, decorators: [{
192
197
  type: Component,
@@ -200,7 +205,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
200
205
  <spa-charts [config]="chartConfig"></spa-charts>
201
206
  </div>
202
207
  `, standalone: false, styles: [".dashboard-container{padding:16px}.dashboard-title{display:flex;align-items:center;gap:8px;margin-bottom:16px;color:#333;font-weight:500}\n"] }]
203
- }] });
208
+ }], ctorParameters: () => [{ type: i1.DataServiceLib }] });
204
209
 
205
210
  // Component to display inventory stock grouped by product
206
211
  class InventoryStockComponent {
@@ -282,7 +287,7 @@ const INVENTORY_ROUTES = [
282
287
  ];
283
288
  class InventoryRoutingModule {
284
289
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: InventoryRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
285
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: InventoryRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] }); }
290
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: InventoryRoutingModule, imports: [i1$1.RouterModule], exports: [RouterModule] }); }
286
291
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: InventoryRoutingModule, imports: [RouterModule.forChild(INVENTORY_ROUTES), RouterModule] }); }
287
292
  }
288
293
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: InventoryRoutingModule, decorators: [{
@@ -335,4 +340,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
335
340
  }] });
336
341
 
337
342
  export { InventoryModule };
338
- //# sourceMappingURL=tin-spa-inventory.module-DRKAcNau.mjs.map
343
+ //# sourceMappingURL=tin-spa-inventory.module-CYWBqSCd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tin-spa-inventory.module-CYWBqSCd.mjs","sources":["../../../projects/tin-spa/src/lib/pages/inventory/products/products.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/inventory-items/inventory-items.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/requisitions/requisitions.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/inventory-adjustments/inventory-adjustments.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/inventory-returns/inventory-returns.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/inventory-transactions/inventory-transactions.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/inventory-dashboard/inventory-dashboard.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/inventory-stock/inventory-stock.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/bundle-products/bundle-products.component.ts","../../../projects/tin-spa/src/lib/pages/inventory/service-items/service-items.component.ts","../../../projects/tin-spa/src/lib/modules/inventory/inventory-routing.module.ts","../../../projects/tin-spa/src/lib/modules/inventory/inventory.module.ts"],"sourcesContent":["import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { InventoryService } from 'tin-spa/core';\n\n// Component now uses centralized inventory service for configurations\n@Component({\n selector: 'spa-products',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class ProductsComponent implements OnInit {\n\n private inventoryService = inject(InventoryService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Products',\n tableConfig: this.inventoryService.productsTableConfig\n };\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { InventoryService } from 'tin-spa/core';\n\n// Component now uses centralized inventory service for configurations\n@Component({\n selector: 'spa-inventory-items',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class InventoryItemsComponent implements OnInit {\n\n private inventoryService = inject(InventoryService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Inventory Items',\n tableConfig: this.inventoryService.inventoryItemsTableConfig\n };\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { InventoryService } from 'tin-spa/core';\n\n// Component now uses centralized inventory service for configurations\n@Component({\n selector: 'spa-requisitions',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class RequisitionsComponent implements OnInit {\n\n private inventoryService = inject(InventoryService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Requisitions',\n tableConfig: this.inventoryService.requisitionsTableConfig\n };\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { InventoryService } from 'tin-spa/core';\n\n// Component now uses centralized inventory service for configurations\n@Component({\n selector: 'spa-inventory-adjustments',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class InventoryAdjustmentsComponent implements OnInit {\n\n private inventoryService = inject(InventoryService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Inventory Adjustments',\n tableConfig: this.inventoryService.inventoryAdjustmentsTableConfig\n };\n}\n","import { Component, OnInit, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { InventoryService } from 'tin-spa/core';\n\n@Component({\n selector: 'spa-inventory-returns',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class InventoryReturnsComponent implements OnInit {\n // Changed: Inject InventoryService and use shared config instead of inline config\n private inventoryService = inject(InventoryService);\n\n tableConfig = this.inventoryService.inventoryReturnsTableConfig;\n\n pageConfig: PageConfig = {\n title: 'Inventory Returns',\n tableConfig: this.tableConfig\n };\n\n ngOnInit(): void { }\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { InventoryService } from 'tin-spa/core';\n\n// Component now uses centralized inventory service for configurations\n@Component({\n selector: 'spa-inventory-transactions',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class InventoryTransactionsComponent implements OnInit {\n\n private inventoryService = inject(InventoryService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Inventory Transactions',\n tableConfig: this.inventoryService.inventoryTransactionsTableConfig\n };\n}\n","import { Component } from '@angular/core';\nimport { TileConfig, ChartConfig } from 'tin-spa/core';\nimport { DataServiceLib } from 'tin-spa/core'; // Added (dashboard-alignment 1-D.3): the CapItem source the whole-config security gates read\n\n// Inventory module dashboard with stock KPI tiles and charts\n@Component({\n selector: 'spa-inventory-dashboard',\n template: `\n <div class=\"dashboard-container\">\n <h4 class=\"dashboard-title\"><mat-icon>inventory_2</mat-icon> Inventory Dashboard</h4>\n <spa-tiles [config]=\"summaryTiles\"></spa-tiles>\n <!-- Changed: Spacer div ensures margin between summary and chart tiles -->\n <div style=\"margin-top: 16px;\"></div>\n <spa-tiles [config]=\"chartTiles\"></spa-tiles>\n <spa-charts [config]=\"chartConfig\"></spa-charts>\n </div>\n `,\n styles: [`\n .dashboard-container { padding: 16px; }\n .dashboard-title { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; color: #333; font-weight: 500; }\n `],\n standalone: false\n})\nexport class InventoryDashboardComponent {\n\n constructor(private dataService: DataServiceLib) { }\n\n summaryTiles: TileConfig = {\n tiles: [\n { name: 'totalProducts', alias: 'Total Products', color: '#2196f3', icon: 'category', style: 'icon', info: 'Total active products' },\n { name: 'lowStockItems', alias: 'Low Stock Items', color: '#f44336', icon: 'warning', style: 'icon', info: 'Products below reorder level' },\n { name: 'totalStockValue', alias: 'Stock Value', color: '#4caf50', icon: 'attach_money', style: 'icon', info: 'Total inventory value' }, // Changed: Removed prefix\n { name: 'itemsInStock', alias: 'Items In Stock', color: '#ff9800', icon: 'inventory', style: 'icon', info: 'Total inventory item count' },\n { name: 'adjustmentsThisMonth', alias: 'Adjustments (MTD)', color: '#9c27b0', icon: 'tune', style: 'icon', info: 'Inventory adjustments this month' },\n ],\n loadAction: { url: 'products/dashboard-summary/x' }, // Changed: Use module-specific CustomCriteria endpoint\n loadInit: true,\n security: { allow: [this.dataService.capInventoryDashboard] } // Added (dashboard-alignment 1-D.3): cap35 (datalib.service.ts:614) — a single-module dashboard, so the gate sits on the whole config\n };\n\n // Changed: Chart-style tiles now use loadAction with dataField for dynamic data\n chartTiles: TileConfig = {\n tiles: [\n { name: 'stockHealth', alias: 'Stock Health', color: '#4caf50', chart: { type: 'doughnut', gaugeColor: '#4caf50', height: 130, dataField: 'stockHealth' }, footer: 'Items above reorder level', footerIcon: 'health_and_safety' }, // Changed: dataField replaces gaugeValue\n { name: 'movementSpark', alias: 'Stock Movement', color: '#2196f3', chart: { type: 'line', color: '#2196f3', height: 130, dataField: 'movementSpark' }, footer: 'Last 12 months', footerIcon: 'trending_up' }, // Changed: dataField replaces inline data\n { name: 'categorySplit', alias: 'By Category', color: '#ff9800', chart: { type: 'pie', colors: ['#2196f3', '#4caf50', '#ff9800', '#f44336', '#9c27b0'], height: 130, dataField: 'categorySplit' }, footer: 'Value distribution', footerIcon: 'donut_large' }, // Changed: dataField replaces inline data\n ],\n loadAction: { url: 'products/dashboard-chart-tiles/x' }, // Changed: Load chart tile data from API\n loadInit: true,\n security: { allow: [this.dataService.capInventoryDashboard] } // Added (dashboard-alignment 1-D.3): cap35\n };\n\n chartConfig: ChartConfig = {\n charts: [\n { name: 'stockByCategory', title: 'Stock Levels by Category', type: 'bar', height: '300px', colors: ['#2196f3', '#4caf50', '#ff9800', '#f44336', '#9c27b0', '#795548', '#607d8b'] },\n { name: 'lowStockProducts', title: 'Low Stock Products', type: 'bar', height: '300px', colors: ['#f44336'] },\n { name: 'valueByCategory', title: 'Value by Category', type: 'pie', height: '300px', colors: ['#2196f3', '#4caf50', '#ff9800', '#f44336', '#9c27b0', '#795548', '#607d8b'] },\n { name: 'movementTrend', title: 'Stock Movement Trend', type: 'line', height: '300px', showPoints: true, tension: 0.4, colors: ['#4caf50', '#f44336', '#2196f3'], showLegend: true }, // Changed: showLegend for line chart\n ],\n loadAction: { url: 'products/dashboard-charts/x' }, // Changed: Use module-specific CustomCriteria endpoint\n loadInit: true,\n columns: 2,\n security: { allow: [this.dataService.capInventoryDashboard] } // Added (dashboard-alignment 1-D.3): cap35\n };\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { InventoryService } from 'tin-spa/core';\n\n// Component to display inventory stock grouped by product\n@Component({\n selector: 'spa-inventory-stock',\n template: '<spa-page [config]=\"pageConfig\"></spa-page>',\n standalone: false\n})\nexport class InventoryStockComponent implements OnInit {\n\n private inventoryService = inject(InventoryService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Inventory Stock',\n tableConfig: this.inventoryService.inventoryStockTableConfig\n };\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { InventoryService } from 'tin-spa/core';\n\n// Component for managing bundle/combo products\n@Component({\n selector: 'spa-bundle-products',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class BundleProductsComponent implements OnInit {\n\n private inventoryService = inject(InventoryService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Bundle Products',\n tableConfig: this.inventoryService.bundleProductsTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { InventoryService } from 'tin-spa/core';\n\n// ServiceItems component for managing service items\n@Component({\n selector: 'spa-service-items',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class ServiceItemsComponent {\n private inventoryService = inject(InventoryService);\n\n pageConfig: PageConfig = {\n title: 'Services',\n tableConfig: this.inventoryService.serviceItemsTableConfig\n };\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { ProductsComponent } from '../../pages/inventory/products/products.component';\nimport { InventoryItemsComponent } from '../../pages/inventory/inventory-items/inventory-items.component';\nimport { RequisitionsComponent } from '../../pages/inventory/requisitions/requisitions.component';\nimport { InventoryAdjustmentsComponent } from '../../pages/inventory/inventory-adjustments/inventory-adjustments.component';\nimport { InventoryReturnsComponent } from '../../pages/inventory/inventory-returns/inventory-returns.component';\nimport { InventoryTransactionsComponent } from '../../pages/inventory/inventory-transactions/inventory-transactions.component';\nimport { InventoryDashboardComponent } from '../../pages/inventory/inventory-dashboard/inventory-dashboard.component';\nimport { InventoryStockComponent } from '../../pages/inventory/inventory-stock/inventory-stock.component';\nimport { BundleProductsComponent } from '../../pages/inventory/bundle-products/bundle-products.component';\nimport { ServiceItemsComponent } from '../../pages/inventory/service-items/service-items.component';\n\n// Changed: Exported routes array for use by SpaHomeRoutingModule\nexport const INVENTORY_ROUTES: Routes = [\n { path: \"products\", component: ProductsComponent },\n { path: \"service-items\", component: ServiceItemsComponent },\n { path: \"items\", component: InventoryItemsComponent },\n { path: \"requisitions\", component: RequisitionsComponent },\n { path: \"adjustments\", component: InventoryAdjustmentsComponent },\n { path: \"returns\", component: InventoryReturnsComponent },\n { path: \"transactions\", component: InventoryTransactionsComponent },\n { path: \"dashboard\", component: InventoryDashboardComponent },\n { path: \"stock\", component: InventoryStockComponent },\n { path: \"bundle-products\", component: BundleProductsComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(INVENTORY_ROUTES)],\n exports: [RouterModule]\n})\nexport class InventoryRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { InventoryRoutingModule } from './inventory-routing.module'; // Added (S10-part-1): this domain is now reached by loadChildren, so it carries its own RouterModule.forChild table instead of contributing routes to the eager parent\nimport { CommonModule } from '@angular/common';\nimport { SpaAdminModule } from '../spa-admin.module';\nimport { ProductsComponent } from '../../pages/inventory/products/products.component';\nimport { InventoryItemsComponent } from '../../pages/inventory/inventory-items/inventory-items.component';\nimport { RequisitionsComponent } from '../../pages/inventory/requisitions/requisitions.component';\nimport { InventoryAdjustmentsComponent } from '../../pages/inventory/inventory-adjustments/inventory-adjustments.component';\nimport { InventoryReturnsComponent } from '../../pages/inventory/inventory-returns/inventory-returns.component';\nimport { InventoryTransactionsComponent } from '../../pages/inventory/inventory-transactions/inventory-transactions.component';\nimport { InventoryDashboardComponent } from '../../pages/inventory/inventory-dashboard/inventory-dashboard.component';\nimport { InventoryStockComponent } from '../../pages/inventory/inventory-stock/inventory-stock.component';\nimport { BundleProductsComponent } from '../../pages/inventory/bundle-products/bundle-products.component';\nimport { ServiceItemsComponent } from '../../pages/inventory/service-items/service-items.component';\n\n@NgModule({\n declarations: [\n ProductsComponent,\n InventoryItemsComponent,\n RequisitionsComponent,\n InventoryAdjustmentsComponent,\n InventoryReturnsComponent,\n InventoryTransactionsComponent,\n InventoryDashboardComponent,\n InventoryStockComponent,\n BundleProductsComponent,\n ServiceItemsComponent\n ],\n imports: [\n InventoryRoutingModule,\n CommonModule,\n SpaAdminModule\n ]\n})\nexport class InventoryModule { }\n"],"names":["i1.PageComponent","i2","i3.TilesComponent","i4.ChartsComponent"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { inject, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/router';
4
4
  import { RouterModule } from '@angular/router';
5
5
  import { LoansService } from 'tin-spa/core';
6
- import { P as PageComponent, e as SpaAdminModule } from './tin-spa-tin-spa-Cqe5hYTr.mjs';
6
+ import { P as PageComponent, e as SpaAdminModule } from './tin-spa-tin-spa-BMy59BVn.mjs';
7
7
  import { CommonModule } from '@angular/common';
8
8
 
9
9
  class LoanProductsComponent {
@@ -112,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
112
112
  }] });
113
113
 
114
114
  export { LoansModule };
115
- //# sourceMappingURL=tin-spa-loans.module-BTDmgrWo.mjs.map
115
+ //# sourceMappingURL=tin-spa-loans.module-BDh-T-Ng.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tin-spa-loans.module-BTDmgrWo.mjs","sources":["../../../projects/tin-spa/src/lib/pages/loans/loan-products/loan-products.component.ts","../../../projects/tin-spa/src/lib/pages/loans/loans/loans.component.ts","../../../projects/tin-spa/src/lib/pages/loans/loan-payments/loan-payments.component.ts","../../../projects/tin-spa/src/lib/modules/loans/loans-routing.module.ts","../../../projects/tin-spa/src/lib/modules/loans/loans.module.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { LoansService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-loan-products',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class LoanProductsComponent {\n private loansService = inject(LoansService);\n \n pageConfig: PageConfig = {\n title: 'Loan Products',\n tableConfig: this.loansService.loanProductTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { LoansService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-loans',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class LoansComponent {\n private loansService = inject(LoansService);\n \n pageConfig: PageConfig = {\n title: 'Loans',\n tableConfig: this.loansService.loanTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { LoansService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-loan-payments',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class LoanPaymentsComponent {\n private loansService = inject(LoansService);\n \n pageConfig: PageConfig = {\n title: 'Loan Payments',\n tableConfig: this.loansService.loanPaymentTableConfig\n };\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { LoanProductsComponent } from '../../pages/loans/loan-products/loan-products.component';\nimport { LoansComponent } from '../../pages/loans/loans/loans.component';\nimport { LoanPaymentsComponent } from '../../pages/loans/loan-payments/loan-payments.component';\n\nexport const LOANS_ROUTES: Routes = [\n { path: \"products\", component: LoanProductsComponent },\n { path: \"loans\", component: LoansComponent },\n { path: \"payments\", component: LoanPaymentsComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(LOANS_ROUTES)],\n exports: [RouterModule]\n})\nexport class LoansRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { LoansRoutingModule } from './loans-routing.module'; // Added (S10-part-1): this domain is now reached by loadChildren, so it carries its own RouterModule.forChild table instead of contributing routes to the eager parent\nimport { CommonModule } from '@angular/common';\nimport { SpaAdminModule } from '../spa-admin.module';\nimport { LoanProductsComponent } from '../../pages/loans/loan-products/loan-products.component';\nimport { LoansComponent } from '../../pages/loans/loans/loans.component';\nimport { LoanPaymentsComponent } from '../../pages/loans/loan-payments/loan-payments.component';\n\n@NgModule({\n declarations: [\n LoanProductsComponent,\n LoansComponent,\n LoanPaymentsComponent\n ],\n imports: [\n LoansRoutingModule,\n CommonModule,\n SpaAdminModule\n ]\n})\nexport class LoansModule { }\n"],"names":["i1.PageComponent"],"mappings":"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"}
1
+ {"version":3,"file":"tin-spa-loans.module-BDh-T-Ng.mjs","sources":["../../../projects/tin-spa/src/lib/pages/loans/loan-products/loan-products.component.ts","../../../projects/tin-spa/src/lib/pages/loans/loans/loans.component.ts","../../../projects/tin-spa/src/lib/pages/loans/loan-payments/loan-payments.component.ts","../../../projects/tin-spa/src/lib/modules/loans/loans-routing.module.ts","../../../projects/tin-spa/src/lib/modules/loans/loans.module.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { LoansService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-loan-products',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class LoanProductsComponent {\n private loansService = inject(LoansService);\n \n pageConfig: PageConfig = {\n title: 'Loan Products',\n tableConfig: this.loansService.loanProductTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { LoansService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-loans',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class LoansComponent {\n private loansService = inject(LoansService);\n \n pageConfig: PageConfig = {\n title: 'Loans',\n tableConfig: this.loansService.loanTableConfig\n };\n}\n","import { Component, inject } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { LoansService } from 'tin-spa/core';\n\n\n@Component({\n selector: 'spa-loan-payments',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class LoanPaymentsComponent {\n private loansService = inject(LoansService);\n \n pageConfig: PageConfig = {\n title: 'Loan Payments',\n tableConfig: this.loansService.loanPaymentTableConfig\n };\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { LoanProductsComponent } from '../../pages/loans/loan-products/loan-products.component';\nimport { LoansComponent } from '../../pages/loans/loans/loans.component';\nimport { LoanPaymentsComponent } from '../../pages/loans/loan-payments/loan-payments.component';\n\nexport const LOANS_ROUTES: Routes = [\n { path: \"products\", component: LoanProductsComponent },\n { path: \"loans\", component: LoansComponent },\n { path: \"payments\", component: LoanPaymentsComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(LOANS_ROUTES)],\n exports: [RouterModule]\n})\nexport class LoansRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { LoansRoutingModule } from './loans-routing.module'; // Added (S10-part-1): this domain is now reached by loadChildren, so it carries its own RouterModule.forChild table instead of contributing routes to the eager parent\nimport { CommonModule } from '@angular/common';\nimport { SpaAdminModule } from '../spa-admin.module';\nimport { LoanProductsComponent } from '../../pages/loans/loan-products/loan-products.component';\nimport { LoansComponent } from '../../pages/loans/loans/loans.component';\nimport { LoanPaymentsComponent } from '../../pages/loans/loan-payments/loan-payments.component';\n\n@NgModule({\n declarations: [\n LoanProductsComponent,\n LoansComponent,\n LoanPaymentsComponent\n ],\n imports: [\n LoansRoutingModule,\n CommonModule,\n SpaAdminModule\n ]\n})\nexport class LoansModule { }\n"],"names":["i1.PageComponent"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { inject, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/router';
4
4
  import { RouterModule } from '@angular/router';
5
5
  import { ProductionService } from 'tin-spa/core';
6
- import { P as PageComponent, e as SpaAdminModule } from './tin-spa-tin-spa-Cqe5hYTr.mjs';
6
+ import { P as PageComponent, e as SpaAdminModule } from './tin-spa-tin-spa-BMy59BVn.mjs';
7
7
  import { CommonModule } from '@angular/common';
8
8
 
9
9
  // Component for managing production recipes
@@ -93,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
93
93
  }] });
94
94
 
95
95
  export { ManufacturingModule };
96
- //# sourceMappingURL=tin-spa-manufacturing.module-CHta6oV_.mjs.map
96
+ //# sourceMappingURL=tin-spa-manufacturing.module-9Ti-BFb2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tin-spa-manufacturing.module-CHta6oV_.mjs","sources":["../../../projects/tin-spa/src/lib/pages/manufacturing/production-recipes/production-recipes.component.ts","../../../projects/tin-spa/src/lib/pages/manufacturing/production-orders/production-orders.component.ts","../../../projects/tin-spa/src/lib/modules/manufacturing/manufacturing-routing.module.ts","../../../projects/tin-spa/src/lib/modules/manufacturing/manufacturing.module.ts"],"sourcesContent":["import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { ProductionService } from 'tin-spa/core';\n\n// Component for managing production recipes\n@Component({\n selector: 'spa-production-recipes',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class ProductionRecipesComponent implements OnInit {\n\n private productionService = inject(ProductionService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Production Recipes',\n tableConfig: this.productionService.recipesTableConfig\n };\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { ProductionService } from 'tin-spa/core';\n\n// Component for managing production orders\n@Component({\n selector: 'spa-production-orders',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class ProductionOrdersComponent implements OnInit {\n\n private productionService = inject(ProductionService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Production Orders',\n tableConfig: this.productionService.ordersTableConfig\n };\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { ProductionRecipesComponent } from '../../pages/manufacturing/production-recipes/production-recipes.component';\nimport { ProductionOrdersComponent } from '../../pages/manufacturing/production-orders/production-orders.component';\n\nexport const MANUFACTURING_ROUTES: Routes = [\n { path: \"production-recipes\", component: ProductionRecipesComponent },\n { path: \"production-orders\", component: ProductionOrdersComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(MANUFACTURING_ROUTES)],\n exports: [RouterModule]\n})\nexport class ManufacturingRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { ManufacturingRoutingModule } from './manufacturing-routing.module'; // Added (S10-part-1): this domain is now reached by loadChildren, so it carries its own RouterModule.forChild table instead of contributing routes to the eager parent\nimport { CommonModule } from '@angular/common';\nimport { SpaAdminModule } from '../spa-admin.module';\nimport { ProductionRecipesComponent } from '../../pages/manufacturing/production-recipes/production-recipes.component';\nimport { ProductionOrdersComponent } from '../../pages/manufacturing/production-orders/production-orders.component';\n\n@NgModule({\n declarations: [\n ProductionRecipesComponent,\n ProductionOrdersComponent\n ],\n imports: [\n ManufacturingRoutingModule,\n CommonModule,\n SpaAdminModule\n ]\n})\nexport class ManufacturingModule { }\n"],"names":["i1.PageComponent"],"mappings":"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"}
1
+ {"version":3,"file":"tin-spa-manufacturing.module-9Ti-BFb2.mjs","sources":["../../../projects/tin-spa/src/lib/pages/manufacturing/production-recipes/production-recipes.component.ts","../../../projects/tin-spa/src/lib/pages/manufacturing/production-orders/production-orders.component.ts","../../../projects/tin-spa/src/lib/modules/manufacturing/manufacturing-routing.module.ts","../../../projects/tin-spa/src/lib/modules/manufacturing/manufacturing.module.ts"],"sourcesContent":["import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { ProductionService } from 'tin-spa/core';\n\n// Component for managing production recipes\n@Component({\n selector: 'spa-production-recipes',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class ProductionRecipesComponent implements OnInit {\n\n private productionService = inject(ProductionService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Production Recipes',\n tableConfig: this.productionService.recipesTableConfig\n };\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { PageConfig } from 'tin-spa/core';\nimport { ProductionService } from 'tin-spa/core';\n\n// Component for managing production orders\n@Component({\n selector: 'spa-production-orders',\n standalone: false,\n template: '<spa-page [config]=\"pageConfig\"></spa-page>'\n})\nexport class ProductionOrdersComponent implements OnInit {\n\n private productionService = inject(ProductionService);\n\n ngOnInit(): void { }\n\n pageConfig: PageConfig = {\n title: 'Production Orders',\n tableConfig: this.productionService.ordersTableConfig\n };\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { ProductionRecipesComponent } from '../../pages/manufacturing/production-recipes/production-recipes.component';\nimport { ProductionOrdersComponent } from '../../pages/manufacturing/production-orders/production-orders.component';\n\nexport const MANUFACTURING_ROUTES: Routes = [\n { path: \"production-recipes\", component: ProductionRecipesComponent },\n { path: \"production-orders\", component: ProductionOrdersComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(MANUFACTURING_ROUTES)],\n exports: [RouterModule]\n})\nexport class ManufacturingRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { ManufacturingRoutingModule } from './manufacturing-routing.module'; // Added (S10-part-1): this domain is now reached by loadChildren, so it carries its own RouterModule.forChild table instead of contributing routes to the eager parent\nimport { CommonModule } from '@angular/common';\nimport { SpaAdminModule } from '../spa-admin.module';\nimport { ProductionRecipesComponent } from '../../pages/manufacturing/production-recipes/production-recipes.component';\nimport { ProductionOrdersComponent } from '../../pages/manufacturing/production-orders/production-orders.component';\n\n@NgModule({\n declarations: [\n ProductionRecipesComponent,\n ProductionOrdersComponent\n ],\n imports: [\n ManufacturingRoutingModule,\n CommonModule,\n SpaAdminModule\n ]\n})\nexport class ManufacturingModule { }\n"],"names":["i1.PageComponent"],"mappings":"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"}