bc-code-intelligence-mcp 1.1.1

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 (638) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +107 -0
  3. package/dist/cache/cache-manager.d.ts +95 -0
  4. package/dist/cache/cache-manager.d.ts.map +1 -0
  5. package/dist/cache/cache-manager.js +328 -0
  6. package/dist/cache/cache-manager.js.map +1 -0
  7. package/dist/cli/bc-code-intel-cli.d.ts +9 -0
  8. package/dist/cli/bc-code-intel-cli.d.ts.map +1 -0
  9. package/dist/cli/bc-code-intel-cli.js +441 -0
  10. package/dist/cli/bc-code-intel-cli.js.map +1 -0
  11. package/dist/config/config-loader.d.ts +21 -0
  12. package/dist/config/config-loader.d.ts.map +1 -0
  13. package/dist/config/config-loader.js +402 -0
  14. package/dist/config/config-loader.js.map +1 -0
  15. package/dist/config/config-validator.d.ts +84 -0
  16. package/dist/config/config-validator.d.ts.map +1 -0
  17. package/dist/config/config-validator.js +604 -0
  18. package/dist/config/config-validator.js.map +1 -0
  19. package/dist/config/test-config-loader.d.ts +10 -0
  20. package/dist/config/test-config-loader.d.ts.map +1 -0
  21. package/dist/config/test-config-loader.js +135 -0
  22. package/dist/config/test-config-loader.js.map +1 -0
  23. package/dist/config/test-enhanced-layer-service.d.ts +7 -0
  24. package/dist/config/test-enhanced-layer-service.d.ts.map +1 -0
  25. package/dist/config/test-enhanced-layer-service.js +104 -0
  26. package/dist/config/test-enhanced-layer-service.js.map +1 -0
  27. package/dist/config/test-git-layer.d.ts +7 -0
  28. package/dist/config/test-git-layer.d.ts.map +1 -0
  29. package/dist/config/test-git-layer.js +68 -0
  30. package/dist/config/test-git-layer.js.map +1 -0
  31. package/dist/dev/hot-reload.d.ts +91 -0
  32. package/dist/dev/hot-reload.d.ts.map +1 -0
  33. package/dist/dev/hot-reload.js +358 -0
  34. package/dist/dev/hot-reload.js.map +1 -0
  35. package/dist/index.d.ts +57 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +673 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/layers/base-layer.d.ts +83 -0
  40. package/dist/layers/base-layer.d.ts.map +1 -0
  41. package/dist/layers/base-layer.js +166 -0
  42. package/dist/layers/base-layer.js.map +1 -0
  43. package/dist/layers/embedded-layer.d.ts +53 -0
  44. package/dist/layers/embedded-layer.d.ts.map +1 -0
  45. package/dist/layers/embedded-layer.js +238 -0
  46. package/dist/layers/embedded-layer.js.map +1 -0
  47. package/dist/layers/git-layer.d.ts +54 -0
  48. package/dist/layers/git-layer.d.ts.map +1 -0
  49. package/dist/layers/git-layer.js +369 -0
  50. package/dist/layers/git-layer.js.map +1 -0
  51. package/dist/layers/index.d.ts +12 -0
  52. package/dist/layers/index.d.ts.map +1 -0
  53. package/dist/layers/index.js +11 -0
  54. package/dist/layers/index.js.map +1 -0
  55. package/dist/layers/layer-service.d.ts +129 -0
  56. package/dist/layers/layer-service.d.ts.map +1 -0
  57. package/dist/layers/layer-service.js +570 -0
  58. package/dist/layers/layer-service.js.map +1 -0
  59. package/dist/layers/project-layer.d.ts +50 -0
  60. package/dist/layers/project-layer.d.ts.map +1 -0
  61. package/dist/layers/project-layer.js +256 -0
  62. package/dist/layers/project-layer.js.map +1 -0
  63. package/dist/monitoring/production-monitor.d.ts +148 -0
  64. package/dist/monitoring/production-monitor.d.ts.map +1 -0
  65. package/dist/monitoring/production-monitor.js +463 -0
  66. package/dist/monitoring/production-monitor.js.map +1 -0
  67. package/dist/performance/performance-monitor.d.ts +99 -0
  68. package/dist/performance/performance-monitor.d.ts.map +1 -0
  69. package/dist/performance/performance-monitor.js +253 -0
  70. package/dist/performance/performance-monitor.js.map +1 -0
  71. package/dist/sdk/bc-code-intel-client.d.ts +175 -0
  72. package/dist/sdk/bc-code-intel-client.d.ts.map +1 -0
  73. package/dist/sdk/bc-code-intel-client.js +380 -0
  74. package/dist/sdk/bc-code-intel-client.js.map +1 -0
  75. package/dist/search/intelligent-search.d.ts +97 -0
  76. package/dist/search/intelligent-search.d.ts.map +1 -0
  77. package/dist/search/intelligent-search.js +355 -0
  78. package/dist/search/intelligent-search.js.map +1 -0
  79. package/dist/security/access-control.d.ts +110 -0
  80. package/dist/security/access-control.d.ts.map +1 -0
  81. package/dist/security/access-control.js +353 -0
  82. package/dist/security/access-control.js.map +1 -0
  83. package/dist/services/code-analysis-service.d.ts +72 -0
  84. package/dist/services/code-analysis-service.d.ts.map +1 -0
  85. package/dist/services/code-analysis-service.js +811 -0
  86. package/dist/services/code-analysis-service.js.map +1 -0
  87. package/dist/services/knowledge-service.d.ts +91 -0
  88. package/dist/services/knowledge-service.d.ts.map +1 -0
  89. package/dist/services/knowledge-service.js +370 -0
  90. package/dist/services/knowledge-service.js.map +1 -0
  91. package/dist/services/methodology-service.d.ts +91 -0
  92. package/dist/services/methodology-service.d.ts.map +1 -0
  93. package/dist/services/methodology-service.js +408 -0
  94. package/dist/services/methodology-service.js.map +1 -0
  95. package/dist/services/workflow-service.d.ts +132 -0
  96. package/dist/services/workflow-service.d.ts.map +1 -0
  97. package/dist/services/workflow-service.js +277 -0
  98. package/dist/services/workflow-service.js.map +1 -0
  99. package/dist/setup/post-install.d.ts +12 -0
  100. package/dist/setup/post-install.d.ts.map +1 -0
  101. package/dist/setup/post-install.js +81 -0
  102. package/dist/setup/post-install.js.map +1 -0
  103. package/dist/streamlined-handlers.d.ts +51 -0
  104. package/dist/streamlined-handlers.d.ts.map +1 -0
  105. package/dist/streamlined-handlers.js +287 -0
  106. package/dist/streamlined-handlers.js.map +1 -0
  107. package/dist/streamlined-tools.d.ts +316 -0
  108. package/dist/streamlined-tools.d.ts.map +1 -0
  109. package/dist/streamlined-tools.js +189 -0
  110. package/dist/streamlined-tools.js.map +1 -0
  111. package/dist/test-enhanced-mcp-server.d.ts +7 -0
  112. package/dist/test-enhanced-mcp-server.d.ts.map +1 -0
  113. package/dist/test-enhanced-mcp-server.js +177 -0
  114. package/dist/test-enhanced-mcp-server.js.map +1 -0
  115. package/dist/types/bc-knowledge.d.ts +294 -0
  116. package/dist/types/bc-knowledge.d.ts.map +1 -0
  117. package/dist/types/bc-knowledge.js +44 -0
  118. package/dist/types/bc-knowledge.js.map +1 -0
  119. package/dist/types/config-types.d.ts +180 -0
  120. package/dist/types/config-types.d.ts.map +1 -0
  121. package/dist/types/config-types.js +104 -0
  122. package/dist/types/config-types.js.map +1 -0
  123. package/dist/types/index.d.ts +5 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/index.js +7 -0
  126. package/dist/types/index.js.map +1 -0
  127. package/dist/types/layer-types.d.ts +171 -0
  128. package/dist/types/layer-types.d.ts.map +1 -0
  129. package/dist/types/layer-types.js +27 -0
  130. package/dist/types/layer-types.js.map +1 -0
  131. package/dist/types/persona-types.d.ts +77 -0
  132. package/dist/types/persona-types.d.ts.map +1 -0
  133. package/dist/types/persona-types.js +341 -0
  134. package/dist/types/persona-types.js.map +1 -0
  135. package/dist/utils/path-utils.d.ts +5 -0
  136. package/dist/utils/path-utils.d.ts.map +1 -0
  137. package/dist/utils/path-utils.js +14 -0
  138. package/dist/utils/path-utils.js.map +1 -0
  139. package/dist/workflows/domain-workflows.d.ts +8 -0
  140. package/dist/workflows/domain-workflows.d.ts.map +1 -0
  141. package/dist/workflows/domain-workflows.js +360 -0
  142. package/dist/workflows/domain-workflows.js.map +1 -0
  143. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +24 -0
  144. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +24 -0
  145. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +30 -0
  146. package/embedded-knowledge/AGENTS.md +69 -0
  147. package/embedded-knowledge/CONTRIBUTING.md +58 -0
  148. package/embedded-knowledge/LICENSE +21 -0
  149. package/embedded-knowledge/README.md +15 -0
  150. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +90 -0
  151. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +113 -0
  152. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +101 -0
  153. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +87 -0
  154. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +155 -0
  155. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +138 -0
  156. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +79 -0
  157. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +280 -0
  158. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +200 -0
  159. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +565 -0
  160. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +665 -0
  161. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +325 -0
  162. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +696 -0
  163. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +320 -0
  164. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +102 -0
  165. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +433 -0
  166. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +66 -0
  167. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +115 -0
  168. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +295 -0
  169. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +86 -0
  170. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +96 -0
  171. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +70 -0
  172. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +84 -0
  173. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +93 -0
  174. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +73 -0
  175. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +78 -0
  176. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +79 -0
  177. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +87 -0
  178. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +209 -0
  179. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +246 -0
  180. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +107 -0
  181. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +105 -0
  182. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +186 -0
  183. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +60 -0
  184. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +139 -0
  185. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +190 -0
  186. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +516 -0
  187. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +298 -0
  188. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +324 -0
  189. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +344 -0
  190. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +137 -0
  191. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +340 -0
  192. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +810 -0
  193. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +86 -0
  194. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +110 -0
  195. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +758 -0
  196. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +665 -0
  197. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +316 -0
  198. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +223 -0
  199. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +149 -0
  200. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +412 -0
  201. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +211 -0
  202. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +155 -0
  203. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +475 -0
  204. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +238 -0
  205. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +97 -0
  206. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +666 -0
  207. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +319 -0
  208. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +236 -0
  209. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +59 -0
  210. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +67 -0
  211. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +70 -0
  212. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +90 -0
  213. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +87 -0
  214. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +70 -0
  215. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +74 -0
  216. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +81 -0
  217. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +56 -0
  218. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +66 -0
  219. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +79 -0
  220. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +78 -0
  221. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +83 -0
  222. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +76 -0
  223. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +104 -0
  224. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +145 -0
  225. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +104 -0
  226. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +114 -0
  227. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +356 -0
  228. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +256 -0
  229. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +101 -0
  230. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +108 -0
  231. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +80 -0
  232. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +98 -0
  233. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +123 -0
  234. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +96 -0
  235. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +115 -0
  236. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +115 -0
  237. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +114 -0
  238. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +395 -0
  239. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +479 -0
  240. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +548 -0
  241. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +287 -0
  242. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +434 -0
  243. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +508 -0
  244. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +615 -0
  245. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +144 -0
  246. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +96 -0
  247. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +124 -0
  248. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +84 -0
  249. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +75 -0
  250. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +96 -0
  251. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +385 -0
  252. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +72 -0
  253. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +48 -0
  254. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +49 -0
  255. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +67 -0
  256. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +119 -0
  257. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +123 -0
  258. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +64 -0
  259. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +60 -0
  260. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +83 -0
  261. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +716 -0
  262. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +101 -0
  263. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +91 -0
  264. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +79 -0
  265. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +79 -0
  266. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +89 -0
  267. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +76 -0
  268. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +76 -0
  269. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +76 -0
  270. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +81 -0
  271. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +76 -0
  272. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +75 -0
  273. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +76 -0
  274. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +76 -0
  275. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +76 -0
  276. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +96 -0
  277. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +76 -0
  278. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +86 -0
  279. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +90 -0
  280. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +82 -0
  281. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +78 -0
  282. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +76 -0
  283. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +78 -0
  284. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +100 -0
  285. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +115 -0
  286. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +124 -0
  287. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +110 -0
  288. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +438 -0
  289. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +255 -0
  290. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +209 -0
  291. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +218 -0
  292. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +218 -0
  293. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +280 -0
  294. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +188 -0
  295. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +245 -0
  296. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +244 -0
  297. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +278 -0
  298. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +484 -0
  299. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +64 -0
  300. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +107 -0
  301. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +280 -0
  302. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +75 -0
  303. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +67 -0
  304. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +76 -0
  305. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +98 -0
  306. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +128 -0
  307. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +75 -0
  308. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +95 -0
  309. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +141 -0
  310. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +91 -0
  311. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +118 -0
  312. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +111 -0
  313. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +113 -0
  314. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +127 -0
  315. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +141 -0
  316. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +66 -0
  317. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +96 -0
  318. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +161 -0
  319. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +177 -0
  320. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +239 -0
  321. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +346 -0
  322. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +298 -0
  323. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +677 -0
  324. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +117 -0
  325. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +75 -0
  326. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +169 -0
  327. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +399 -0
  328. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +356 -0
  329. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +889 -0
  330. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +84 -0
  331. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +127 -0
  332. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +89 -0
  333. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +516 -0
  334. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +61 -0
  335. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +427 -0
  336. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +122 -0
  337. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +96 -0
  338. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +101 -0
  339. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +149 -0
  340. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +107 -0
  341. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +95 -0
  342. package/embedded-knowledge/domains/seth-security/api-permission-model.md +115 -0
  343. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +78 -0
  344. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +373 -0
  345. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +308 -0
  346. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +79 -0
  347. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +78 -0
  348. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +81 -0
  349. package/embedded-knowledge/indexes/bc-version-matrix.json +188 -0
  350. package/embedded-knowledge/indexes/domain-catalog.json +106 -0
  351. package/embedded-knowledge/indexes/tags/abbreviations.json +1 -0
  352. package/embedded-knowledge/indexes/tags/abstraction.json +1 -0
  353. package/embedded-knowledge/indexes/tags/access-control.json +1 -0
  354. package/embedded-knowledge/indexes/tags/accessibility.json +1 -0
  355. package/embedded-knowledge/indexes/tags/actions.json +1 -0
  356. package/embedded-knowledge/indexes/tags/advanced-patterns.json +1 -0
  357. package/embedded-knowledge/indexes/tags/advanced.json +1 -0
  358. package/embedded-knowledge/indexes/tags/al-extension.json +1 -0
  359. package/embedded-knowledge/indexes/tags/al-generics.json +1 -0
  360. package/embedded-knowledge/indexes/tags/al-objects.json +1 -0
  361. package/embedded-knowledge/indexes/tags/al-syntax.json +1 -0
  362. package/embedded-knowledge/indexes/tags/algorithm-structure.json +1 -0
  363. package/embedded-knowledge/indexes/tags/alternatives.json +1 -0
  364. package/embedded-knowledge/indexes/tags/analytics.json +1 -0
  365. package/embedded-knowledge/indexes/tags/api-delegates.json +1 -0
  366. package/embedded-knowledge/indexes/tags/api-design.json +1 -0
  367. package/embedded-knowledge/indexes/tags/api-documentation.json +1 -0
  368. package/embedded-knowledge/indexes/tags/api-endpoints.json +1 -0
  369. package/embedded-knowledge/indexes/tags/api-extensibility.json +1 -0
  370. package/embedded-knowledge/indexes/tags/api-fieldsets.json +1 -0
  371. package/embedded-knowledge/indexes/tags/api-integration.json +1 -0
  372. package/embedded-knowledge/indexes/tags/api-interfaces.json +1 -0
  373. package/embedded-knowledge/indexes/tags/api-optimization.json +1 -0
  374. package/embedded-knowledge/indexes/tags/api-pages.json +1 -0
  375. package/embedded-knowledge/indexes/tags/api-patterns.json +1 -0
  376. package/embedded-knowledge/indexes/tags/api-permissions.json +1 -0
  377. package/embedded-knowledge/indexes/tags/api-responses.json +1 -0
  378. package/embedded-knowledge/indexes/tags/api-simplification.json +1 -0
  379. package/embedded-knowledge/indexes/tags/api.json +1 -0
  380. package/embedded-knowledge/indexes/tags/architecture.json +1 -0
  381. package/embedded-knowledge/indexes/tags/async-patterns.json +1 -0
  382. package/embedded-knowledge/indexes/tags/async-processing.json +1 -0
  383. package/embedded-knowledge/indexes/tags/automatic-registration.json +1 -0
  384. package/embedded-knowledge/indexes/tags/batch-operations.json +1 -0
  385. package/embedded-knowledge/indexes/tags/bc24-migration.json +1 -0
  386. package/embedded-knowledge/indexes/tags/begin-blocks.json +1 -0
  387. package/embedded-knowledge/indexes/tags/begin-end.json +1 -0
  388. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +1 -0
  389. package/embedded-knowledge/indexes/tags/best-practices.json +1 -0
  390. package/embedded-knowledge/indexes/tags/binding.json +1 -0
  391. package/embedded-knowledge/indexes/tags/block-structure.json +1 -0
  392. package/embedded-knowledge/indexes/tags/blocks.json +1 -0
  393. package/embedded-knowledge/indexes/tags/boolean-expressions.json +1 -0
  394. package/embedded-knowledge/indexes/tags/branching.json +1 -0
  395. package/embedded-knowledge/indexes/tags/breaking-changes.json +1 -0
  396. package/embedded-knowledge/indexes/tags/breakpoints.json +1 -0
  397. package/embedded-knowledge/indexes/tags/business-foundation.json +1 -0
  398. package/embedded-knowledge/indexes/tags/business-infrastructure.json +1 -0
  399. package/embedded-knowledge/indexes/tags/business-process.json +1 -0
  400. package/embedded-knowledge/indexes/tags/business-rules.json +1 -0
  401. package/embedded-knowledge/indexes/tags/caching.json +1 -0
  402. package/embedded-knowledge/indexes/tags/case-statements.json +1 -0
  403. package/embedded-knowledge/indexes/tags/case.json +1 -0
  404. package/embedded-knowledge/indexes/tags/code-analysis.json +1 -0
  405. package/embedded-knowledge/indexes/tags/code-clarity.json +1 -0
  406. package/embedded-knowledge/indexes/tags/code-comprehension.json +1 -0
  407. package/embedded-knowledge/indexes/tags/code-conversion.json +1 -0
  408. package/embedded-knowledge/indexes/tags/code-formatting.json +1 -0
  409. package/embedded-knowledge/indexes/tags/code-organization.json +1 -0
  410. package/embedded-knowledge/indexes/tags/code-patterns.json +1 -0
  411. package/embedded-knowledge/indexes/tags/code-quality.json +1 -0
  412. package/embedded-knowledge/indexes/tags/code-reuse.json +1 -0
  413. package/embedded-knowledge/indexes/tags/code-simplification.json +1 -0
  414. package/embedded-knowledge/indexes/tags/code-standards.json +1 -0
  415. package/embedded-knowledge/indexes/tags/code-structure.json +1 -0
  416. package/embedded-knowledge/indexes/tags/code-style.json +1 -0
  417. package/embedded-knowledge/indexes/tags/codeunit-design.json +1 -0
  418. package/embedded-knowledge/indexes/tags/command-queue.json +1 -0
  419. package/embedded-knowledge/indexes/tags/comments.json +1 -0
  420. package/embedded-knowledge/indexes/tags/compile-time-validation.json +1 -0
  421. package/embedded-knowledge/indexes/tags/complex-facade.json +1 -0
  422. package/embedded-knowledge/indexes/tags/complexity-hiding.json +1 -0
  423. package/embedded-knowledge/indexes/tags/complexity-management.json +1 -0
  424. package/embedded-knowledge/indexes/tags/compound-statements.json +1 -0
  425. package/embedded-knowledge/indexes/tags/concurrency.json +1 -0
  426. package/embedded-knowledge/indexes/tags/conditional-logic.json +1 -0
  427. package/embedded-knowledge/indexes/tags/conditional.json +1 -0
  428. package/embedded-knowledge/indexes/tags/conflict-resolution.json +1 -0
  429. package/embedded-knowledge/indexes/tags/consistency.json +1 -0
  430. package/embedded-knowledge/indexes/tags/contract-design.json +1 -0
  431. package/embedded-knowledge/indexes/tags/control-flow.json +1 -0
  432. package/embedded-knowledge/indexes/tags/conversion-guide.json +1 -0
  433. package/embedded-knowledge/indexes/tags/correlation.json +1 -0
  434. package/embedded-knowledge/indexes/tags/custom-messages.json +1 -0
  435. package/embedded-knowledge/indexes/tags/data-access.json +1 -0
  436. package/embedded-knowledge/indexes/tags/data-exposure.json +1 -0
  437. package/embedded-knowledge/indexes/tags/data-integrity.json +1 -0
  438. package/embedded-knowledge/indexes/tags/data-loading.json +1 -0
  439. package/embedded-knowledge/indexes/tags/data-manipulation.json +1 -0
  440. package/embedded-knowledge/indexes/tags/data-modeling.json +1 -0
  441. package/embedded-knowledge/indexes/tags/data-patterns.json +1 -0
  442. package/embedded-knowledge/indexes/tags/data-protection.json +1 -0
  443. package/embedded-knowledge/indexes/tags/data-validation.json +1 -0
  444. package/embedded-knowledge/indexes/tags/database.json +1 -0
  445. package/embedded-knowledge/indexes/tags/debugging.json +1 -0
  446. package/embedded-knowledge/indexes/tags/decision-making.json +1 -0
  447. package/embedded-knowledge/indexes/tags/declaration.json +1 -0
  448. package/embedded-knowledge/indexes/tags/default-messages.json +1 -0
  449. package/embedded-knowledge/indexes/tags/defensive-programming.json +1 -0
  450. package/embedded-knowledge/indexes/tags/deleteall.json +1 -0
  451. package/embedded-knowledge/indexes/tags/dependencies.json +1 -0
  452. package/embedded-knowledge/indexes/tags/deployment.json +1 -0
  453. package/embedded-knowledge/indexes/tags/developer-productivity.json +1 -0
  454. package/embedded-knowledge/indexes/tags/development-workflow.json +1 -0
  455. package/embedded-knowledge/indexes/tags/diagnostics.json +1 -0
  456. package/embedded-knowledge/indexes/tags/dimensions.json +1 -0
  457. package/embedded-knowledge/indexes/tags/documentation.json +1 -0
  458. package/embedded-knowledge/indexes/tags/early-exit.json +1 -0
  459. package/embedded-knowledge/indexes/tags/else-clauses.json +1 -0
  460. package/embedded-knowledge/indexes/tags/end-statements.json +1 -0
  461. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +1 -0
  462. package/embedded-knowledge/indexes/tags/entity-relationships.json +1 -0
  463. package/embedded-knowledge/indexes/tags/error-handling.json +1 -0
  464. package/embedded-knowledge/indexes/tags/error-messages.json +1 -0
  465. package/embedded-knowledge/indexes/tags/error-prevention.json +1 -0
  466. package/embedded-knowledge/indexes/tags/error-text.json +1 -0
  467. package/embedded-knowledge/indexes/tags/etag.json +1 -0
  468. package/embedded-knowledge/indexes/tags/event-bridge.json +1 -0
  469. package/embedded-knowledge/indexes/tags/event-payload.json +1 -0
  470. package/embedded-knowledge/indexes/tags/event-routing.json +1 -0
  471. package/embedded-knowledge/indexes/tags/events.json +1 -0
  472. package/embedded-knowledge/indexes/tags/execution-flow.json +1 -0
  473. package/embedded-knowledge/indexes/tags/expressions.json +1 -0
  474. package/embedded-knowledge/indexes/tags/extensibility.json +1 -0
  475. package/embedded-knowledge/indexes/tags/extensions.json +1 -0
  476. package/embedded-knowledge/indexes/tags/facade-composition.json +1 -0
  477. package/embedded-knowledge/indexes/tags/facade-pattern.json +1 -0
  478. package/embedded-knowledge/indexes/tags/field-control.json +1 -0
  479. package/embedded-knowledge/indexes/tags/field-exclusion.json +1 -0
  480. package/embedded-knowledge/indexes/tags/field-registration.json +1 -0
  481. package/embedded-knowledge/indexes/tags/field-state.json +1 -0
  482. package/embedded-knowledge/indexes/tags/field-validation.json +1 -0
  483. package/embedded-knowledge/indexes/tags/fielderror.json +1 -0
  484. package/embedded-knowledge/indexes/tags/fields.json +1 -0
  485. package/embedded-knowledge/indexes/tags/filtering.json +1 -0
  486. package/embedded-knowledge/indexes/tags/filters.json +1 -0
  487. package/embedded-knowledge/indexes/tags/formatting.json +1 -0
  488. package/embedded-knowledge/indexes/tags/generic-methods.json +1 -0
  489. package/embedded-knowledge/indexes/tags/http-status.json +1 -0
  490. package/embedded-knowledge/indexes/tags/if-statements.json +1 -0
  491. package/embedded-knowledge/indexes/tags/implementation.json +1 -0
  492. package/embedded-knowledge/indexes/tags/indentation.json +1 -0
  493. package/embedded-knowledge/indexes/tags/index-summary.json +277 -0
  494. package/embedded-knowledge/indexes/tags/indexing.json +1 -0
  495. package/embedded-knowledge/indexes/tags/inheritance.json +1 -0
  496. package/embedded-knowledge/indexes/tags/integration.json +1 -0
  497. package/embedded-knowledge/indexes/tags/integrity-checking.json +1 -0
  498. package/embedded-knowledge/indexes/tags/intellisense.json +1 -0
  499. package/embedded-knowledge/indexes/tags/interface-design.json +1 -0
  500. package/embedded-knowledge/indexes/tags/interface-segregation.json +1 -0
  501. package/embedded-knowledge/indexes/tags/isolation.json +1 -0
  502. package/embedded-knowledge/indexes/tags/job-processing.json +1 -0
  503. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +1 -0
  504. package/embedded-knowledge/indexes/tags/keywords.json +1 -0
  505. package/embedded-knowledge/indexes/tags/legacy-modernization.json +1 -0
  506. package/embedded-knowledge/indexes/tags/line-breaks.json +1 -0
  507. package/embedded-knowledge/indexes/tags/line-organization.json +1 -0
  508. package/embedded-knowledge/indexes/tags/line-positioning.json +1 -0
  509. package/embedded-knowledge/indexes/tags/localization.json +1 -0
  510. package/embedded-knowledge/indexes/tags/logging.json +1 -0
  511. package/embedded-knowledge/indexes/tags/loose-coupling.json +1 -0
  512. package/embedded-knowledge/indexes/tags/maintainability.json +1 -0
  513. package/embedded-knowledge/indexes/tags/memory-management.json +1 -0
  514. package/embedded-knowledge/indexes/tags/memory-optimization.json +1 -0
  515. package/embedded-knowledge/indexes/tags/memory.json +1 -0
  516. package/embedded-knowledge/indexes/tags/message-design.json +1 -0
  517. package/embedded-knowledge/indexes/tags/message-formatting.json +1 -0
  518. package/embedded-knowledge/indexes/tags/message-patterns.json +1 -0
  519. package/embedded-knowledge/indexes/tags/metadata-driven.json +1 -0
  520. package/embedded-knowledge/indexes/tags/method-comparison.json +1 -0
  521. package/embedded-knowledge/indexes/tags/module-architecture.json +1 -0
  522. package/embedded-knowledge/indexes/tags/module-validation.json +1 -0
  523. package/embedded-knowledge/indexes/tags/monitoring.json +1 -0
  524. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +1 -0
  525. package/embedded-knowledge/indexes/tags/multi-tenancy.json +1 -0
  526. package/embedded-knowledge/indexes/tags/multiple-values.json +1 -0
  527. package/embedded-knowledge/indexes/tags/naming-conventions.json +1 -0
  528. package/embedded-knowledge/indexes/tags/naming.json +1 -0
  529. package/embedded-knowledge/indexes/tags/navigation.json +1 -0
  530. package/embedded-knowledge/indexes/tags/nested-statements.json +1 -0
  531. package/embedded-knowledge/indexes/tags/no-series-conversion.json +1 -0
  532. package/embedded-knowledge/indexes/tags/no-series-validation.json +1 -0
  533. package/embedded-knowledge/indexes/tags/no-series.json +1 -0
  534. package/embedded-knowledge/indexes/tags/number-generation.json +1 -0
  535. package/embedded-knowledge/indexes/tags/object-documentation.json +1 -0
  536. package/embedded-knowledge/indexes/tags/odata.json +1 -0
  537. package/embedded-knowledge/indexes/tags/ondelete.json +1 -0
  538. package/embedded-knowledge/indexes/tags/onvalidate.json +1 -0
  539. package/embedded-knowledge/indexes/tags/operation-delegation.json +1 -0
  540. package/embedded-knowledge/indexes/tags/operation-safety.json +1 -0
  541. package/embedded-knowledge/indexes/tags/operators.json +1 -0
  542. package/embedded-knowledge/indexes/tags/optimization.json +1 -0
  543. package/embedded-knowledge/indexes/tags/order.json +1 -0
  544. package/embedded-knowledge/indexes/tags/organization.json +1 -0
  545. package/embedded-knowledge/indexes/tags/pages.json +1 -0
  546. package/embedded-knowledge/indexes/tags/parameters.json +1 -0
  547. package/embedded-knowledge/indexes/tags/patterns.json +1 -0
  548. package/embedded-knowledge/indexes/tags/performance-optimization.json +1 -0
  549. package/embedded-knowledge/indexes/tags/performance.json +1 -0
  550. package/embedded-knowledge/indexes/tags/placement.json +1 -0
  551. package/embedded-knowledge/indexes/tags/posting-codeunits.json +1 -0
  552. package/embedded-knowledge/indexes/tags/posting.json +1 -0
  553. package/embedded-knowledge/indexes/tags/preconditions.json +1 -0
  554. package/embedded-knowledge/indexes/tags/primary-key.json +1 -0
  555. package/embedded-knowledge/indexes/tags/privacy.json +1 -0
  556. package/embedded-knowledge/indexes/tags/process-automation.json +1 -0
  557. package/embedded-knowledge/indexes/tags/production.json +1 -0
  558. package/embedded-knowledge/indexes/tags/productivity.json +1 -0
  559. package/embedded-knowledge/indexes/tags/query-performance.json +1 -0
  560. package/embedded-knowledge/indexes/tags/queue-management.json +1 -0
  561. package/embedded-knowledge/indexes/tags/ranges.json +1 -0
  562. package/embedded-knowledge/indexes/tags/readability.json +1 -0
  563. package/embedded-knowledge/indexes/tags/record-access.json +1 -0
  564. package/embedded-knowledge/indexes/tags/record-methods.json +1 -0
  565. package/embedded-knowledge/indexes/tags/refactoring.json +1 -0
  566. package/embedded-knowledge/indexes/tags/reference.json +1 -0
  567. package/embedded-knowledge/indexes/tags/repeat-loops.json +1 -0
  568. package/embedded-knowledge/indexes/tags/repeat-statement.json +1 -0
  569. package/embedded-knowledge/indexes/tags/runtime-errors.json +1 -0
  570. package/embedded-knowledge/indexes/tags/runtime.json +1 -0
  571. package/embedded-knowledge/indexes/tags/safeguards.json +1 -0
  572. package/embedded-knowledge/indexes/tags/security.json +1 -0
  573. package/embedded-knowledge/indexes/tags/sequence-management.json +1 -0
  574. package/embedded-knowledge/indexes/tags/serialization.json +1 -0
  575. package/embedded-knowledge/indexes/tags/session-logmessage.json +1 -0
  576. package/embedded-knowledge/indexes/tags/session.json +1 -0
  577. package/embedded-knowledge/indexes/tags/setloadfields.json +1 -0
  578. package/embedded-knowledge/indexes/tags/shortcuts.json +1 -0
  579. package/embedded-knowledge/indexes/tags/sift.json +1 -0
  580. package/embedded-knowledge/indexes/tags/singleinstance.json +1 -0
  581. package/embedded-knowledge/indexes/tags/spacing.json +1 -0
  582. package/embedded-knowledge/indexes/tags/sql-translation.json +1 -0
  583. package/embedded-knowledge/indexes/tags/standards.json +1 -0
  584. package/embedded-knowledge/indexes/tags/statements.json +1 -0
  585. package/embedded-knowledge/indexes/tags/streaming.json +1 -0
  586. package/embedded-knowledge/indexes/tags/strong-typing.json +1 -0
  587. package/embedded-knowledge/indexes/tags/structural-patterns.json +1 -0
  588. package/embedded-knowledge/indexes/tags/structure.json +1 -0
  589. package/embedded-knowledge/indexes/tags/subscribers.json +1 -0
  590. package/embedded-knowledge/indexes/tags/switch.json +1 -0
  591. package/embedded-knowledge/indexes/tags/symbol-search.json +1 -0
  592. package/embedded-knowledge/indexes/tags/syntax.json +1 -0
  593. package/embedded-knowledge/indexes/tags/systemid.json +1 -0
  594. package/embedded-knowledge/indexes/tags/table-configuration.json +1 -0
  595. package/embedded-knowledge/indexes/tags/table-events.json +1 -0
  596. package/embedded-knowledge/indexes/tags/table-keys.json +1 -0
  597. package/embedded-knowledge/indexes/tags/table-safety.json +1 -0
  598. package/embedded-knowledge/indexes/tags/task-scheduler.json +1 -0
  599. package/embedded-knowledge/indexes/tags/telemetry.json +1 -0
  600. package/embedded-knowledge/indexes/tags/template-method.json +1 -0
  601. package/embedded-knowledge/indexes/tags/temporary-tables.json +1 -0
  602. package/embedded-knowledge/indexes/tags/testfield.json +1 -0
  603. package/embedded-knowledge/indexes/tags/tradeoffs.json +1 -0
  604. package/embedded-knowledge/indexes/tags/triggers.json +1 -0
  605. package/embedded-knowledge/indexes/tags/troubleshooting.json +1 -0
  606. package/embedded-knowledge/indexes/tags/type-safety.json +1 -0
  607. package/embedded-knowledge/indexes/tags/url-structure.json +1 -0
  608. package/embedded-knowledge/indexes/tags/user-experience.json +1 -0
  609. package/embedded-knowledge/indexes/tags/user-feedback.json +1 -0
  610. package/embedded-knowledge/indexes/tags/user-interface.json +1 -0
  611. package/embedded-knowledge/indexes/tags/validation-feedback.json +1 -0
  612. package/embedded-knowledge/indexes/tags/validation.json +1 -0
  613. package/embedded-knowledge/indexes/tags/variables.json +1 -0
  614. package/embedded-knowledge/indexes/tags/verbosity.json +1 -0
  615. package/embedded-knowledge/indexes/tags/vs-code.json +1 -0
  616. package/embedded-knowledge/indexes/tags/web-services.json +1 -0
  617. package/embedded-knowledge/indexes/tags/workflow-management.json +1 -0
  618. package/embedded-knowledge/indexes/tags/workflow-optimization.json +1 -0
  619. package/embedded-knowledge/indexes/tags/workflow-templates.json +1 -0
  620. package/embedded-knowledge/indexes/tags/workspace.json +1 -0
  621. package/embedded-knowledge/indexes/tags/xml-documentation.json +1 -0
  622. package/embedded-knowledge/indexes/topic-relationships.json +128 -0
  623. package/embedded-knowledge/methodologies/index.json +81 -0
  624. package/embedded-knowledge/methodologies/phases/analysis-full.md +208 -0
  625. package/embedded-knowledge/methodologies/phases/analysis-quick.md +44 -0
  626. package/embedded-knowledge/methodologies/phases/analysis.md +182 -0
  627. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +174 -0
  628. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +31 -0
  629. package/embedded-knowledge/methodologies/phases/execution-validation.md +174 -0
  630. package/embedded-knowledge/methodologies/phases/performance-full.md +211 -0
  631. package/embedded-knowledge/methodologies/phases/performance-quick.md +32 -0
  632. package/embedded-knowledge/methodologies/phases/performance.md +211 -0
  633. package/embedded-knowledge/methodologies/phases/verification-full.md +162 -0
  634. package/embedded-knowledge/methodologies/phases/verification-quick.md +48 -0
  635. package/embedded-knowledge/methodologies/phases/verification.md +146 -0
  636. package/embedded-knowledge/methodologies/workflow-enforcement.md +142 -0
  637. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +99 -0
  638. package/package.json +74 -0
@@ -0,0 +1,111 @@
1
+ ---
2
+ title: "DeleteAll Trigger Execution"
3
+ domain: "sam-coder"
4
+ difficulty: "advanced"
5
+ bc_versions: "14+"
6
+ tags: ["deleteall", "triggers", "ondelete", "execution-flow"]
7
+ prerequisites: ["deleteall-method-usage", "table-triggers", "transaction-management"]
8
+ samples: "samples/deleteall-triggers.md"
9
+ ---
10
+ # DeleteAll Trigger Execution
11
+
12
+ ## Overview
13
+
14
+ DeleteAll method execution in BC follows a specific trigger execution pattern that ensures business logic consistency while processing bulk deletions. Understanding this execution flow is crucial for designing proper OnDelete triggers and predicting system behavior during bulk operations.
15
+
16
+ **Core Behavior**: DeleteAll executes OnDelete triggers for every individual record, maintaining complete business logic enforcement at the cost of performance.
17
+
18
+ **Execution Pattern**: Sequential processing of each record with full trigger execution, validation, and related table operations.
19
+
20
+ ## Trigger Execution Flow
21
+
22
+ ### Individual Record Processing
23
+ DeleteAll processes records sequentially, executing the complete OnDelete trigger chain for each record. This ensures business logic consistency but creates performance overhead proportional to record count and trigger complexity.
24
+
25
+ ### Trigger Execution Sequence
26
+ 1. **Record Selection**: DeleteAll identifies records matching filter criteria
27
+ 2. **OnDelete Trigger Execution**: Full trigger logic executes for each record
28
+ 3. **Validation Processing**: All validation logic and business rules execute
29
+ 4. **Related Table Operations**: Cascade deletes and related table updates occur
30
+ 5. **Transaction Management**: Individual record operations within transaction boundaries
31
+
32
+ ### Business Logic Preservation
33
+ OnDelete triggers execute with full access to record context, related data, and system state. This enables complex business logic including audit logging, cascade operations, and custom validation rules.
34
+
35
+ ## Performance Implications
36
+
37
+ ### Execution Overhead Sources
38
+ - Individual record processing prevents batch optimization
39
+ - OnDelete trigger execution adds computational overhead per record
40
+ - Related table operations multiply database interactions
41
+ - Validation logic extends processing time per record
42
+ - Transaction management creates additional resource utilization
43
+
44
+ ### Scalability Characteristics
45
+ - Linear performance degradation with record count increase
46
+ - Multiplicative impact from complex OnDelete trigger logic
47
+ - Network round-trip multiplication with related table operations
48
+ - Memory usage accumulation with trigger execution complexity
49
+
50
+ ## Trigger Design Considerations
51
+
52
+ ### Performance-Conscious Trigger Design
53
+ - Minimize database operations within OnDelete triggers
54
+ - Use efficient queries and avoid complex calculations
55
+ - Implement conditional logic to skip unnecessary processing
56
+ - Consider batch operations for related table updates where possible
57
+
58
+ ### Business Logic Optimization
59
+ - Separate essential validation from optional logging operations
60
+ - Use TryFunction patterns for non-critical operations that might fail
61
+ - Implement proper error handling to prevent cascade failures
62
+ - Design triggers to be testable and maintainable
63
+
64
+ ### Related Table Management
65
+ - Design efficient cascade delete patterns
66
+ - Minimize related table lookups and updates
67
+ - Use appropriate transaction boundaries for related operations
68
+ - Consider using temporary tables for complex related data processing
69
+
70
+ ## Common Implementation Patterns
71
+
72
+ ### Audit Trail Implementation
73
+ OnDelete triggers commonly implement audit trail logging by capturing deleted record information before removal. Design efficient logging procedures that minimize performance impact.
74
+
75
+ ### Cascade Delete Operations
76
+ Related table cleanup through OnDelete triggers ensures referential integrity. Implement cascade patterns that balance completeness with performance requirements.
77
+
78
+ ### Validation and Business Rules
79
+ OnDelete triggers enforce business rules during deletion operations. Design validation logic that fails fast and provides meaningful error messages.
80
+
81
+ ## Best Practices
82
+
83
+ ### Trigger Development
84
+ - Keep OnDelete triggers focused on essential business logic
85
+ - Avoid complex calculations or external system calls in triggers
86
+ - Implement proper error handling and recovery mechanisms
87
+ - Design triggers to be testable in isolation
88
+
89
+ ### Performance Management
90
+ - Profile trigger execution under realistic data volumes
91
+ - Monitor system resource utilization during DeleteAll operations
92
+ - Implement appropriate timeout and cancellation mechanisms
93
+ - Consider alternative approaches for performance-critical scenarios
94
+
95
+ ### Testing and Validation
96
+ - Test OnDelete triggers with various record states and conditions
97
+ - Validate trigger behavior under high-volume deletion scenarios
98
+ - Verify proper error handling and rollback behavior
99
+ - Test concurrent operation impact on trigger execution
100
+
101
+ ## Anti-Patterns
102
+
103
+ ### Performance-Blind Trigger Design
104
+ **Problematic Pattern**: Implementing complex OnDelete triggers without considering DeleteAll performance impact. Complex trigger logic compounds performance overhead and can make bulk deletions prohibitively slow.
105
+
106
+ ### Inadequate Error Handling
107
+ **Risk Pattern**: OnDelete triggers that fail without proper error handling can leave DeleteAll operations in inconsistent states. Implement comprehensive error handling and rollback mechanisms.
108
+
109
+ ### External System Dependencies
110
+ **Dangerous Pattern**: OnDelete triggers that depend on external systems create reliability risks. External system failures can block all deletion operations and create operational problems.
111
+
@@ -0,0 +1,113 @@
1
+ ---
2
+ title: "Event Bridge Pattern in AL"
3
+ domain: "sam-coder"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["event-bridge", "event-routing", "message-patterns", "loose-coupling"]
7
+ prerequisites: ["event-basics", "publisher-subscriber", "interface-implementation"]
8
+ samples: "samples/event-bridge-pattern.md"
9
+ related_topics: ["event-payload-design-patterns", "command-queue-pattern-al"]
10
+ ---
11
+
12
+ # Event Bridge Pattern in AL
13
+
14
+ ## Overview
15
+
16
+ The Event Bridge Pattern provides a centralized mechanism for routing events between different modules and systems while maintaining loose coupling. This pattern enables complex event-driven architectures where events can be transformed, filtered, and routed based on dynamic criteria.
17
+
18
+ **Key Benefit**: Enables flexible event routing and transformation without direct dependencies between event producers and consumers.
19
+
20
+ ## Core Bridge Architecture
21
+
22
+ ### Central Event Hub
23
+ Implement a central event hub that receives events from multiple sources and routes them to appropriate handlers based on routing rules and event characteristics.
24
+
25
+ ### Event Transformation
26
+ Design transformation capabilities that can modify event payloads, add metadata, or convert between different event formats during routing.
27
+
28
+ ### Dynamic Routing Rules
29
+ Implement configurable routing rules that determine which handlers receive specific events based on event type, content, or source characteristics.
30
+
31
+ ## Implementation Patterns
32
+
33
+ ### Bridge Interface Design
34
+ Define clear interfaces for event producers, the bridge itself, and event consumers to ensure consistent interaction patterns.
35
+
36
+ ### Event Registration System
37
+ Implement registration mechanisms where handlers can subscribe to specific event types or patterns through the bridge.
38
+
39
+ ### Asynchronous Processing
40
+ Design asynchronous event processing capabilities to prevent bridge operations from blocking event producers.
41
+
42
+ ## Advanced Bridge Features
43
+
44
+ ### Event Filtering
45
+ Implement sophisticated filtering capabilities that can route events based on complex criteria including payload content and metadata.
46
+
47
+ ### Multi-Protocol Support
48
+ Design bridges that can handle events from different sources (AL events, web hooks, message queues) and route them uniformly.
49
+
50
+ ### Error Handling and Retry
51
+ Implement robust error handling with retry mechanisms for failed event delivery and transformation operations.
52
+
53
+ ## Performance Optimization
54
+
55
+ ### Routing Efficiency
56
+ Optimize event routing algorithms to minimize latency and processing overhead for high-frequency event scenarios.
57
+
58
+ ### Buffer Management
59
+ Implement efficient buffering strategies for handling event bursts and managing memory usage during peak loads.
60
+
61
+ ### Parallel Processing
62
+ Design parallel processing capabilities for independent event streams to maximize throughput and responsiveness.
63
+
64
+ ## Bridge Configuration
65
+
66
+ ### Rule-Based Routing
67
+ - Configure routing rules through setup tables or configuration files
68
+ - Support dynamic rule updates without system restarts
69
+ - Implement rule validation and testing capabilities
70
+ - Provide clear documentation for routing rule syntax
71
+
72
+ ### Handler Management
73
+ - Enable dynamic handler registration and deregistration
74
+ - Support handler priority and ordering specifications
75
+ - Implement handler health monitoring and automatic failover
76
+ - Provide handler performance metrics and diagnostics
77
+
78
+ ## Integration Strategies
79
+
80
+ ### System Boundaries
81
+ Design bridge patterns that work effectively across system boundaries, supporting integration with external systems and services.
82
+
83
+ ### Protocol Translation
84
+ Implement protocol translation capabilities that enable events to cross different communication protocols and message formats.
85
+
86
+ ### State Management
87
+ Handle stateful event processing scenarios where the bridge needs to maintain context across multiple related events.
88
+
89
+ ## Best Practices
90
+
91
+ ### Design Principles
92
+ - Keep bridge logic focused on routing and transformation
93
+ - Implement comprehensive logging for event flow debugging
94
+ - Use dependency injection for bridge component management
95
+ - Design for horizontal scaling in high-volume scenarios
96
+
97
+ ### Monitoring and Diagnostics
98
+ - Implement detailed event flow tracking and metrics
99
+ - Provide debugging capabilities for routing rule troubleshooting
100
+ - Monitor bridge performance and identify bottlenecks
101
+ - Support event replay capabilities for testing and debugging
102
+
103
+ ## Common Pitfalls
104
+
105
+ ### Bridge Complexity
106
+ Avoid creating overly complex bridge logic that becomes difficult to maintain and debug.
107
+
108
+ ### Performance Bottlenecks
109
+ Prevent the bridge from becoming a performance bottleneck by implementing efficient routing and processing algorithms.
110
+
111
+ *Complete bridge implementation: samples/event-bridge-pattern.md*
112
+ *Event payload design: event-payload-design-patterns.md*
113
+ *Command patterns: command-queue-pattern-al.md*
@@ -0,0 +1,127 @@
1
+ ---
2
+ title: "Event Payload Design Patterns"
3
+ domain: "sam-coder"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["event-payload", "message-design", "data-patterns", "serialization"]
7
+ prerequisites: ["event-fundamentals", "data-structures", "json-handling"]
8
+ samples: "samples/event-payload-design.md"
9
+ related_topics: ["event-bridge-pattern-al", "command-queue-pattern-al"]
10
+ ---
11
+
12
+ # Event Payload Design Patterns
13
+
14
+ ## Overview
15
+
16
+ Event Payload Design Patterns provide structured approaches for designing event data that is maintainable, extensible, and efficient. Well-designed payloads ensure events can evolve over time while maintaining compatibility with existing consumers.
17
+
18
+ **Key Benefit**: Creates stable, extensible event contracts that support system evolution without breaking existing integrations.
19
+
20
+ ## Core Design Principles
21
+
22
+ ### Payload Structure Standards
23
+ Design consistent payload structures that include essential metadata alongside business data, enabling reliable event processing and debugging.
24
+
25
+ ### Versioning Strategy
26
+ Implement payload versioning that supports backward compatibility while enabling gradual migration to new payload formats.
27
+
28
+ ### Data Completeness
29
+ Include sufficient data in payloads to enable consumers to process events without requiring additional data lookups when possible.
30
+
31
+ ## Essential Payload Patterns
32
+
33
+ ### Envelope Pattern
34
+ Wrap business data in standardized envelopes that include metadata such as event type, timestamp, source system, and correlation identifiers.
35
+
36
+ ### Reference vs. Value Inclusion
37
+ Balance between including complete data (values) versus references (IDs) based on payload size, security requirements, and consumer needs.
38
+
39
+ ### Hierarchical Data Organization
40
+ Structure complex data hierarchically to support partial consumption and efficient serialization/deserialization operations.
41
+
42
+ ## Payload Evolution Strategies
43
+
44
+ ### Additive Changes
45
+ Design payload evolution strategies that primarily use additive changes, ensuring new fields don't break existing consumers.
46
+
47
+ ### Optional Field Patterns
48
+ Use optional fields and default values to enable payload enhancement without requiring immediate consumer updates.
49
+
50
+ ### Migration Support
51
+ Implement payload transformation capabilities that can convert between different payload versions during transition periods.
52
+
53
+ ## Performance Optimization
54
+
55
+ ### Size Optimization
56
+ Balance payload completeness with size constraints to ensure efficient network transmission and processing performance.
57
+
58
+ ### Serialization Efficiency
59
+ Choose serialization formats and patterns that optimize for the primary usage scenarios (human readability vs. processing speed).
60
+
61
+ ### Compression Strategies
62
+ Implement compression strategies for large payloads while considering the processing overhead of compression/decompression.
63
+
64
+ ## Data Integrity and Security
65
+
66
+ ### Validation Patterns
67
+ - Implement payload validation at both producer and consumer sides
68
+ - Define clear data type and format requirements
69
+ - Support schema validation for structured payload formats
70
+ - Provide clear error messages for validation failures
71
+
72
+ ### Sensitive Data Handling
73
+ - Avoid including sensitive data in event payloads when possible
74
+ - Implement data masking patterns for logging and debugging
75
+ - Use references to sensitive data rather than including values directly
76
+ - Support encryption for payloads containing sensitive information
77
+
78
+ ## Specialized Payload Types
79
+
80
+ ### Command Payloads
81
+ Design command payloads that include all necessary information for executing operations, including parameters and execution context.
82
+
83
+ ### State Change Payloads
84
+ Structure state change events to include both previous and current state information, enabling consumers to understand the nature of changes.
85
+
86
+ ### Batch Operation Payloads
87
+ Design payloads for batch operations that efficiently represent collections of related changes or operations.
88
+
89
+ ## Integration Considerations
90
+
91
+ ### Cross-System Compatibility
92
+ Design payloads that can cross system boundaries effectively, considering different serialization capabilities and data type support.
93
+
94
+ ### Protocol Independence
95
+ Structure payloads to work effectively across different transport protocols and message delivery mechanisms.
96
+
97
+ ### Consumer Diversity
98
+ Consider the needs of different types of consumers (real-time processors, batch systems, human operators) when designing payload structures.
99
+
100
+ ## Best Practices
101
+
102
+ ### Design Guidelines
103
+ - Use clear, descriptive field names that convey meaning
104
+ - Include timestamp and correlation information in all payloads
105
+ - Implement consistent data type usage across similar fields
106
+ - Provide comprehensive documentation for payload schemas
107
+
108
+ ### Documentation Standards
109
+ - Document all payload fields with clear descriptions and examples
110
+ - Provide schema definitions using standard formats (JSON Schema, OpenAPI)
111
+ - Include example payloads for common scenarios
112
+ - Maintain version history and migration guidance
113
+
114
+ ## Common Pitfalls
115
+
116
+ ### Payload Bloat
117
+ Avoid including unnecessary data that increases payload size without providing corresponding value to consumers.
118
+
119
+ ### Breaking Changes
120
+ Prevent accidental breaking changes through careful payload evolution planning and thorough testing of changes.
121
+
122
+ ### Inconsistent Structure
123
+ Avoid inconsistent payload structures across similar events that create confusion and increase integration complexity.
124
+
125
+ *Complete payload design examples: samples/event-payload-design.md*
126
+ *Event routing patterns: event-bridge-pattern-al.md*
127
+ *Command processing: command-queue-pattern-al.md*
@@ -0,0 +1,141 @@
1
+ ---
2
+ title: "Generic Method Patterns in AL"
3
+ domain: "sam-coder"
4
+ difficulty: "intermediate"
5
+ bc_versions: "18+"
6
+ tags: ["generic-methods", "type-safety", "code-reuse", "al-generics"]
7
+ prerequisites: ["al-basics", "interface-implementation", "advanced-al-features"]
8
+ samples: "samples/generic-method-patterns.md"
9
+ related_topics: ["type-safe-operations-al", "template-method-pattern-al"]
10
+ ---
11
+
12
+ # Generic Method Patterns in AL
13
+
14
+ ## Overview
15
+
16
+ Generic Method Patterns in AL enable type-safe, reusable code by allowing methods to work with different data types while maintaining compile-time type checking. These patterns reduce code duplication and provide flexible, maintainable solutions for common algorithmic operations.
17
+
18
+ **Key Benefit**: Enables creation of type-safe, reusable algorithms that work across different data types while maintaining performance and compile-time validation.
19
+
20
+ ## Core Generic Concepts
21
+
22
+ ### Type Parameter Definition
23
+ Define generic type parameters in method signatures that can represent any compatible type, enabling flexible method implementation.
24
+
25
+ ### Constraint Specification
26
+ Apply constraints to generic type parameters to ensure they meet specific requirements for the generic algorithm implementation.
27
+
28
+ ### Type Inference
29
+ Leverage AL's type inference capabilities to reduce explicit type specification while maintaining type safety in generic method calls.
30
+
31
+ ## Essential Generic Patterns
32
+
33
+ ### Collection Processing Generics
34
+ Implement generic methods for common collection operations such as filtering, mapping, and reduction that work across different data types.
35
+
36
+ ### Comparison and Sorting Generics
37
+ Design generic comparison and sorting algorithms that can work with any comparable data type while maintaining efficiency.
38
+
39
+ ### Data Transformation Generics
40
+ Create generic transformation methods that can convert between different data types using consistent transformation patterns.
41
+
42
+ ## Advanced Generic Techniques
43
+
44
+ ### Multi-Type Parameter Methods
45
+ Design methods with multiple generic type parameters that can handle complex operations involving multiple related types.
46
+
47
+ ### Generic Factory Methods
48
+ Implement generic factory patterns that can create instances of different types based on generic parameters and runtime conditions.
49
+
50
+ ### Generic Event Handlers
51
+ Create generic event handling patterns that can process events with different payload types using consistent handling logic.
52
+
53
+ ## Type Safety Strategies
54
+
55
+ ### Constraint-Based Validation
56
+ - Use generic constraints to ensure type parameters meet specific interface or inheritance requirements
57
+ - Implement compile-time validation for generic type compatibility
58
+ - Design constraint hierarchies that support complex type requirements
59
+ - Provide clear error messages for constraint violations
60
+
61
+ ### Runtime Type Checking
62
+ - Implement runtime type validation for scenarios where compile-time checking is insufficient
63
+ - Support dynamic type discovery and validation in generic methods
64
+ - Handle type conversion and casting safely within generic implementations
65
+ - Provide fallback mechanisms for unsupported type scenarios
66
+
67
+ ## Performance Optimization
68
+
69
+ ### Generic Method Specialization
70
+ Implement specialized versions of generic methods for commonly used types to optimize performance while maintaining generic interface compatibility.
71
+
72
+ ### Type-Specific Optimizations
73
+ Design generic methods that can apply type-specific optimizations based on runtime type information while maintaining consistent interfaces.
74
+
75
+ ### Memory Efficiency
76
+ Optimize memory usage in generic methods by avoiding unnecessary object creation and implementing efficient type-specific storage patterns.
77
+
78
+ ## Integration Patterns
79
+
80
+ ### Interface-Based Generics
81
+ Design generic methods that work with interfaces, enabling polymorphic behavior while maintaining type safety and flexibility.
82
+
83
+ ### Generic Extension Methods
84
+ Implement extension methods using generic patterns to add functionality to existing types without modification.
85
+
86
+ ### Generic Builder Patterns
87
+ Create generic builder patterns that can construct complex objects of different types using consistent building interfaces.
88
+
89
+ ## Error Handling and Validation
90
+
91
+ ### Generic Exception Patterns
92
+ Design exception handling patterns that work effectively with generic methods while providing meaningful error information.
93
+
94
+ ### Type Validation Strategies
95
+ Implement comprehensive type validation that ensures generic methods receive compatible types and handle edge cases appropriately.
96
+
97
+ ### Constraint Violation Handling
98
+ Handle constraint violations gracefully with clear error messages and appropriate fallback behaviors.
99
+
100
+ ## Testing Generic Methods
101
+
102
+ ### Parameterized Testing
103
+ - Design test patterns that validate generic method behavior across multiple type parameters
104
+ - Implement property-based testing for generic algorithms
105
+ - Support type-specific test scenarios while maintaining generic test structure
106
+ - Validate constraint enforcement and error handling
107
+
108
+ ### Type Coverage Testing
109
+ - Ensure test coverage across all supported generic type parameters
110
+ - Test edge cases and boundary conditions for different types
111
+ - Validate performance characteristics across different type parameters
112
+ - Test integration scenarios with complex generic method compositions
113
+
114
+ ## Best Practices
115
+
116
+ ### Design Principles
117
+ - Keep generic methods focused and single-purpose
118
+ - Use meaningful names for generic type parameters
119
+ - Implement appropriate constraints to ensure type safety
120
+ - Provide clear documentation for generic method usage and constraints
121
+
122
+ ### Performance Guidelines
123
+ - Consider the performance implications of generic method implementation
124
+ - Use specialized implementations for performance-critical scenarios
125
+ - Minimize boxing and unboxing operations in generic methods
126
+ - Profile generic method performance with different type parameters
127
+
128
+ ## Common Pitfalls
129
+
130
+ ### Over-Generalization
131
+ Avoid creating overly generic methods that become complex and difficult to understand or maintain.
132
+
133
+ ### Constraint Misuse
134
+ Prevent inappropriate use of generic constraints that unnecessarily limit method applicability or create confusing type requirements.
135
+
136
+ ### Performance Degradation
137
+ Be aware of potential performance impacts from generic method overhead, especially in high-frequency scenarios.
138
+
139
+ *Complete generic method examples: samples/generic-method-patterns.md*
140
+ *Type-safe operations: type-safe-operations-al.md*
141
+ *Template method patterns: template-method-pattern-al.md*
@@ -0,0 +1,66 @@
1
+ ---
2
+ title: "Manual Binding for Conditional Event Subscribers"
3
+ domain: "sam-coder"
4
+ difficulty: "advanced"
5
+ bc_versions: "16+"
6
+ tags: ["events", "binding", "conditional", "runtime"]
7
+ prerequisites: ["event-subscriber-basics", "binding-patterns"]
8
+ samples: "samples/manual-binding.md"
9
+ ---
10
+ # Manual Binding for Conditional Event Subscribers
11
+
12
+ ## Overview
13
+
14
+ Manual binding enables runtime control over event subscriber activation, allowing conditional subscriber registration based on business logic, configuration, or environmental factors. This pattern provides architectural flexibility beyond static EventSubscriber attribute declarations.
15
+
16
+ Manual binding requires explicit subscriber registration and deregistration through the BC event management framework. This approach trades development simplicity for runtime control and dynamic event handling capabilities.
17
+
18
+ The pattern is essential for scenarios requiring conditional event processing, multi-tenant customizations, or feature-flag-controlled functionality where static binding creates unnecessary overhead or conflicts.
19
+
20
+ ## Architectural Benefits
21
+
22
+ Manual binding enables conditional event processing based on runtime criteria such as user permissions, feature flags, or business configuration. Subscribers only activate when actually needed, reducing unnecessary event processing overhead.
23
+
24
+ Dynamic binding supports multi-tenant scenarios where different tenants require different event handling logic. The same codebase can provide tenant-specific event processing without static coupling to all possible variations.
25
+
26
+ Feature toggles and A/B testing scenarios benefit from manual binding's ability to enable or disable event handlers without code deployment. Business logic changes can control event processing behavior dynamically.
27
+
28
+ ## Implementation Patterns
29
+
30
+ Manual binding requires implementing custom registration logic typically executed during application startup or feature activation. The registration code must handle both binding and unbinding scenarios appropriately.
31
+
32
+ Conditional binding logic should evaluate business rules, configuration settings, or environmental factors to determine when subscribers should be active. The evaluation timing and frequency impact system performance and behavior consistency.
33
+
34
+ Error handling becomes critical in manual binding scenarios since registration failures can silently disable expected functionality. Robust error handling and logging ensure binding issues are detected and resolved promptly.
35
+
36
+ ## Lifecycle Management
37
+
38
+ Manual binding requires explicit lifecycle management for subscriber registration and deregistration. Unlike static subscribers, manually bound subscribers need active management throughout their operational lifetime.
39
+
40
+ Registration timing affects when events begin processing through manual subscribers. Early registration ensures events are captured from system startup, while delayed registration may miss early system events.
41
+
42
+ Deregistration becomes necessary when conditional criteria change or features deactivate. Failed deregistration can lead to unexpected event processing and potential system conflicts.
43
+
44
+ ## Configuration Integration
45
+
46
+ Manual binding integrates naturally with configuration management systems, allowing business users to control event processing behavior without technical intervention. Configuration changes can enable or disable event handlers dynamically.
47
+
48
+ Configuration-driven binding requires robust validation to ensure only valid subscribers are registered and conflicting configurations are detected early. Invalid configurations should fail safely without disrupting other system functions.
49
+
50
+ Runtime configuration changes need careful handling to avoid inconsistent states where some events are processed by newly configured handlers while others use previous configurations.
51
+
52
+ ## Performance Considerations
53
+
54
+ Manual binding introduces registration overhead during application startup or feature activation. The registration cost must be balanced against the flexibility benefits, particularly in high-frequency event scenarios.
55
+
56
+ Conditional evaluation logic adds processing overhead to determine when subscribers should be active. Efficient evaluation algorithms minimize performance impact while providing necessary flexibility.
57
+
58
+ Dynamic binding and unbinding during system operation can create temporary inconsistencies where some events are processed differently than others. Timing considerations ensure consistent event processing behavior.
59
+
60
+ ## Testing Strategies
61
+
62
+ Manual binding requires comprehensive testing of both bound and unbound states to ensure correct behavior under all configuration scenarios. Test suites must validate conditional binding logic and edge cases.
63
+
64
+ Integration testing becomes more complex with manual binding since the same codebase behaves differently based on binding configuration. Test environments must exercise all possible binding combinations.
65
+
66
+ Performance testing must account for binding overhead and conditional evaluation impact on overall system performance, particularly during startup and configuration change scenarios.
@@ -0,0 +1,96 @@
1
+ ---
2
+ title: "AL Nested Compound Statement Best Practices"
3
+ domain: "sam-coder"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["nested-statements", "code-organization", "readability", "complexity-management"]
7
+ prerequisites: ["compound-statement-readability", "al-control-flow"]
8
+ samples: "samples/nested-compound-best-practices.md"
9
+ ---
10
+ # AL Nested Compound Statement Best Practices
11
+
12
+ ## Overview
13
+
14
+ Nested compound statements in AL require careful organization to maintain readability and prevent excessive complexity that impairs code maintenance. While compound statements enhance individual construct clarity, deep nesting can create cognitive overload that negates readability benefits.
15
+
16
+ Effective nested compound statement management balances structural clarity with complexity control through strategic indentation, logical grouping, and complexity reduction techniques. Professional AL development emphasizes readable nesting patterns that support both immediate comprehension and long-term maintainability.
17
+
18
+ The challenge lies in preserving the benefits of compound statements while managing the visual and cognitive complexity that emerges from multiple levels of nested begin-end blocks. Successful approaches combine consistent formatting with architectural patterns that minimize nesting depth.
19
+
20
+ ## Complexity Management Principles
21
+
22
+ ### Depth Limitation Strategies
23
+
24
+ Establish practical limits on nesting depth to prevent excessive complexity that overwhelms developer comprehension. Most experienced AL developers find that more than three levels of nesting create significant cognitive load during code reading and maintenance.
25
+
26
+ When nesting depth approaches problematic levels, consider extracting nested logic into separate procedures or functions. This extraction reduces visual complexity while maintaining logical organization and creating reusable code components.
27
+
28
+ Apply the principle that each level of nesting should represent a meaningful logical distinction rather than arbitrary grouping. Each nested level should serve a clear purpose that justifies the additional complexity it introduces.
29
+
30
+ ### Logical Organization
31
+
32
+ Structure nested compound statements to follow natural business logic flow rather than purely technical organization. Group related operations within the same nesting level to create coherent logical blocks that match business process understanding.
33
+
34
+ Use consistent patterns for similar types of nested logic throughout the AL codebase. Establish standard approaches for common scenarios like validation cascades, error handling hierarchies, and data processing workflows.
35
+
36
+ Organize nested statements to minimize the cognitive distance between related operations. Keep logically connected statements within the same visual scope to reduce mental mapping requirements during code comprehension.
37
+
38
+ ### Visual Structure Enhancement
39
+
40
+ Apply consistent indentation patterns that clearly communicate nesting relationships without creating excessive horizontal space consumption. Balance clarity with practical line length constraints imposed by development environments.
41
+
42
+ Use strategic whitespace and commenting to create visual separation between different logical blocks within nested structures. This separation helps developers parse complex nesting without losing track of scope boundaries.
43
+
44
+ Consider using meaningful variable names and procedure names that communicate the purpose of nested blocks, reducing the need to parse nested logic to understand overall intent.
45
+
46
+ ## Implementation Patterns
47
+
48
+ ### Validation Cascades
49
+
50
+ Implement cascading validation logic through structured nesting that creates clear decision trees. Each level of nesting should represent a distinct validation concern that builds upon previous validation results.
51
+
52
+ Structure validation nesting to fail fast and minimize unnecessary processing when early validation steps fail. This approach improves both performance and code clarity by establishing clear exit conditions.
53
+
54
+ Use compound statements to group related validation operations within each nesting level, creating logical units that can be understood independently while contributing to overall validation flow.
55
+
56
+ ### Error Handling Hierarchies
57
+
58
+ Organize error handling through nested compound statements that create layered exception handling appropriate to different error types and severity levels. Each nesting level should handle errors at the appropriate abstraction level.
59
+
60
+ Implement error handling nesting that provides specific error responses at the appropriate scope level while maintaining general error handling at outer levels. This layered approach ensures comprehensive error coverage without excessive complexity.
61
+
62
+ Use nested error handling to implement graceful degradation patterns where different levels of functionality can continue operating even when specific subsystems encounter errors.
63
+
64
+ ### Business Process Workflows
65
+
66
+ Structure business process implementation through nested compound statements that mirror actual business workflow steps. Each nesting level should represent a significant business decision point or process phase.
67
+
68
+ Organize workflow nesting to support process modification and extension without requiring restructuring of existing nested logic. This approach facilitates business requirement changes that commonly occur in AL applications.
69
+
70
+ Use nested compound statements to implement approval workflows, document processing chains, and other multi-step business processes that require clear state management and decision tracking.
71
+
72
+ ## Readability Optimization
73
+
74
+ ### Strategic Extraction
75
+
76
+ Identify nested logic candidates for extraction into separate procedures or functions based on complexity metrics and logical cohesion. Extract nested blocks that serve distinct purposes or could be reused in different contexts.
77
+
78
+ Use extraction to reduce visual complexity while preserving logical relationships between different parts of nested operations. Extracted procedures should have clear interfaces and well-defined responsibilities.
79
+
80
+ Apply extraction selectively to avoid creating excessive procedure fragmentation that makes code navigation difficult. Balance nested complexity reduction with overall code organization and discoverability.
81
+
82
+ ### Commenting Strategies
83
+
84
+ Use strategic comments to explain the purpose and context of nested compound statements without cluttering the code with excessive documentation. Focus comments on business logic rationale rather than technical implementation details.
85
+
86
+ Apply header comments to complex nested sections that explain the overall purpose and expected outcomes. These comments help developers understand the intent before diving into detailed nested logic.
87
+
88
+ Use inline comments sparingly within nested structures to explain non-obvious business rules or technical constraints that affect the nested logic implementation.
89
+
90
+ ### Formatting Consistency
91
+
92
+ Establish and maintain consistent formatting patterns for nested compound statements across the entire AL codebase. This consistency reduces the cognitive overhead of parsing different formatting styles.
93
+
94
+ Use automated formatting tools where possible to ensure consistent indentation and spacing within nested structures. Manual formatting variations can create confusion and reduce readability benefits.
95
+
96
+ Apply consistent patterns for handling edge cases like empty nested blocks, single-statement nested blocks, and mixed nesting scenarios that commonly arise during development.