@salesforce/templates 66.17.1 → 66.17.3

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 (103) hide show
  1. package/lib/templates/project/angularextapp/CHANGELOG.md +161 -0
  2. package/lib/templates/project/angularextapp/README.md +110 -44
  3. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/README.md +1 -1
  4. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/package-lock.json +649 -1097
  5. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/package.json +4 -4
  6. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/_f_/_os_/api/object-search.service.ts +3 -6
  7. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/_f_/authentication/social-login/social-login.html +39 -0
  8. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/_f_/authentication/social-login/social-login.ts +107 -0
  9. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/api/graphql-operations-types.ts +1 -2
  10. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.ts +1 -8
  11. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/dialog/dialog.html +1 -1
  12. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/icon/icon.ts +6 -0
  13. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/login/login-page.html +2 -0
  14. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/login/login-page.ts +2 -1
  15. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleSocialLoginConfig.cls +145 -0
  16. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleSocialLoginConfig.cls-meta.xml +5 -0
  17. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleSocialLoginConfig_Test.cls +181 -0
  18. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleSocialLoginConfig_Test.cls-meta.xml +5 -0
  19. package/lib/templates/project/angularextapp/package.json +1 -1
  20. package/lib/templates/project/angularextapp/scripts/network-senders.mjs +84 -0
  21. package/lib/templates/project/angularextapp/scripts/org-setup-xml.mjs +11 -6
  22. package/lib/templates/project/angularextapp/scripts/org-setup.mjs +13 -5
  23. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/package-lock.json +648 -1096
  24. package/lib/templates/project/reactexternalapp/CHANGELOG.md +129 -0
  25. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/package-lock.json +543 -531
  26. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/package.json +6 -6
  27. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/authentication/forms/auth-form.tsx +14 -2
  28. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/authentication/hooks/form.tsx +12 -3
  29. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/authentication/layouts/privateRouteLayout.tsx +1 -1
  30. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/authentication/menu/AuthMenu.tsx +43 -5
  31. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/ChangePassword.tsx +1 -1
  32. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/ForgotPassword.tsx +8 -4
  33. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/Login.tsx +1 -1
  34. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/Register.tsx +1 -1
  35. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/ResetPassword.tsx +2 -1
  36. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/authentication/sessionTimeout/SessionTimeoutValidator.tsx +32 -9
  37. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/sobject/parseResponse.ts +1 -2
  38. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/api/distinctValuesService.ts +3 -6
  39. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/MergedSearchResults.tsx +4 -4
  40. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/Search.tsx +5 -2
  41. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/SourceSection.tsx +5 -4
  42. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/controls/PaginationControls.tsx +5 -6
  43. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/controls/SearchBar.tsx +4 -1
  44. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/results/CmsResultRow.tsx +52 -5
  45. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/results/DefaultResultRow.tsx +4 -1
  46. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/types.ts +1 -3
  47. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/appLayout.tsx +13 -4
  48. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/components/alerts/status-alert.tsx +1 -1
  49. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/components/ui/alert.tsx +1 -1
  50. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/components/ui/button.tsx +2 -2
  51. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/components/ui/checkbox.tsx +1 -1
  52. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/components/ui/input.tsx +1 -1
  53. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/components/ui/select.tsx +1 -1
  54. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/pages/AccountObjectDetailPage.tsx +34 -17
  55. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/pages/NotFound.tsx +22 -15
  56. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/routes.tsx +1 -0
  57. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/styles/global.css +2 -2
  58. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/tsconfig.tsbuildinfo +1 -1
  59. package/lib/templates/project/reactexternalapp/package.json +1 -1
  60. package/lib/templates/project/reactexternalapp/scripts/network-senders.mjs +84 -0
  61. package/lib/templates/project/reactexternalapp/scripts/org-setup-xml.mjs +11 -6
  62. package/lib/templates/project/reactexternalapp/scripts/org-setup.mjs +13 -5
  63. package/lib/templates/project/reactinternalapp/CHANGELOG.md +129 -0
  64. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/package-lock.json +546 -534
  65. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/package.json +6 -6
  66. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/sobject/parseResponse.ts +1 -2
  67. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/api/distinctValuesService.ts +3 -6
  68. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/MergedSearchResults.tsx +4 -4
  69. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/Search.tsx +5 -2
  70. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/SourceSection.tsx +5 -4
  71. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/controls/PaginationControls.tsx +5 -6
  72. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/controls/SearchBar.tsx +4 -1
  73. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/results/CmsResultRow.tsx +52 -5
  74. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/results/DefaultResultRow.tsx +4 -1
  75. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/types.ts +1 -3
  76. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/appLayout.tsx +10 -4
  77. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/components/alerts/status-alert.tsx +1 -1
  78. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/components/ui/alert.tsx +1 -1
  79. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/components/ui/button.tsx +2 -2
  80. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/components/ui/checkbox.tsx +1 -1
  81. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/components/ui/input.tsx +1 -1
  82. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/components/ui/select.tsx +1 -1
  83. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/pages/AccountObjectDetailPage.tsx +30 -13
  84. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/pages/NotFound.tsx +22 -15
  85. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/routes.tsx +1 -0
  86. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/styles/global.css +2 -2
  87. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/tsconfig.tsbuildinfo +1 -1
  88. package/lib/templates/project/reactinternalapp/package.json +1 -1
  89. package/lib/templates/project/reactinternalapp/scripts/network-senders.mjs +84 -0
  90. package/lib/templates/project/reactinternalapp/scripts/org-setup-xml.mjs +11 -6
  91. package/lib/templates/project/reactinternalapp/scripts/org-setup.mjs +13 -5
  92. package/lib/templates/uiBundles/angularbasic/package-lock.json +645 -1093
  93. package/lib/templates/uiBundles/reactbasic/package-lock.json +543 -531
  94. package/lib/templates/uiBundles/reactbasic/package.json +6 -6
  95. package/lib/templates/uiBundles/reactbasic/src/components/alerts/status-alert.tsx +1 -1
  96. package/lib/templates/uiBundles/reactbasic/src/components/ui/alert.tsx +1 -1
  97. package/lib/templates/uiBundles/reactbasic/src/components/ui/button.tsx +2 -2
  98. package/lib/templates/uiBundles/reactbasic/src/components/ui/checkbox.tsx +1 -1
  99. package/lib/templates/uiBundles/reactbasic/src/components/ui/input.tsx +1 -1
  100. package/lib/templates/uiBundles/reactbasic/src/components/ui/select.tsx +1 -1
  101. package/lib/templates/uiBundles/reactbasic/src/styles/global.css +2 -2
  102. package/lib/templates/uiBundles/vuebasic/package-lock.json +523 -519
  103. package/package.json +10 -10
@@ -1 +1 @@
1
- {"root":["./src/app.tsx","./src/appLayout.tsx","./src/index.ts","./src/navigationMenu.tsx","./src/router-utils.tsx","./src/routes.tsx","./src/api/graphqlClient.ts","./src/components/AgentforceConversationClient.tsx","./src/components/ObjectBreadcrumb.tsx","./src/components/__inherit_AgentforceConversationClient.tsx","./src/components/alerts/status-alert.tsx","./src/components/layouts/card-layout.tsx","./src/components/ui/alert.tsx","./src/components/ui/avatar.tsx","./src/components/ui/badge.tsx","./src/components/ui/breadcrumb.tsx","./src/components/ui/button.tsx","./src/components/ui/calendar.tsx","./src/components/ui/card.tsx","./src/components/ui/checkbox.tsx","./src/components/ui/collapsible.tsx","./src/components/ui/datePicker.tsx","./src/components/ui/dialog.tsx","./src/components/ui/dropdown-menu.tsx","./src/components/ui/field.tsx","./src/components/ui/index.ts","./src/components/ui/input.tsx","./src/components/ui/label.tsx","./src/components/ui/pagination.tsx","./src/components/ui/popover.tsx","./src/components/ui/select.tsx","./src/components/ui/separator.tsx","./src/components/ui/skeleton.tsx","./src/components/ui/sonner.tsx","./src/components/ui/spinner.tsx","./src/components/ui/table.tsx","./src/components/ui/tabs.tsx","./src/features/search/constants.ts","./src/features/search/index.ts","./src/features/search/loadConfig.ts","./src/features/search/queryBuilder.ts","./src/features/search/types.ts","./src/features/search/__tests__/queryBuilder.test.ts","./src/features/search/adapters/registry.ts","./src/features/search/adapters/types.ts","./src/features/search/adapters/cms/channelResolver.ts","./src/features/search/adapters/cms/cmsQueryFragment.ts","./src/features/search/adapters/cms/contentTypeSessionCache.ts","./src/features/search/adapters/cms/contentTypeUtils.ts","./src/features/search/adapters/cms/index.ts","./src/features/search/adapters/cms/parseResponse.ts","./src/features/search/adapters/cms/searchChannel.ts","./src/features/search/adapters/cms/types.ts","./src/features/search/adapters/cms/__tests__/channelResolver.test.ts","./src/features/search/adapters/cms/__tests__/cmsQueryFragment.test.ts","./src/features/search/adapters/cms/__tests__/contentTypeSessionCache.test.ts","./src/features/search/adapters/cms/__tests__/contentTypeUtils.test.ts","./src/features/search/adapters/cms/__tests__/orgApiVersionService.test.ts","./src/features/search/adapters/cms/__tests__/parseResponse.test.ts","./src/features/search/adapters/cms/__tests__/searchChannel.test.ts","./src/features/search/adapters/cms/__tests__/searchableContentTypesService.test.ts","./src/features/search/adapters/cms/api/apiUtils.ts","./src/features/search/adapters/cms/api/orgApiVersionService.ts","./src/features/search/adapters/cms/api/searchableContentTypesService.ts","./src/features/search/adapters/cms/hooks/useSearchableContentTypes.ts","./src/features/search/adapters/sobject/index.ts","./src/features/search/adapters/sobject/parseResponse.ts","./src/features/search/adapters/sobject/queryFragment.ts","./src/features/search/api/distinctValuesService.ts","./src/features/search/api/searchService.ts","./src/features/search/api/__tests__/searchService.test.ts","./src/features/search/components/GlobalSearchBox.tsx","./src/features/search/components/MergedSearchResults.tsx","./src/features/search/components/Search.tsx","./src/features/search/components/SearchResults.tsx","./src/features/search/components/SourceSection.tsx","./src/features/search/components/__tests__/MergedSearchResults.test.tsx","./src/features/search/components/__tests__/Search.test.tsx","./src/features/search/components/__tests__/SourceSection.test.tsx","./src/features/search/components/controls/PaginationControls.tsx","./src/features/search/components/controls/ScopeSelector.tsx","./src/features/search/components/controls/SearchBar.tsx","./src/features/search/components/controls/SortControl.tsx","./src/features/search/components/filters/ActiveFilters.tsx","./src/features/search/components/filters/DefaultFilterPanel.tsx","./src/features/search/components/filters/FilterContext.tsx","./src/features/search/components/filters/inputs/BooleanFilter.tsx","./src/features/search/components/filters/inputs/DateRangeFilter.tsx","./src/features/search/components/filters/inputs/FilterFieldWrapper.tsx","./src/features/search/components/filters/inputs/MultiSelectFilter.tsx","./src/features/search/components/filters/inputs/NumericRangeFilter.tsx","./src/features/search/components/filters/inputs/SelectFilter.tsx","./src/features/search/components/filters/inputs/TextFilter.tsx","./src/features/search/components/results/CmsResultRow.tsx","./src/features/search/components/results/DefaultResultRow.tsx","./src/features/search/components/results/resolveResultRenderer.ts","./src/features/search/components/results/__tests__/CmsResultRow.test.tsx","./src/features/search/components/results/__tests__/resolveResultRenderer.test.ts","./src/features/search/hooks/useAsyncData.ts","./src/features/search/hooks/useDistinctValues.ts","./src/features/search/hooks/useSearch.ts","./src/features/search/utils/debounce.ts","./src/features/search/utils/fieldUtils.ts","./src/features/search/utils/filterUtils.ts","./src/features/search/utils/sortUtils.ts","./src/features/search/utils/__tests__/filterUtils.test.ts","./src/hooks/useAsyncData.ts","./src/lib/utils.ts","./src/pages/AccountObjectDetailPage.tsx","./src/pages/Home.tsx","./src/pages/NotFound.tsx","./src/types/conversation.ts","./src/types/globals.d.ts","./src/utils/accountFields.ts","./src/utils/__tests__/accountFields.test.ts","./e2e/app.spec.ts","./vite-env.d.ts","./vitest-env.d.ts","./vitest.setup.ts","../../../../../../../../../sdk/platform-sdk/types/env.d.ts"],"version":"5.9.3"}
1
+ {"root":["./src/app.tsx","./src/appLayout.tsx","./src/index.ts","./src/navigationMenu.tsx","./src/router-utils.tsx","./src/routes.tsx","./src/api/graphqlClient.ts","./src/components/AgentforceConversationClient.tsx","./src/components/ObjectBreadcrumb.tsx","./src/components/__inherit_AgentforceConversationClient.tsx","./src/components/alerts/status-alert.tsx","./src/components/layouts/card-layout.tsx","./src/components/ui/alert.tsx","./src/components/ui/avatar.tsx","./src/components/ui/badge.tsx","./src/components/ui/breadcrumb.tsx","./src/components/ui/button.tsx","./src/components/ui/calendar.tsx","./src/components/ui/card.tsx","./src/components/ui/checkbox.tsx","./src/components/ui/collapsible.tsx","./src/components/ui/datePicker.tsx","./src/components/ui/dialog.tsx","./src/components/ui/dropdown-menu.tsx","./src/components/ui/field.tsx","./src/components/ui/index.ts","./src/components/ui/input.tsx","./src/components/ui/label.tsx","./src/components/ui/pagination.tsx","./src/components/ui/popover.tsx","./src/components/ui/select.tsx","./src/components/ui/separator.tsx","./src/components/ui/skeleton.tsx","./src/components/ui/sonner.tsx","./src/components/ui/spinner.tsx","./src/components/ui/table.tsx","./src/components/ui/tabs.tsx","./src/features/search/constants.ts","./src/features/search/index.ts","./src/features/search/loadConfig.ts","./src/features/search/queryBuilder.ts","./src/features/search/types.ts","./src/features/search/__tests__/queryBuilder.test.ts","./src/features/search/adapters/registry.ts","./src/features/search/adapters/types.ts","./src/features/search/adapters/cms/channelResolver.ts","./src/features/search/adapters/cms/cmsQueryFragment.ts","./src/features/search/adapters/cms/contentTypeSessionCache.ts","./src/features/search/adapters/cms/contentTypeUtils.ts","./src/features/search/adapters/cms/index.ts","./src/features/search/adapters/cms/parseResponse.ts","./src/features/search/adapters/cms/searchChannel.ts","./src/features/search/adapters/cms/types.ts","./src/features/search/adapters/cms/__tests__/channelResolver.test.ts","./src/features/search/adapters/cms/__tests__/cmsQueryFragment.test.ts","./src/features/search/adapters/cms/__tests__/contentTypeSessionCache.test.ts","./src/features/search/adapters/cms/__tests__/contentTypeUtils.test.ts","./src/features/search/adapters/cms/__tests__/orgApiVersionService.test.ts","./src/features/search/adapters/cms/__tests__/parseResponse.test.ts","./src/features/search/adapters/cms/__tests__/searchChannel.test.ts","./src/features/search/adapters/cms/__tests__/searchableContentTypesService.test.ts","./src/features/search/adapters/cms/api/apiUtils.ts","./src/features/search/adapters/cms/api/orgApiVersionService.ts","./src/features/search/adapters/cms/api/searchableContentTypesService.ts","./src/features/search/adapters/cms/hooks/useSearchableContentTypes.ts","./src/features/search/adapters/sobject/index.ts","./src/features/search/adapters/sobject/parseResponse.ts","./src/features/search/adapters/sobject/queryFragment.ts","./src/features/search/api/distinctValuesService.ts","./src/features/search/api/searchService.ts","./src/features/search/api/__tests__/searchService.test.ts","./src/features/search/components/GlobalSearchBox.tsx","./src/features/search/components/MergedSearchResults.tsx","./src/features/search/components/Search.tsx","./src/features/search/components/SearchResults.tsx","./src/features/search/components/SourceSection.tsx","./src/features/search/components/__tests__/MergedSearchResults.test.tsx","./src/features/search/components/__tests__/Search.test.tsx","./src/features/search/components/__tests__/SourceSection.test.tsx","./src/features/search/components/controls/PaginationControls.tsx","./src/features/search/components/controls/ScopeSelector.tsx","./src/features/search/components/controls/SearchBar.tsx","./src/features/search/components/controls/SortControl.tsx","./src/features/search/components/filters/ActiveFilters.tsx","./src/features/search/components/filters/DefaultFilterPanel.tsx","./src/features/search/components/filters/FilterContext.tsx","./src/features/search/components/filters/inputs/BooleanFilter.tsx","./src/features/search/components/filters/inputs/DateRangeFilter.tsx","./src/features/search/components/filters/inputs/FilterFieldWrapper.tsx","./src/features/search/components/filters/inputs/MultiSelectFilter.tsx","./src/features/search/components/filters/inputs/NumericRangeFilter.tsx","./src/features/search/components/filters/inputs/SelectFilter.tsx","./src/features/search/components/filters/inputs/TextFilter.tsx","./src/features/search/components/results/CmsResultRow.tsx","./src/features/search/components/results/DefaultResultRow.tsx","./src/features/search/components/results/resolveResultRenderer.ts","./src/features/search/components/results/__tests__/CmsResultRow.test.tsx","./src/features/search/components/results/__tests__/DefaultResultRow.test.tsx","./src/features/search/components/results/__tests__/resolveResultRenderer.test.ts","./src/features/search/hooks/useAsyncData.ts","./src/features/search/hooks/useDistinctValues.ts","./src/features/search/hooks/useSearch.ts","./src/features/search/hooks/__tests__/useSearch.test.ts","./src/features/search/utils/debounce.ts","./src/features/search/utils/fieldUtils.ts","./src/features/search/utils/filterUtils.ts","./src/features/search/utils/sortUtils.ts","./src/features/search/utils/__tests__/filterUtils.test.ts","./src/hooks/useAsyncData.ts","./src/lib/utils.ts","./src/pages/AccountObjectDetailPage.tsx","./src/pages/Home.tsx","./src/pages/NotFound.tsx","./src/types/conversation.ts","./src/types/globals.d.ts","./src/utils/accountFields.ts","./src/utils/__tests__/accountFields.test.ts","./e2e/app.spec.ts","./vite-env.d.ts","./vitest-env.d.ts","./vitest.setup.ts","../../../../../../../../../sdk/platform-sdk/types/env.d.ts"],"version":"5.9.3"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/ui-bundle-template-base-sfdx-project",
3
- "version": "12.4.5",
3
+ "version": "12.9.0",
4
4
  "description": "Base SFDX project template",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "publishConfig": {
@@ -0,0 +1,84 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { join, resolve, dirname } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { XMLBuilder } from 'fast-xml-parser';
6
+ import { parseNetworkDocument, NetworkXmlError } from './org-setup-xml.mjs';
7
+ import { escapeSoqlString } from './org-setup-utils.mjs';
8
+
9
+ const builder = new XMLBuilder({
10
+ ignoreAttributes: false,
11
+ commentPropName: '#comment',
12
+ format: true,
13
+ indentBy: ' ',
14
+ suppressEmptyNode: true,
15
+ });
16
+
17
+ export function preserveNetworkSenders(projectDir, targetOrg, run = execFileSync) {
18
+ const project = JSON.parse(readFileSync(join(projectDir, 'sfdx-project.json'), 'utf8'));
19
+ const files = (project.packageDirectories ?? []).flatMap(({ path }) => {
20
+ const dir = join(projectDir, path, 'main/default/networks');
21
+ if (!existsSync(dir)) return [];
22
+ return readdirSync(dir)
23
+ .filter((name) => name.endsWith('.network-meta.xml'))
24
+ .map((name) => ({ name: name.slice(0, -'.network-meta.xml'.length), path: join(dir, name) }));
25
+ });
26
+ if (!files.length) return;
27
+
28
+ const names = [...new Set(files.map(({ name }) => `'${escapeSoqlString(name)}'`))];
29
+ const response = JSON.parse(run('sf', [
30
+ 'data', 'query', '--target-org', targetOrg,
31
+ '--query', `SELECT Name, EmailSenderAddress FROM Network WHERE Name IN (${names.join(',')})`,
32
+ '--json',
33
+ ], { cwd: projectDir, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 60000 }));
34
+ if (response.status !== 0 || !Array.isArray(response.result?.records) || !response.result.done) {
35
+ throw new Error('Could not read all target Network sender addresses; deployment stopped.');
36
+ }
37
+ const senders = new Map(response.result.records.map((record) => [record.Name, record.EmailSenderAddress]));
38
+
39
+ const updates = files.map((file) => {
40
+ const original = readFileSync(file.path, 'utf8');
41
+ const document = parseNetworkDocument(original);
42
+ const network = document.Network;
43
+ let changed = false;
44
+ if (senders.has(file.name)) {
45
+ const sender = senders.get(file.name);
46
+ if (typeof sender !== 'string' || !sender.trim()) {
47
+ throw new Error(`The target Network "${file.name}" has no sender address; deployment stopped.`);
48
+ }
49
+ if (typeof network.emailSenderAddress !== 'string') {
50
+ throw new NetworkXmlError(`Expected one emailSenderAddress in ${file.name}.network-meta.xml`);
51
+ }
52
+ if (network.emailSenderAddress !== sender) {
53
+ network.emailSenderAddress = sender;
54
+ changed = true;
55
+ }
56
+ }
57
+ // Sender changes belong to the site's Administration workspace.
58
+ if ('newSenderAddress' in network) {
59
+ delete network.newSenderAddress;
60
+ changed = true;
61
+ }
62
+ return { ...file, xml: changed ? builder.build(document) : original, changed };
63
+ });
64
+
65
+ for (const file of updates) {
66
+ if (file.changed) writeFileSync(file.path, file.xml);
67
+ }
68
+ }
69
+
70
+ if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
71
+ const args = process.argv.slice(2);
72
+ if (args.length !== 2 || args[0] !== '--target-org' || !args[1].trim()) {
73
+ console.error('Usage: node scripts/network-senders.mjs --target-org <alias>');
74
+ process.exitCode = 1;
75
+ } else {
76
+ try {
77
+ preserveNetworkSenders(resolve(dirname(fileURLToPath(import.meta.url)), '..'), args[1]);
78
+ console.log('Network metadata prepared with the target org sender addresses.');
79
+ } catch (error) {
80
+ console.error(`Network metadata preparation failed: ${error.message}`);
81
+ process.exitCode = 1;
82
+ }
83
+ }
84
+ }
@@ -39,6 +39,7 @@ const parser = new XMLParser({
39
39
  ignoreAttributes: false,
40
40
  parseTagValue: false,
41
41
  parseAttributeValue: false,
42
+ commentPropName: '#comment',
42
43
  });
43
44
 
44
45
  /**
@@ -73,22 +74,26 @@ export function assertSafeProfileName(name) {
73
74
  }
74
75
 
75
76
  /**
76
- * Parse + assert this is a Network metadata document. Returns the parsed
77
- * `Network` object. Throws NetworkXmlError if the root is missing (e.g. a file
77
+ * Parse + assert this is a Network metadata document. Returns the full parsed
78
+ * document. Throws NetworkXmlError if the root is missing (e.g. a file
78
79
  * that is not actually network metadata).
79
80
  */
80
- export function parseNetwork(xml) {
81
+ export function parseNetworkDocument(xml) {
81
82
  let parsed;
82
83
  try {
83
- parsed = parser.parse(xml);
84
+ parsed = parser.parse(xml, true);
84
85
  } catch (e) {
85
86
  throw new NetworkXmlError(`network metadata is not well-formed XML: ${e.message}`);
86
87
  }
87
88
  const network = parsed?.[NETWORK_ROOT];
88
- if (network == null || typeof network !== 'object') {
89
+ if (network == null || typeof network !== 'object' || Array.isArray(network)) {
89
90
  throw new NetworkXmlError(`expected a <${NETWORK_ROOT}> root node, but none was found`);
90
91
  }
91
- return network;
92
+ return parsed;
93
+ }
94
+
95
+ export function parseNetwork(xml) {
96
+ return parseNetworkDocument(xml)[NETWORK_ROOT];
92
97
  }
93
98
 
94
99
  /** Normalize a fast-xml-parser child (absent | scalar | array) to an array. */
@@ -55,6 +55,7 @@ import {
55
55
  import { tmpdir } from 'node:os';
56
56
 
57
57
  import { validateConfig } from './org-setup-config-schema.mjs';
58
+ import { preserveNetworkSenders } from './network-senders.mjs';
58
59
  import {
59
60
  addProfileToMemberGroups,
60
61
  enableSelfRegInXml,
@@ -1149,9 +1150,14 @@ function ensureLogoutUrl(logoutUrl, siteName, targetOrg) {
1149
1150
  writeFileSync(networkXmlPath, result.xml);
1150
1151
  console.log(` Set <logoutUrl>${absoluteUrl}</logoutUrl> in ${siteName}.network-meta.xml`);
1151
1152
 
1152
- // Re-deploy ONLY the network file (mirrors enableSelfRegistration). Best-effort:
1153
- // a non-zero exit (e.g. the org's emailSenderAddress differs from the shipped
1154
- // value and can't be updated) logs loudly and continues.
1153
+ try {
1154
+ preserveNetworkSenders(ROOT, targetOrg);
1155
+ } catch (e) {
1156
+ console.error(` ERROR: cannot prepare Network metadata for "${siteName}" — ${e.message}. Skipping logout URL deployment.`);
1157
+ return;
1158
+ }
1159
+
1160
+ // Logout URL deployment is best-effort.
1155
1161
  const deployResult = spawnSync('sf', [
1156
1162
  'project', 'deploy', 'start',
1157
1163
  '--target-org', targetOrg,
@@ -1160,8 +1166,7 @@ function ensureLogoutUrl(logoutUrl, siteName, targetOrg) {
1160
1166
  if (deployResult.status !== 0) {
1161
1167
  console.error(
1162
1168
  ` ERROR: failed to deploy <logoutUrl> for "${siteName}" (sf exit ${deployResult.status ?? 1}). ` +
1163
- `If the org's Network emailSenderAddress differs from the shipped value it blocks this deploy — ` +
1164
- `set the logout URL manually in the site's Administration settings.`,
1169
+ `Set the logout URL manually in the site's Administration settings.`,
1165
1170
  );
1166
1171
  return;
1167
1172
  }
@@ -1208,6 +1213,8 @@ function enableSelfRegistration(selfRegConfig, siteName, targetOrg) {
1208
1213
  writeFileSync(networkXmlPath, result.xml);
1209
1214
  console.log(` Updated ${siteName}.network-meta.xml: selfRegistration=true, selfRegProfile=${selfRegProfile}`);
1210
1215
 
1216
+ preserveNetworkSenders(ROOT, targetOrg);
1217
+
1211
1218
  // Re-deploy only the network file
1212
1219
  const deployResult = spawnSync('sf', [
1213
1220
  'project', 'deploy', 'start',
@@ -2118,6 +2125,7 @@ async function main() {
2118
2125
  throw new StepError(`deploy blocked — ${licenseGate.reason}`);
2119
2126
  }
2120
2127
  }
2128
+ preserveNetworkSenders(ROOT, targetOrg);
2121
2129
  run('Deploy metadata', 'sf', ['project', 'deploy', 'start', '--target-org', targetOrg], {
2122
2130
  timeout: 180000,
2123
2131
  });