bc-code-intelligence-mcp 1.3.2 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/README.md +1 -0
  2. package/dist/config/test-enhanced-layer-service.js +10 -10
  3. package/dist/config/test-enhanced-layer-service.js.map +1 -1
  4. package/dist/dev/hot-reload.d.ts +2 -2
  5. package/dist/dev/hot-reload.d.ts.map +1 -1
  6. package/dist/dev/hot-reload.js.map +1 -1
  7. package/dist/index.d.ts +0 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +43 -41
  10. package/dist/index.js.map +1 -1
  11. package/dist/layers/index.d.ts +1 -1
  12. package/dist/layers/index.d.ts.map +1 -1
  13. package/dist/layers/index.js +1 -1
  14. package/dist/layers/index.js.map +1 -1
  15. package/dist/layers/layer-service.d.ts.map +1 -1
  16. package/dist/layers/layer-service.js +4 -1
  17. package/dist/layers/layer-service.js.map +1 -1
  18. package/dist/search/intelligent-search.d.ts.map +1 -1
  19. package/dist/search/intelligent-search.js +5 -2
  20. package/dist/search/intelligent-search.js.map +1 -1
  21. package/dist/services/code-analysis-service.d.ts.map +1 -1
  22. package/dist/services/code-analysis-service.js +8 -1
  23. package/dist/services/code-analysis-service.js.map +1 -1
  24. package/dist/services/knowledge-service.d.ts +21 -10
  25. package/dist/services/knowledge-service.d.ts.map +1 -1
  26. package/dist/services/knowledge-service.js +82 -59
  27. package/dist/services/knowledge-service.js.map +1 -1
  28. package/dist/services/multi-content-layer-service.d.ts +90 -0
  29. package/dist/services/multi-content-layer-service.d.ts.map +1 -1
  30. package/dist/services/multi-content-layer-service.js +380 -0
  31. package/dist/services/multi-content-layer-service.js.map +1 -1
  32. package/dist/services/roleplay-engine.d.ts +1 -1
  33. package/dist/services/roleplay-engine.d.ts.map +1 -1
  34. package/dist/services/roleplay-engine.js +40 -12
  35. package/dist/services/roleplay-engine.js.map +1 -1
  36. package/dist/services/workflow-service.d.ts +11 -3
  37. package/dist/services/workflow-service.d.ts.map +1 -1
  38. package/dist/services/workflow-service.js +119 -78
  39. package/dist/services/workflow-service.js.map +1 -1
  40. package/dist/streamlined-handlers.d.ts +31 -2
  41. package/dist/streamlined-handlers.d.ts.map +1 -1
  42. package/dist/streamlined-handlers.js +152 -110
  43. package/dist/streamlined-handlers.js.map +1 -1
  44. package/dist/streamlined-tools.d.ts +12 -0
  45. package/dist/streamlined-tools.d.ts.map +1 -1
  46. package/dist/streamlined-tools.js +11 -6
  47. package/dist/streamlined-tools.js.map +1 -1
  48. package/dist/tools/specialist-tools.d.ts.map +1 -1
  49. package/dist/tools/specialist-tools.js +23 -13
  50. package/dist/tools/specialist-tools.js.map +1 -1
  51. package/dist/types/bc-knowledge.d.ts +10 -7
  52. package/dist/types/bc-knowledge.d.ts.map +1 -1
  53. package/dist/types/bc-knowledge.js +23 -1
  54. package/dist/types/bc-knowledge.js.map +1 -1
  55. package/dist/types/roleplay-types.d.ts +1 -0
  56. package/dist/types/roleplay-types.d.ts.map +1 -1
  57. package/package.json +13 -4
  58. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +0 -24
  59. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +0 -24
  60. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +0 -30
  61. package/embedded-knowledge/AGENTS.md +0 -178
  62. package/embedded-knowledge/CONTRIBUTING.md +0 -58
  63. package/embedded-knowledge/LICENSE +0 -21
  64. package/embedded-knowledge/README.md +0 -32
  65. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +0 -90
  66. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +0 -113
  67. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +0 -101
  68. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +0 -87
  69. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +0 -155
  70. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +0 -138
  71. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +0 -79
  72. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +0 -280
  73. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +0 -200
  74. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +0 -565
  75. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +0 -665
  76. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +0 -325
  77. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +0 -696
  78. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +0 -320
  79. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +0 -102
  80. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +0 -433
  81. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +0 -66
  82. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +0 -115
  83. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +0 -295
  84. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +0 -86
  85. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +0 -96
  86. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +0 -70
  87. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +0 -84
  88. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +0 -93
  89. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +0 -73
  90. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +0 -78
  91. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +0 -79
  92. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +0 -87
  93. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +0 -209
  94. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +0 -246
  95. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +0 -107
  96. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +0 -105
  97. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +0 -186
  98. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +0 -60
  99. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +0 -139
  100. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +0 -190
  101. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +0 -516
  102. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +0 -298
  103. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +0 -324
  104. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +0 -344
  105. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +0 -137
  106. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +0 -340
  107. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +0 -810
  108. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +0 -86
  109. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +0 -110
  110. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +0 -758
  111. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +0 -665
  112. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +0 -316
  113. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +0 -223
  114. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +0 -149
  115. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +0 -412
  116. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +0 -211
  117. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +0 -155
  118. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +0 -475
  119. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +0 -238
  120. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +0 -97
  121. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +0 -666
  122. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +0 -319
  123. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +0 -236
  124. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +0 -59
  125. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +0 -67
  126. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +0 -70
  127. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +0 -90
  128. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +0 -87
  129. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +0 -70
  130. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +0 -74
  131. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +0 -81
  132. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +0 -56
  133. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +0 -66
  134. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +0 -79
  135. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +0 -78
  136. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +0 -83
  137. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +0 -76
  138. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +0 -104
  139. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +0 -145
  140. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +0 -104
  141. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +0 -114
  142. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +0 -356
  143. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +0 -256
  144. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +0 -101
  145. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +0 -108
  146. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +0 -80
  147. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +0 -98
  148. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +0 -123
  149. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +0 -96
  150. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +0 -115
  151. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +0 -115
  152. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +0 -114
  153. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +0 -395
  154. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +0 -479
  155. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +0 -548
  156. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +0 -287
  157. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +0 -434
  158. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +0 -508
  159. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +0 -615
  160. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +0 -144
  161. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +0 -96
  162. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +0 -124
  163. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +0 -84
  164. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +0 -75
  165. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +0 -96
  166. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +0 -385
  167. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +0 -72
  168. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +0 -48
  169. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +0 -49
  170. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +0 -67
  171. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +0 -119
  172. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +0 -123
  173. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +0 -64
  174. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +0 -60
  175. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +0 -83
  176. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +0 -716
  177. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +0 -101
  178. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +0 -91
  179. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +0 -79
  180. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +0 -79
  181. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +0 -89
  182. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +0 -76
  183. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +0 -76
  184. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +0 -76
  185. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +0 -81
  186. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +0 -76
  187. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +0 -75
  188. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +0 -76
  189. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +0 -76
  190. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +0 -76
  191. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +0 -96
  192. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +0 -76
  193. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +0 -86
  194. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +0 -90
  195. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +0 -82
  196. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +0 -78
  197. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +0 -76
  198. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +0 -78
  199. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +0 -100
  200. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +0 -115
  201. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +0 -124
  202. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +0 -110
  203. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +0 -438
  204. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +0 -255
  205. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +0 -209
  206. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +0 -218
  207. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +0 -218
  208. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +0 -280
  209. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +0 -188
  210. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +0 -245
  211. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +0 -244
  212. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +0 -278
  213. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +0 -484
  214. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +0 -64
  215. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +0 -107
  216. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +0 -280
  217. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +0 -75
  218. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +0 -67
  219. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +0 -76
  220. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +0 -98
  221. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +0 -128
  222. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +0 -75
  223. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +0 -95
  224. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +0 -141
  225. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +0 -91
  226. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +0 -118
  227. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +0 -111
  228. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +0 -113
  229. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +0 -127
  230. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +0 -141
  231. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +0 -66
  232. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +0 -96
  233. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +0 -161
  234. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +0 -177
  235. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +0 -239
  236. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +0 -346
  237. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +0 -298
  238. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +0 -677
  239. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +0 -117
  240. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +0 -75
  241. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +0 -169
  242. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +0 -399
  243. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +0 -356
  244. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +0 -889
  245. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +0 -84
  246. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +0 -127
  247. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +0 -89
  248. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +0 -516
  249. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +0 -61
  250. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +0 -427
  251. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +0 -122
  252. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +0 -96
  253. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +0 -101
  254. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +0 -149
  255. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +0 -107
  256. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +0 -95
  257. package/embedded-knowledge/domains/seth-security/api-permission-model.md +0 -115
  258. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +0 -78
  259. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +0 -373
  260. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +0 -308
  261. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +0 -79
  262. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +0 -78
  263. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +0 -81
  264. package/embedded-knowledge/indexes/bc-version-matrix.json +0 -188
  265. package/embedded-knowledge/indexes/domain-catalog.json +0 -106
  266. package/embedded-knowledge/indexes/tags/abbreviations.json +0 -1
  267. package/embedded-knowledge/indexes/tags/abstraction.json +0 -1
  268. package/embedded-knowledge/indexes/tags/access-control.json +0 -1
  269. package/embedded-knowledge/indexes/tags/accessibility.json +0 -1
  270. package/embedded-knowledge/indexes/tags/actions.json +0 -1
  271. package/embedded-knowledge/indexes/tags/advanced-patterns.json +0 -1
  272. package/embedded-knowledge/indexes/tags/advanced.json +0 -1
  273. package/embedded-knowledge/indexes/tags/al-extension.json +0 -1
  274. package/embedded-knowledge/indexes/tags/al-generics.json +0 -1
  275. package/embedded-knowledge/indexes/tags/al-objects.json +0 -1
  276. package/embedded-knowledge/indexes/tags/al-syntax.json +0 -1
  277. package/embedded-knowledge/indexes/tags/algorithm-structure.json +0 -1
  278. package/embedded-knowledge/indexes/tags/alternatives.json +0 -1
  279. package/embedded-knowledge/indexes/tags/analytics.json +0 -1
  280. package/embedded-knowledge/indexes/tags/api-delegates.json +0 -1
  281. package/embedded-knowledge/indexes/tags/api-design.json +0 -1
  282. package/embedded-knowledge/indexes/tags/api-documentation.json +0 -1
  283. package/embedded-knowledge/indexes/tags/api-endpoints.json +0 -1
  284. package/embedded-knowledge/indexes/tags/api-extensibility.json +0 -1
  285. package/embedded-knowledge/indexes/tags/api-fieldsets.json +0 -1
  286. package/embedded-knowledge/indexes/tags/api-integration.json +0 -1
  287. package/embedded-knowledge/indexes/tags/api-interfaces.json +0 -1
  288. package/embedded-knowledge/indexes/tags/api-optimization.json +0 -1
  289. package/embedded-knowledge/indexes/tags/api-pages.json +0 -1
  290. package/embedded-knowledge/indexes/tags/api-patterns.json +0 -1
  291. package/embedded-knowledge/indexes/tags/api-permissions.json +0 -1
  292. package/embedded-knowledge/indexes/tags/api-responses.json +0 -1
  293. package/embedded-knowledge/indexes/tags/api-simplification.json +0 -1
  294. package/embedded-knowledge/indexes/tags/api.json +0 -1
  295. package/embedded-knowledge/indexes/tags/architecture.json +0 -1
  296. package/embedded-knowledge/indexes/tags/async-patterns.json +0 -1
  297. package/embedded-knowledge/indexes/tags/async-processing.json +0 -1
  298. package/embedded-knowledge/indexes/tags/automatic-registration.json +0 -1
  299. package/embedded-knowledge/indexes/tags/batch-operations.json +0 -1
  300. package/embedded-knowledge/indexes/tags/bc24-migration.json +0 -1
  301. package/embedded-knowledge/indexes/tags/begin-blocks.json +0 -1
  302. package/embedded-knowledge/indexes/tags/begin-end.json +0 -1
  303. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +0 -1
  304. package/embedded-knowledge/indexes/tags/best-practices.json +0 -1
  305. package/embedded-knowledge/indexes/tags/binding.json +0 -1
  306. package/embedded-knowledge/indexes/tags/block-structure.json +0 -1
  307. package/embedded-knowledge/indexes/tags/blocks.json +0 -1
  308. package/embedded-knowledge/indexes/tags/boolean-expressions.json +0 -1
  309. package/embedded-knowledge/indexes/tags/branching.json +0 -1
  310. package/embedded-knowledge/indexes/tags/breaking-changes.json +0 -1
  311. package/embedded-knowledge/indexes/tags/breakpoints.json +0 -1
  312. package/embedded-knowledge/indexes/tags/business-foundation.json +0 -1
  313. package/embedded-knowledge/indexes/tags/business-infrastructure.json +0 -1
  314. package/embedded-knowledge/indexes/tags/business-process.json +0 -1
  315. package/embedded-knowledge/indexes/tags/business-rules.json +0 -1
  316. package/embedded-knowledge/indexes/tags/caching.json +0 -1
  317. package/embedded-knowledge/indexes/tags/case-statements.json +0 -1
  318. package/embedded-knowledge/indexes/tags/case.json +0 -1
  319. package/embedded-knowledge/indexes/tags/code-analysis.json +0 -1
  320. package/embedded-knowledge/indexes/tags/code-clarity.json +0 -1
  321. package/embedded-knowledge/indexes/tags/code-comprehension.json +0 -1
  322. package/embedded-knowledge/indexes/tags/code-conversion.json +0 -1
  323. package/embedded-knowledge/indexes/tags/code-formatting.json +0 -1
  324. package/embedded-knowledge/indexes/tags/code-organization.json +0 -1
  325. package/embedded-knowledge/indexes/tags/code-patterns.json +0 -1
  326. package/embedded-knowledge/indexes/tags/code-quality.json +0 -1
  327. package/embedded-knowledge/indexes/tags/code-reuse.json +0 -1
  328. package/embedded-knowledge/indexes/tags/code-simplification.json +0 -1
  329. package/embedded-knowledge/indexes/tags/code-standards.json +0 -1
  330. package/embedded-knowledge/indexes/tags/code-structure.json +0 -1
  331. package/embedded-knowledge/indexes/tags/code-style.json +0 -1
  332. package/embedded-knowledge/indexes/tags/codeunit-design.json +0 -1
  333. package/embedded-knowledge/indexes/tags/command-queue.json +0 -1
  334. package/embedded-knowledge/indexes/tags/comments.json +0 -1
  335. package/embedded-knowledge/indexes/tags/compile-time-validation.json +0 -1
  336. package/embedded-knowledge/indexes/tags/complex-facade.json +0 -1
  337. package/embedded-knowledge/indexes/tags/complexity-hiding.json +0 -1
  338. package/embedded-knowledge/indexes/tags/complexity-management.json +0 -1
  339. package/embedded-knowledge/indexes/tags/compound-statements.json +0 -1
  340. package/embedded-knowledge/indexes/tags/concurrency.json +0 -1
  341. package/embedded-knowledge/indexes/tags/conditional-logic.json +0 -1
  342. package/embedded-knowledge/indexes/tags/conditional.json +0 -1
  343. package/embedded-knowledge/indexes/tags/conflict-resolution.json +0 -1
  344. package/embedded-knowledge/indexes/tags/consistency.json +0 -1
  345. package/embedded-knowledge/indexes/tags/contract-design.json +0 -1
  346. package/embedded-knowledge/indexes/tags/control-flow.json +0 -1
  347. package/embedded-knowledge/indexes/tags/conversion-guide.json +0 -1
  348. package/embedded-knowledge/indexes/tags/correlation.json +0 -1
  349. package/embedded-knowledge/indexes/tags/custom-messages.json +0 -1
  350. package/embedded-knowledge/indexes/tags/data-access.json +0 -1
  351. package/embedded-knowledge/indexes/tags/data-exposure.json +0 -1
  352. package/embedded-knowledge/indexes/tags/data-integrity.json +0 -1
  353. package/embedded-knowledge/indexes/tags/data-loading.json +0 -1
  354. package/embedded-knowledge/indexes/tags/data-manipulation.json +0 -1
  355. package/embedded-knowledge/indexes/tags/data-modeling.json +0 -1
  356. package/embedded-knowledge/indexes/tags/data-patterns.json +0 -1
  357. package/embedded-knowledge/indexes/tags/data-protection.json +0 -1
  358. package/embedded-knowledge/indexes/tags/data-validation.json +0 -1
  359. package/embedded-knowledge/indexes/tags/database.json +0 -1
  360. package/embedded-knowledge/indexes/tags/debugging.json +0 -1
  361. package/embedded-knowledge/indexes/tags/decision-making.json +0 -1
  362. package/embedded-knowledge/indexes/tags/declaration.json +0 -1
  363. package/embedded-knowledge/indexes/tags/default-messages.json +0 -1
  364. package/embedded-knowledge/indexes/tags/defensive-programming.json +0 -1
  365. package/embedded-knowledge/indexes/tags/deleteall.json +0 -1
  366. package/embedded-knowledge/indexes/tags/dependencies.json +0 -1
  367. package/embedded-knowledge/indexes/tags/deployment.json +0 -1
  368. package/embedded-knowledge/indexes/tags/developer-productivity.json +0 -1
  369. package/embedded-knowledge/indexes/tags/development-workflow.json +0 -1
  370. package/embedded-knowledge/indexes/tags/diagnostics.json +0 -1
  371. package/embedded-knowledge/indexes/tags/dimensions.json +0 -1
  372. package/embedded-knowledge/indexes/tags/documentation.json +0 -1
  373. package/embedded-knowledge/indexes/tags/early-exit.json +0 -1
  374. package/embedded-knowledge/indexes/tags/else-clauses.json +0 -1
  375. package/embedded-knowledge/indexes/tags/end-statements.json +0 -1
  376. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +0 -1
  377. package/embedded-knowledge/indexes/tags/entity-relationships.json +0 -1
  378. package/embedded-knowledge/indexes/tags/error-handling.json +0 -1
  379. package/embedded-knowledge/indexes/tags/error-messages.json +0 -1
  380. package/embedded-knowledge/indexes/tags/error-prevention.json +0 -1
  381. package/embedded-knowledge/indexes/tags/error-text.json +0 -1
  382. package/embedded-knowledge/indexes/tags/etag.json +0 -1
  383. package/embedded-knowledge/indexes/tags/event-bridge.json +0 -1
  384. package/embedded-knowledge/indexes/tags/event-payload.json +0 -1
  385. package/embedded-knowledge/indexes/tags/event-routing.json +0 -1
  386. package/embedded-knowledge/indexes/tags/events.json +0 -1
  387. package/embedded-knowledge/indexes/tags/execution-flow.json +0 -1
  388. package/embedded-knowledge/indexes/tags/expressions.json +0 -1
  389. package/embedded-knowledge/indexes/tags/extensibility.json +0 -1
  390. package/embedded-knowledge/indexes/tags/extensions.json +0 -1
  391. package/embedded-knowledge/indexes/tags/facade-composition.json +0 -1
  392. package/embedded-knowledge/indexes/tags/facade-pattern.json +0 -1
  393. package/embedded-knowledge/indexes/tags/field-control.json +0 -1
  394. package/embedded-knowledge/indexes/tags/field-exclusion.json +0 -1
  395. package/embedded-knowledge/indexes/tags/field-registration.json +0 -1
  396. package/embedded-knowledge/indexes/tags/field-state.json +0 -1
  397. package/embedded-knowledge/indexes/tags/field-validation.json +0 -1
  398. package/embedded-knowledge/indexes/tags/fielderror.json +0 -1
  399. package/embedded-knowledge/indexes/tags/fields.json +0 -1
  400. package/embedded-knowledge/indexes/tags/filtering.json +0 -1
  401. package/embedded-knowledge/indexes/tags/filters.json +0 -1
  402. package/embedded-knowledge/indexes/tags/formatting.json +0 -1
  403. package/embedded-knowledge/indexes/tags/generic-methods.json +0 -1
  404. package/embedded-knowledge/indexes/tags/http-status.json +0 -1
  405. package/embedded-knowledge/indexes/tags/if-statements.json +0 -1
  406. package/embedded-knowledge/indexes/tags/implementation.json +0 -1
  407. package/embedded-knowledge/indexes/tags/indentation.json +0 -1
  408. package/embedded-knowledge/indexes/tags/index-summary.json +0 -277
  409. package/embedded-knowledge/indexes/tags/indexing.json +0 -1
  410. package/embedded-knowledge/indexes/tags/inheritance.json +0 -1
  411. package/embedded-knowledge/indexes/tags/integration.json +0 -1
  412. package/embedded-knowledge/indexes/tags/integrity-checking.json +0 -1
  413. package/embedded-knowledge/indexes/tags/intellisense.json +0 -1
  414. package/embedded-knowledge/indexes/tags/interface-design.json +0 -1
  415. package/embedded-knowledge/indexes/tags/interface-segregation.json +0 -1
  416. package/embedded-knowledge/indexes/tags/isolation.json +0 -1
  417. package/embedded-knowledge/indexes/tags/job-processing.json +0 -1
  418. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +0 -1
  419. package/embedded-knowledge/indexes/tags/keywords.json +0 -1
  420. package/embedded-knowledge/indexes/tags/legacy-modernization.json +0 -1
  421. package/embedded-knowledge/indexes/tags/line-breaks.json +0 -1
  422. package/embedded-knowledge/indexes/tags/line-organization.json +0 -1
  423. package/embedded-knowledge/indexes/tags/line-positioning.json +0 -1
  424. package/embedded-knowledge/indexes/tags/localization.json +0 -1
  425. package/embedded-knowledge/indexes/tags/logging.json +0 -1
  426. package/embedded-knowledge/indexes/tags/loose-coupling.json +0 -1
  427. package/embedded-knowledge/indexes/tags/maintainability.json +0 -1
  428. package/embedded-knowledge/indexes/tags/memory-management.json +0 -1
  429. package/embedded-knowledge/indexes/tags/memory-optimization.json +0 -1
  430. package/embedded-knowledge/indexes/tags/memory.json +0 -1
  431. package/embedded-knowledge/indexes/tags/message-design.json +0 -1
  432. package/embedded-knowledge/indexes/tags/message-formatting.json +0 -1
  433. package/embedded-knowledge/indexes/tags/message-patterns.json +0 -1
  434. package/embedded-knowledge/indexes/tags/metadata-driven.json +0 -1
  435. package/embedded-knowledge/indexes/tags/method-comparison.json +0 -1
  436. package/embedded-knowledge/indexes/tags/module-architecture.json +0 -1
  437. package/embedded-knowledge/indexes/tags/module-validation.json +0 -1
  438. package/embedded-knowledge/indexes/tags/monitoring.json +0 -1
  439. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +0 -1
  440. package/embedded-knowledge/indexes/tags/multi-tenancy.json +0 -1
  441. package/embedded-knowledge/indexes/tags/multiple-values.json +0 -1
  442. package/embedded-knowledge/indexes/tags/naming-conventions.json +0 -1
  443. package/embedded-knowledge/indexes/tags/naming.json +0 -1
  444. package/embedded-knowledge/indexes/tags/navigation.json +0 -1
  445. package/embedded-knowledge/indexes/tags/nested-statements.json +0 -1
  446. package/embedded-knowledge/indexes/tags/no-series-conversion.json +0 -1
  447. package/embedded-knowledge/indexes/tags/no-series-validation.json +0 -1
  448. package/embedded-knowledge/indexes/tags/no-series.json +0 -1
  449. package/embedded-knowledge/indexes/tags/number-generation.json +0 -1
  450. package/embedded-knowledge/indexes/tags/object-documentation.json +0 -1
  451. package/embedded-knowledge/indexes/tags/odata.json +0 -1
  452. package/embedded-knowledge/indexes/tags/ondelete.json +0 -1
  453. package/embedded-knowledge/indexes/tags/onvalidate.json +0 -1
  454. package/embedded-knowledge/indexes/tags/operation-delegation.json +0 -1
  455. package/embedded-knowledge/indexes/tags/operation-safety.json +0 -1
  456. package/embedded-knowledge/indexes/tags/operators.json +0 -1
  457. package/embedded-knowledge/indexes/tags/optimization.json +0 -1
  458. package/embedded-knowledge/indexes/tags/order.json +0 -1
  459. package/embedded-knowledge/indexes/tags/organization.json +0 -1
  460. package/embedded-knowledge/indexes/tags/pages.json +0 -1
  461. package/embedded-knowledge/indexes/tags/parameters.json +0 -1
  462. package/embedded-knowledge/indexes/tags/patterns.json +0 -1
  463. package/embedded-knowledge/indexes/tags/performance-optimization.json +0 -1
  464. package/embedded-knowledge/indexes/tags/performance.json +0 -1
  465. package/embedded-knowledge/indexes/tags/placement.json +0 -1
  466. package/embedded-knowledge/indexes/tags/posting-codeunits.json +0 -1
  467. package/embedded-knowledge/indexes/tags/posting.json +0 -1
  468. package/embedded-knowledge/indexes/tags/preconditions.json +0 -1
  469. package/embedded-knowledge/indexes/tags/primary-key.json +0 -1
  470. package/embedded-knowledge/indexes/tags/privacy.json +0 -1
  471. package/embedded-knowledge/indexes/tags/process-automation.json +0 -1
  472. package/embedded-knowledge/indexes/tags/production.json +0 -1
  473. package/embedded-knowledge/indexes/tags/productivity.json +0 -1
  474. package/embedded-knowledge/indexes/tags/query-performance.json +0 -1
  475. package/embedded-knowledge/indexes/tags/queue-management.json +0 -1
  476. package/embedded-knowledge/indexes/tags/ranges.json +0 -1
  477. package/embedded-knowledge/indexes/tags/readability.json +0 -1
  478. package/embedded-knowledge/indexes/tags/record-access.json +0 -1
  479. package/embedded-knowledge/indexes/tags/record-methods.json +0 -1
  480. package/embedded-knowledge/indexes/tags/refactoring.json +0 -1
  481. package/embedded-knowledge/indexes/tags/reference.json +0 -1
  482. package/embedded-knowledge/indexes/tags/repeat-loops.json +0 -1
  483. package/embedded-knowledge/indexes/tags/repeat-statement.json +0 -1
  484. package/embedded-knowledge/indexes/tags/runtime-errors.json +0 -1
  485. package/embedded-knowledge/indexes/tags/runtime.json +0 -1
  486. package/embedded-knowledge/indexes/tags/safeguards.json +0 -1
  487. package/embedded-knowledge/indexes/tags/security.json +0 -1
  488. package/embedded-knowledge/indexes/tags/sequence-management.json +0 -1
  489. package/embedded-knowledge/indexes/tags/serialization.json +0 -1
  490. package/embedded-knowledge/indexes/tags/session-logmessage.json +0 -1
  491. package/embedded-knowledge/indexes/tags/session.json +0 -1
  492. package/embedded-knowledge/indexes/tags/setloadfields.json +0 -1
  493. package/embedded-knowledge/indexes/tags/shortcuts.json +0 -1
  494. package/embedded-knowledge/indexes/tags/sift.json +0 -1
  495. package/embedded-knowledge/indexes/tags/singleinstance.json +0 -1
  496. package/embedded-knowledge/indexes/tags/spacing.json +0 -1
  497. package/embedded-knowledge/indexes/tags/sql-translation.json +0 -1
  498. package/embedded-knowledge/indexes/tags/standards.json +0 -1
  499. package/embedded-knowledge/indexes/tags/statements.json +0 -1
  500. package/embedded-knowledge/indexes/tags/streaming.json +0 -1
  501. package/embedded-knowledge/indexes/tags/strong-typing.json +0 -1
  502. package/embedded-knowledge/indexes/tags/structural-patterns.json +0 -1
  503. package/embedded-knowledge/indexes/tags/structure.json +0 -1
  504. package/embedded-knowledge/indexes/tags/subscribers.json +0 -1
  505. package/embedded-knowledge/indexes/tags/switch.json +0 -1
  506. package/embedded-knowledge/indexes/tags/symbol-search.json +0 -1
  507. package/embedded-knowledge/indexes/tags/syntax.json +0 -1
  508. package/embedded-knowledge/indexes/tags/systemid.json +0 -1
  509. package/embedded-knowledge/indexes/tags/table-configuration.json +0 -1
  510. package/embedded-knowledge/indexes/tags/table-events.json +0 -1
  511. package/embedded-knowledge/indexes/tags/table-keys.json +0 -1
  512. package/embedded-knowledge/indexes/tags/table-safety.json +0 -1
  513. package/embedded-knowledge/indexes/tags/task-scheduler.json +0 -1
  514. package/embedded-knowledge/indexes/tags/telemetry.json +0 -1
  515. package/embedded-knowledge/indexes/tags/template-method.json +0 -1
  516. package/embedded-knowledge/indexes/tags/temporary-tables.json +0 -1
  517. package/embedded-knowledge/indexes/tags/testfield.json +0 -1
  518. package/embedded-knowledge/indexes/tags/tradeoffs.json +0 -1
  519. package/embedded-knowledge/indexes/tags/triggers.json +0 -1
  520. package/embedded-knowledge/indexes/tags/troubleshooting.json +0 -1
  521. package/embedded-knowledge/indexes/tags/type-safety.json +0 -1
  522. package/embedded-knowledge/indexes/tags/url-structure.json +0 -1
  523. package/embedded-knowledge/indexes/tags/user-experience.json +0 -1
  524. package/embedded-knowledge/indexes/tags/user-feedback.json +0 -1
  525. package/embedded-knowledge/indexes/tags/user-interface.json +0 -1
  526. package/embedded-knowledge/indexes/tags/validation-feedback.json +0 -1
  527. package/embedded-knowledge/indexes/tags/validation.json +0 -1
  528. package/embedded-knowledge/indexes/tags/variables.json +0 -1
  529. package/embedded-knowledge/indexes/tags/verbosity.json +0 -1
  530. package/embedded-knowledge/indexes/tags/vs-code.json +0 -1
  531. package/embedded-knowledge/indexes/tags/web-services.json +0 -1
  532. package/embedded-knowledge/indexes/tags/workflow-management.json +0 -1
  533. package/embedded-knowledge/indexes/tags/workflow-optimization.json +0 -1
  534. package/embedded-knowledge/indexes/tags/workflow-templates.json +0 -1
  535. package/embedded-knowledge/indexes/tags/workspace.json +0 -1
  536. package/embedded-knowledge/indexes/tags/xml-documentation.json +0 -1
  537. package/embedded-knowledge/indexes/topic-relationships.json +0 -128
  538. package/embedded-knowledge/methodologies/index.json +0 -81
  539. package/embedded-knowledge/methodologies/phases/analysis-full.md +0 -208
  540. package/embedded-knowledge/methodologies/phases/analysis-quick.md +0 -44
  541. package/embedded-knowledge/methodologies/phases/analysis.md +0 -182
  542. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +0 -174
  543. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +0 -31
  544. package/embedded-knowledge/methodologies/phases/execution-validation.md +0 -174
  545. package/embedded-knowledge/methodologies/phases/performance-full.md +0 -211
  546. package/embedded-knowledge/methodologies/phases/performance-quick.md +0 -32
  547. package/embedded-knowledge/methodologies/phases/performance.md +0 -211
  548. package/embedded-knowledge/methodologies/phases/verification-full.md +0 -162
  549. package/embedded-knowledge/methodologies/phases/verification-quick.md +0 -48
  550. package/embedded-knowledge/methodologies/phases/verification.md +0 -146
  551. package/embedded-knowledge/methodologies/workflow-enforcement.md +0 -142
  552. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +0 -99
  553. package/embedded-knowledge/specialists/alex-architect.md +0 -216
  554. package/embedded-knowledge/specialists/casey-copilot.md +0 -226
  555. package/embedded-knowledge/specialists/chris-config.md +0 -267
  556. package/embedded-knowledge/specialists/dean-debug.md +0 -222
  557. package/embedded-knowledge/specialists/eva-errors.md +0 -235
  558. package/embedded-knowledge/specialists/jordan-bridge.md +0 -235
  559. package/embedded-knowledge/specialists/logan-legacy.md +0 -209
  560. package/embedded-knowledge/specialists/maya-mentor.md +0 -211
  561. package/embedded-knowledge/specialists/morgan-market.md +0 -226
  562. package/embedded-knowledge/specialists/quinn-tester.md +0 -235
  563. package/embedded-knowledge/specialists/roger-reviewer.md +0 -234
  564. package/embedded-knowledge/specialists/sam-coder.md +0 -359
  565. package/embedded-knowledge/specialists/seth-security.md +0 -235
  566. package/embedded-knowledge/specialists/taylor-docs.md +0 -257
  567. package/embedded-knowledge/specialists/uma-ux.md +0 -235
@@ -1,565 +0,0 @@
1
- # API Interface Design Patterns - AL Code Examples
2
-
3
- This sample demonstrates effective API interface design patterns for maintainable, extensible APIs in Business Central.
4
-
5
- ## Basic Interface Design Patterns
6
-
7
- ```al
8
- // Clean, focused interface for customer operations
9
- interface ICustomerService
10
- {
11
- procedure CreateCustomer(CustomerData: Dictionary of [Text, Variant]): Code[20];
12
- procedure UpdateCustomer(CustomerNo: Code[20]; UpdateData: Dictionary of [Text, Variant]): Boolean;
13
- procedure GetCustomer(CustomerNo: Code[20]): Dictionary of [Text, Variant];
14
- procedure DeleteCustomer(CustomerNo: Code[20]): Boolean;
15
- }
16
-
17
- // Separate interface for customer queries (Command-Query Separation)
18
- interface ICustomerQuery
19
- {
20
- procedure FindCustomersByName(NamePattern: Text): List of [Code[20]];
21
- procedure GetCustomerSalesHistory(CustomerNo: Code[20]; FromDate: Date; ToDate: Date): List of [Dictionary of [Text, Variant]];
22
- procedure GetCustomerBalance(CustomerNo: Code[20]): Decimal;
23
- procedure ValidateCustomerExists(CustomerNo: Code[20]): Boolean;
24
- }
25
- ```
26
-
27
- ## Fluent Interface Pattern
28
-
29
- ```al
30
- // Fluent interface for sales order creation
31
- interface ISalesOrderBuilder
32
- {
33
- procedure ForCustomer(CustomerNo: Code[20]): Interface ISalesOrderBuilder;
34
- procedure WithOrderDate(OrderDate: Date): Interface ISalesOrderBuilder;
35
- procedure AddItem(ItemNo: Code[20]; Quantity: Decimal): Interface ISalesOrderBuilder;
36
- procedure AddItemWithPrice(ItemNo: Code[20]; Quantity: Decimal; UnitPrice: Decimal): Interface ISalesOrderBuilder;
37
- procedure WithShipToAddress(Address: Dictionary of [Text, Variant]): Interface ISalesOrderBuilder;
38
- procedure WithPaymentTerms(PaymentTermsCode: Code[10]): Interface ISalesOrderBuilder;
39
- procedure Build(): Code[20];
40
- }
41
-
42
- // Implementation of fluent interface
43
- codeunit 50600 "Sales Order Builder" implements ISalesOrderBuilder
44
- {
45
- var
46
- CustomerNo: Code[20];
47
- OrderDate: Date;
48
- Items: List of [Dictionary of [Text, Variant]];
49
- ShipToAddress: Dictionary of [Text, Variant];
50
- PaymentTermsCode: Code[10];
51
-
52
- procedure ForCustomer(NewCustomerNo: Code[20]): Interface ISalesOrderBuilder
53
- begin
54
- CustomerNo := NewCustomerNo;
55
- exit(this);
56
- end;
57
-
58
- procedure WithOrderDate(NewOrderDate: Date): Interface ISalesOrderBuilder
59
- begin
60
- OrderDate := NewOrderDate;
61
- exit(this);
62
- end;
63
-
64
- procedure AddItem(ItemNo: Code[20]; Quantity: Decimal): Interface ISalesOrderBuilder
65
- var
66
- ItemData: Dictionary of [Text, Variant];
67
- begin
68
- ItemData.Set('ItemNo', ItemNo);
69
- ItemData.Set('Quantity', Quantity);
70
- Items.Add(ItemData);
71
- exit(this);
72
- end;
73
-
74
- procedure AddItemWithPrice(ItemNo: Code[20]; Quantity: Decimal; UnitPrice: Decimal): Interface ISalesOrderBuilder
75
- var
76
- ItemData: Dictionary of [Text, Variant];
77
- begin
78
- ItemData.Set('ItemNo', ItemNo);
79
- ItemData.Set('Quantity', Quantity);
80
- ItemData.Set('UnitPrice', UnitPrice);
81
- Items.Add(ItemData);
82
- exit(this);
83
- end;
84
-
85
- procedure WithShipToAddress(Address: Dictionary of [Text, Variant]): Interface ISalesOrderBuilder
86
- begin
87
- ShipToAddress := Address;
88
- exit(this);
89
- end;
90
-
91
- procedure WithPaymentTerms(NewPaymentTermsCode: Code[10]): Interface ISalesOrderBuilder
92
- begin
93
- PaymentTermsCode := NewPaymentTermsCode;
94
- exit(this);
95
- end;
96
-
97
- procedure Build(): Code[20]
98
- var
99
- SalesHeader: Record "Sales Header";
100
- SalesLine: Record "Sales Line";
101
- ItemData: Dictionary of [Text, Variant];
102
- LineNo: Integer;
103
- begin
104
- if CustomerNo = '' then
105
- Error('Customer number is required');
106
-
107
- // Create sales header
108
- SalesHeader.Init();
109
- SalesHeader."Document Type" := SalesHeader."Document Type"::Order;
110
- SalesHeader."No." := '';
111
- SalesHeader.Insert(true);
112
-
113
- SalesHeader.Validate("Sell-to Customer No.", CustomerNo);
114
-
115
- if OrderDate <> 0D then
116
- SalesHeader.Validate("Order Date", OrderDate);
117
-
118
- if PaymentTermsCode <> '' then
119
- SalesHeader.Validate("Payment Terms Code", PaymentTermsCode);
120
-
121
- SalesHeader.Modify(true);
122
-
123
- // Add ship-to address if specified
124
- if ShipToAddress.Count > 0 then
125
- ApplyShipToAddress(SalesHeader, ShipToAddress);
126
-
127
- // Add items
128
- LineNo := 10000;
129
- foreach ItemData in Items do begin
130
- CreateSalesLine(SalesHeader, ItemData, LineNo);
131
- LineNo += 10000;
132
- end;
133
-
134
- exit(SalesHeader."No.");
135
- end;
136
-
137
- local procedure ApplyShipToAddress(var SalesHeader: Record "Sales Header"; Address: Dictionary of [Text, Variant])
138
- var
139
- ShipToName: Text[100];
140
- ShipToAddress1: Text[100];
141
- ShipToCity: Text[30];
142
- begin
143
- if Address.Get('Name', ShipToName) then
144
- SalesHeader.Validate("Ship-to Name", ShipToName);
145
-
146
- if Address.Get('Address', ShipToAddress1) then
147
- SalesHeader.Validate("Ship-to Address", ShipToAddress1);
148
-
149
- if Address.Get('City', ShipToCity) then
150
- SalesHeader.Validate("Ship-to City", ShipToCity);
151
-
152
- SalesHeader.Modify(true);
153
- end;
154
-
155
- local procedure CreateSalesLine(SalesHeader: Record "Sales Header"; ItemData: Dictionary of [Text, Variant]; LineNo: Integer)
156
- var
157
- SalesLine: Record "Sales Line";
158
- ItemNo: Code[20];
159
- Quantity: Decimal;
160
- UnitPrice: Decimal;
161
- begin
162
- SalesLine.Init();
163
- SalesLine."Document Type" := SalesHeader."Document Type";
164
- SalesLine."Document No." := SalesHeader."No.";
165
- SalesLine."Line No." := LineNo;
166
- SalesLine.Insert(true);
167
-
168
- if ItemData.Get('ItemNo', ItemNo) then
169
- SalesLine.Validate("No.", ItemNo);
170
-
171
- if ItemData.Get('Quantity', Quantity) then
172
- SalesLine.Validate(Quantity, Quantity);
173
-
174
- if ItemData.Get('UnitPrice', UnitPrice) then
175
- SalesLine.Validate("Unit Price", UnitPrice);
176
-
177
- SalesLine.Modify(true);
178
- end;
179
- }
180
- ```
181
-
182
- ## Result Pattern for Error Handling
183
-
184
- ```al
185
- // Result pattern for robust error handling
186
- interface IOperationResult
187
- {
188
- procedure IsSuccess(): Boolean;
189
- procedure IsFailure(): Boolean;
190
- procedure GetErrorMessage(): Text;
191
- procedure GetErrorCode(): Text[20];
192
- procedure GetData(): Dictionary of [Text, Variant];
193
- }
194
-
195
- // Implementation of operation result
196
- codeunit 50601 "Operation Result" implements IOperationResult
197
- {
198
- var
199
- Success: Boolean;
200
- ErrorMessage: Text;
201
- ErrorCode: Text[20];
202
- Data: Dictionary of [Text, Variant];
203
-
204
- procedure Initialize(IsSuccessful: Boolean; Message: Text; Code: Text[20]; ResultData: Dictionary of [Text, Variant])
205
- begin
206
- Success := IsSuccessful;
207
- ErrorMessage := Message;
208
- ErrorCode := Code;
209
- Data := ResultData;
210
- end;
211
-
212
- procedure IsSuccess(): Boolean
213
- begin
214
- exit(Success);
215
- end;
216
-
217
- procedure IsFailure(): Boolean
218
- begin
219
- exit(not Success);
220
- end;
221
-
222
- procedure GetErrorMessage(): Text
223
- begin
224
- exit(ErrorMessage);
225
- end;
226
-
227
- procedure GetErrorCode(): Text[20]
228
- begin
229
- exit(ErrorCode);
230
- end;
231
-
232
- procedure GetData(): Dictionary of [Text, Variant]
233
- begin
234
- exit(Data);
235
- end;
236
-
237
- procedure CreateSuccess(ResultData: Dictionary of [Text, Variant]): Interface IOperationResult
238
- var
239
- Result: Codeunit "Operation Result";
240
- begin
241
- Result.Initialize(true, '', '', ResultData);
242
- exit(Result);
243
- end;
244
-
245
- procedure CreateFailure(Message: Text; Code: Text[20]): Interface IOperationResult
246
- var
247
- Result: Codeunit "Operation Result";
248
- EmptyData: Dictionary of [Text, Variant];
249
- begin
250
- Result.Initialize(false, Message, Code, EmptyData);
251
- exit(Result);
252
- end;
253
- }
254
- ```
255
-
256
- ## Service Interface with Result Pattern
257
-
258
- ```al
259
- // Enhanced customer service using result pattern
260
- interface IAdvancedCustomerService
261
- {
262
- procedure CreateCustomer(CustomerData: Dictionary of [Text, Variant]): Interface IOperationResult;
263
- procedure UpdateCustomer(CustomerNo: Code[20]; UpdateData: Dictionary of [Text, Variant]): Interface IOperationResult;
264
- procedure GetCustomer(CustomerNo: Code[20]): Interface IOperationResult;
265
- procedure ValidateCustomerData(CustomerData: Dictionary of [Text, Variant]): Interface IOperationResult;
266
- }
267
-
268
- // Implementation with comprehensive error handling
269
- codeunit 50602 "Advanced Customer Service" implements IAdvancedCustomerService
270
- {
271
- procedure CreateCustomer(CustomerData: Dictionary of [Text, Variant]): Interface IOperationResult
272
- var
273
- Customer: Record Customer;
274
- ValidationResult: Interface IOperationResult;
275
- CustomerNo: Code[20];
276
- ResultData: Dictionary of [Text, Variant];
277
- OperationResult: Codeunit "Operation Result";
278
- begin
279
- // Validate input data
280
- ValidationResult := ValidateCustomerData(CustomerData);
281
- if ValidationResult.IsFailure() then
282
- exit(ValidationResult);
283
-
284
- try
285
- // Create customer
286
- Customer.Init();
287
- Customer."No." := '';
288
- Customer.Insert(true);
289
- CustomerNo := Customer."No.";
290
-
291
- // Apply data
292
- ApplyCustomerData(Customer, CustomerData);
293
-
294
- // Prepare success result
295
- ResultData.Set('CustomerNo', CustomerNo);
296
- ResultData.Set('Created', true);
297
-
298
- exit(OperationResult.CreateSuccess(ResultData));
299
-
300
- except
301
- exit(OperationResult.CreateFailure(GetLastErrorText(), 'CREATE_FAILED'));
302
- end;
303
- end;
304
-
305
- procedure UpdateCustomer(CustomerNo: Code[20]; UpdateData: Dictionary of [Text, Variant]): Interface IOperationResult
306
- var
307
- Customer: Record Customer;
308
- ValidationResult: Interface IOperationResult;
309
- ResultData: Dictionary of [Text, Variant];
310
- OperationResult: Codeunit "Operation Result";
311
- begin
312
- if not Customer.Get(CustomerNo) then
313
- exit(OperationResult.CreateFailure(StrSubstNo('Customer %1 not found', CustomerNo), 'NOT_FOUND'));
314
-
315
- // Validate update data
316
- ValidationResult := ValidateCustomerData(UpdateData);
317
- if ValidationResult.IsFailure() then
318
- exit(ValidationResult);
319
-
320
- try
321
- ApplyCustomerData(Customer, UpdateData);
322
-
323
- ResultData.Set('CustomerNo', CustomerNo);
324
- ResultData.Set('Updated', true);
325
-
326
- exit(OperationResult.CreateSuccess(ResultData));
327
-
328
- except
329
- exit(OperationResult.CreateFailure(GetLastErrorText(), 'UPDATE_FAILED'));
330
- end;
331
- end;
332
-
333
- procedure GetCustomer(CustomerNo: Code[20]): Interface IOperationResult
334
- var
335
- Customer: Record Customer;
336
- CustomerData: Dictionary of [Text, Variant];
337
- OperationResult: Codeunit "Operation Result";
338
- begin
339
- if not Customer.Get(CustomerNo) then
340
- exit(OperationResult.CreateFailure(StrSubstNo('Customer %1 not found', CustomerNo), 'NOT_FOUND'));
341
-
342
- CustomerData := ExtractCustomerData(Customer);
343
- exit(OperationResult.CreateSuccess(CustomerData));
344
- end;
345
-
346
- procedure ValidateCustomerData(CustomerData: Dictionary of [Text, Variant]): Interface IOperationResult
347
- var
348
- CustomerName: Text[100];
349
- ValidationErrors: List of [Text];
350
- ErrorMessage: Text;
351
- OperationResult: Codeunit "Operation Result";
352
- ResultData: Dictionary of [Text, Variant];
353
- begin
354
- // Validate required fields
355
- if not CustomerData.Get('Name', CustomerName) or (CustomerName = '') then
356
- ValidationErrors.Add('Customer name is required');
357
-
358
- if CustomerName <> '' then begin
359
- if StrLen(CustomerName) > 100 then
360
- ValidationErrors.Add('Customer name cannot exceed 100 characters');
361
- end;
362
-
363
- // Additional validation logic...
364
-
365
- if ValidationErrors.Count > 0 then begin
366
- ErrorMessage := JoinErrors(ValidationErrors);
367
- exit(OperationResult.CreateFailure(ErrorMessage, 'VALIDATION_FAILED'));
368
- end;
369
-
370
- ResultData.Set('Valid', true);
371
- exit(OperationResult.CreateSuccess(ResultData));
372
- end;
373
-
374
- local procedure ApplyCustomerData(var Customer: Record Customer; CustomerData: Dictionary of [Text, Variant])
375
- var
376
- CustomerName: Text[100];
377
- Address: Text[100];
378
- City: Text[30];
379
- PhoneNo: Text[30];
380
- Email: Text[80];
381
- begin
382
- if CustomerData.Get('Name', CustomerName) then
383
- Customer.Validate(Name, CustomerName);
384
-
385
- if CustomerData.Get('Address', Address) then
386
- Customer.Validate(Address, Address);
387
-
388
- if CustomerData.Get('City', City) then
389
- Customer.Validate(City, City);
390
-
391
- if CustomerData.Get('PhoneNo', PhoneNo) then
392
- Customer.Validate("Phone No.", PhoneNo);
393
-
394
- if CustomerData.Get('Email', Email) then
395
- Customer.Validate("E-Mail", Email);
396
-
397
- Customer.Modify(true);
398
- end;
399
-
400
- local procedure ExtractCustomerData(Customer: Record Customer): Dictionary of [Text, Variant]
401
- var
402
- CustomerData: Dictionary of [Text, Variant];
403
- begin
404
- CustomerData.Set('CustomerNo', Customer."No.");
405
- CustomerData.Set('Name', Customer.Name);
406
- CustomerData.Set('Address', Customer.Address);
407
- CustomerData.Set('City', Customer.City);
408
- CustomerData.Set('PostCode', Customer."Post Code");
409
- CustomerData.Set('PhoneNo', Customer."Phone No.");
410
- CustomerData.Set('Email', Customer."E-Mail");
411
- CustomerData.Set('CreditLimit', Customer."Credit Limit (LCY)");
412
- CustomerData.Set('Blocked', Customer.Blocked);
413
-
414
- exit(CustomerData);
415
- end;
416
-
417
- local procedure JoinErrors(Errors: List of [Text]): Text
418
- var
419
- ErrorMessage: Text;
420
- Error: Text;
421
- begin
422
- foreach Error in Errors do begin
423
- if ErrorMessage <> '' then
424
- ErrorMessage += '; ';
425
- ErrorMessage += Error;
426
- end;
427
-
428
- exit(ErrorMessage);
429
- end;
430
- }
431
- ```
432
-
433
- ## Versioned Interface Pattern
434
-
435
- ```al
436
- // Interface versioning for backward compatibility
437
- interface ICustomerServiceV1
438
- {
439
- procedure CreateCustomer(Name: Text[100]; Address: Text[100]): Code[20];
440
- procedure GetCustomerName(CustomerNo: Code[20]): Text[100];
441
- }
442
-
443
- interface ICustomerServiceV2 extends ICustomerServiceV1
444
- {
445
- procedure CreateCustomerAdvanced(CustomerData: Dictionary of [Text, Variant]): Interface IOperationResult;
446
- procedure GetCustomerDetails(CustomerNo: Code[20]): Dictionary of [Text, Variant];
447
- procedure UpdateCustomer(CustomerNo: Code[20]; UpdateData: Dictionary of [Text, Variant]): Interface IOperationResult;
448
- }
449
-
450
- // Implementation supporting both versions
451
- codeunit 50603 "Customer Service V2" implements ICustomerServiceV2
452
- {
453
- // V1 methods for backward compatibility
454
- procedure CreateCustomer(Name: Text[100]; Address: Text[100]): Code[20]
455
- var
456
- CustomerData: Dictionary of [Text, Variant];
457
- Result: Interface IOperationResult;
458
- CustomerNo: Code[20];
459
- begin
460
- CustomerData.Set('Name', Name);
461
- CustomerData.Set('Address', Address);
462
-
463
- Result := CreateCustomerAdvanced(CustomerData);
464
- if Result.IsSuccess() then begin
465
- Result.GetData().Get('CustomerNo', CustomerNo);
466
- exit(CustomerNo);
467
- end else begin
468
- Error(Result.GetErrorMessage());
469
- end;
470
- end;
471
-
472
- procedure GetCustomerName(CustomerNo: Code[20]): Text[100]
473
- var
474
- CustomerDetails: Dictionary of [Text, Variant];
475
- CustomerName: Text[100];
476
- begin
477
- CustomerDetails := GetCustomerDetails(CustomerNo);
478
- if CustomerDetails.Get('Name', CustomerName) then
479
- exit(CustomerName);
480
-
481
- exit('');
482
- end;
483
-
484
- // V2 methods with enhanced functionality
485
- procedure CreateCustomerAdvanced(CustomerData: Dictionary of [Text, Variant]): Interface IOperationResult
486
- var
487
- AdvancedService: Codeunit "Advanced Customer Service";
488
- begin
489
- exit(AdvancedService.CreateCustomer(CustomerData));
490
- end;
491
-
492
- procedure GetCustomerDetails(CustomerNo: Code[20]): Dictionary of [Text, Variant]
493
- var
494
- AdvancedService: Codeunit "Advanced Customer Service";
495
- Result: Interface IOperationResult;
496
- EmptyData: Dictionary of [Text, Variant];
497
- begin
498
- Result := AdvancedService.GetCustomer(CustomerNo);
499
- if Result.IsSuccess() then
500
- exit(Result.GetData())
501
- else
502
- exit(EmptyData);
503
- end;
504
-
505
- procedure UpdateCustomer(CustomerNo: Code[20]; UpdateData: Dictionary of [Text, Variant]): Interface IOperationResult
506
- var
507
- AdvancedService: Codeunit "Advanced Customer Service";
508
- begin
509
- exit(AdvancedService.UpdateCustomer(CustomerNo, UpdateData));
510
- end;
511
- }
512
- ```
513
-
514
- ## Usage Example
515
-
516
- ```al
517
- // Example of using the designed interfaces
518
- codeunit 50604 "API Usage Example"
519
- {
520
- procedure DemonstrateAPIUsage()
521
- var
522
- SalesOrderBuilder: Codeunit "Sales Order Builder";
523
- CustomerService: Codeunit "Advanced Customer Service";
524
- CustomerData: Dictionary of [Text, Variant];
525
- ShipToAddress: Dictionary of [Text, Variant];
526
- Result: Interface IOperationResult;
527
- OrderNo: Code[20];
528
- CustomerNo: Code[20];
529
- begin
530
- // Create customer using advanced service
531
- CustomerData.Set('Name', 'Example Customer');
532
- CustomerData.Set('Address', '123 Main Street');
533
- CustomerData.Set('City', 'Example City');
534
- CustomerData.Set('PhoneNo', '555-0123');
535
- CustomerData.Set('Email', 'customer@example.com');
536
-
537
- Result := CustomerService.CreateCustomer(CustomerData);
538
-
539
- if Result.IsFailure() then begin
540
- Message('Customer creation failed: %1', Result.GetErrorMessage());
541
- exit;
542
- end;
543
-
544
- Result.GetData().Get('CustomerNo', CustomerNo);
545
-
546
- // Create sales order using fluent interface
547
- ShipToAddress.Set('Name', 'Shipping Department');
548
- ShipToAddress.Set('Address', '456 Shipping Lane');
549
- ShipToAddress.Set('City', 'Warehouse City');
550
-
551
- OrderNo := SalesOrderBuilder
552
- .ForCustomer(CustomerNo)
553
- .WithOrderDate(Today)
554
- .AddItem('ITEM001', 5)
555
- .AddItemWithPrice('ITEM002', 10, 25.50)
556
- .WithShipToAddress(ShipToAddress)
557
- .WithPaymentTerms('30 DAYS')
558
- .Build();
559
-
560
- Message('Sales order %1 created successfully for customer %2', OrderNo, CustomerNo);
561
- end;
562
- }
563
- ```
564
-
565
- This comprehensive example demonstrates clean API interface design with separation of concerns, fluent interfaces, robust error handling using the result pattern, and interface versioning for backward compatibility.