simple-dynamsoft-mcp 5.0.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1061) hide show
  1. package/.env.example +89 -57
  2. package/LICENSE +21 -21
  3. package/README.md +592 -331
  4. package/data/metadata/data-manifest.json +315 -0
  5. package/data/metadata/dynamsoft_sdks.json +525 -0
  6. package/package.json +74 -53
  7. package/scripts/prebuild-rag-index.mjs +88 -0
  8. package/scripts/run-gemini-tests.mjs +25 -0
  9. package/scripts/sync-submodules.mjs +6 -0
  10. package/scripts/update-data-lock.mjs +124 -0
  11. package/scripts/update-sdk-versions.mjs +342 -0
  12. package/scripts/verify-data-lock.mjs +122 -0
  13. package/src/data-bootstrap.js +255 -0
  14. package/src/data-root.js +22 -0
  15. package/src/gemini-retry.js +148 -0
  16. package/src/index.js +1518 -1230
  17. package/src/normalizers.js +338 -274
  18. package/src/rag.js +1203 -589
  19. package/src/resource-index/builders.js +744 -0
  20. package/src/resource-index/config.js +226 -0
  21. package/src/resource-index/docs-loader.js +117 -0
  22. package/src/resource-index/paths.js +98 -0
  23. package/src/resource-index/samples.js +723 -0
  24. package/src/resource-index/uri.js +96 -0
  25. package/src/resource-index/version-policy.js +164 -0
  26. package/src/resource-index.js +536 -1220
  27. package/src/submodule-sync.js +139 -0
  28. package/code-snippet/dynamic-web-twain/UI-customization/image-editor.html +0 -1052
  29. package/code-snippet/dynamic-web-twain/UI-customization/loading-bar.html +0 -213
  30. package/code-snippet/dynamic-web-twain/UI-customization/progress-bar.html +0 -93
  31. package/code-snippet/dynamic-web-twain/UI-customization/thumbnail.html +0 -352
  32. package/code-snippet/dynamic-web-twain/UI-customization/without-UI.html +0 -111
  33. package/code-snippet/dynamic-web-twain/classification/document/SaveToFile.aspx +0 -24
  34. package/code-snippet/dynamic-web-twain/classification/document/document.html +0 -1142
  35. package/code-snippet/dynamic-web-twain/classification/tag/SaveToFile.aspx +0 -24
  36. package/code-snippet/dynamic-web-twain/classification/tag/tag.html +0 -930
  37. package/code-snippet/dynamic-web-twain/edit-image.html +0 -456
  38. package/code-snippet/dynamic-web-twain/gen-tree.py +0 -80
  39. package/code-snippet/dynamic-web-twain/input-options/download.html +0 -73
  40. package/code-snippet/dynamic-web-twain/input-options/load-from-local-drive.html +0 -60
  41. package/code-snippet/dynamic-web-twain/input-options/load-images-by-file-type.html +0 -112
  42. package/code-snippet/dynamic-web-twain/localstorage.html +0 -208
  43. package/code-snippet/dynamic-web-twain/output-options/convertToBase64.html +0 -161
  44. package/code-snippet/dynamic-web-twain/output-options/convertToBlob.html +0 -216
  45. package/code-snippet/dynamic-web-twain/output-options/save.html +0 -188
  46. package/code-snippet/dynamic-web-twain/output-options/simultaneous-scan-upload/DeleteFile.aspx +0 -33
  47. package/code-snippet/dynamic-web-twain/output-options/simultaneous-scan-upload/Download.aspx +0 -92
  48. package/code-snippet/dynamic-web-twain/output-options/simultaneous-scan-upload/SaveToFileEx.aspx +0 -37
  49. package/code-snippet/dynamic-web-twain/output-options/simultaneous-scan-upload/simultaneous-scan-upload.html +0 -351
  50. package/code-snippet/dynamic-web-twain/output-options/upload/DeleteFile.aspx +0 -33
  51. package/code-snippet/dynamic-web-twain/output-options/upload/Download.aspx +0 -92
  52. package/code-snippet/dynamic-web-twain/output-options/upload/SaveToFileEx.aspx +0 -37
  53. package/code-snippet/dynamic-web-twain/output-options/upload/upload.html +0 -365
  54. package/code-snippet/dynamic-web-twain/readme.md +0 -54
  55. package/code-snippet/dynamic-web-twain/scan/auto-remove-blank-page.html +0 -71
  56. package/code-snippet/dynamic-web-twain/scan/basic-scan.html +0 -227
  57. package/code-snippet/dynamic-web-twain/scan/capabilities/capabilities.html +0 -296
  58. package/code-snippet/dynamic-web-twain/scan/custom-data.html +0 -81
  59. package/code-snippet/dynamic-web-twain/scan/focus-scanUI-always-on-top.html +0 -59
  60. package/code-snippet/dynamic-web-twain/scan/get-custom-data.html +0 -122
  61. package/code-snippet/dynamic-web-twain/scan/image-layout.html +0 -224
  62. package/code-snippet/dynamic-web-twain/scan/mag-data.html +0 -76
  63. package/code-snippet/dynamic-web-twain/scan/read-barcode.html +0 -87
  64. package/code-snippet/dynamic-web-twain/scan/scan-one-side.html +0 -181
  65. package/code-snippet/dynamic-web-twain/scan/transfer-mode.html +0 -215
  66. package/code-snippet/dynamic-web-twain/scan/xfer-count.html +0 -83
  67. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanMultipleBarcodes/build.gradle +0 -36
  68. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanMultipleBarcodes/proguard-rules.pro +0 -21
  69. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanMultipleBarcodes/src/main/AndroidManifest.xml +0 -23
  70. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanMultipleBarcodes/src/main/java/com/dynamsoft/scanmultiplebarcodes/MainActivity.java +0 -70
  71. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanMultipleBarcodes/src/main/res/drawable/dbr_icon.xml +0 -21
  72. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanMultipleBarcodes/src/main/res/layout/activity_main.xml +0 -27
  73. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanMultipleBarcodes/src/main/res/values/colors.xml +0 -5
  74. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanMultipleBarcodes/src/main/res/values/strings.xml +0 -3
  75. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanMultipleBarcodes/src/main/res/values/themes.xml +0 -5
  76. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcode/build.gradle +0 -36
  77. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcode/proguard-rules.pro +0 -21
  78. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcode/src/main/AndroidManifest.xml +0 -24
  79. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcode/src/main/java/com/dynamsoft/scansinglebarcode/MainActivity.java +0 -87
  80. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcode/src/main/res/drawable/dbr_icon.xml +0 -21
  81. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcode/src/main/res/layout/activity_main.xml +0 -27
  82. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcode/src/main/res/values/colors.xml +0 -5
  83. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcode/src/main/res/values/strings.xml +0 -3
  84. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcode/src/main/res/values/themes.xml +0 -5
  85. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcodeKt/build.gradle +0 -43
  86. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcodeKt/proguard-rules.pro +0 -21
  87. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcodeKt/src/main/AndroidManifest.xml +0 -22
  88. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcodeKt/src/main/java/com/dynamsoft/scansinglebarcodekt/MainActivity.kt +0 -73
  89. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcodeKt/src/main/res/drawable/dbr_icon.xml +0 -21
  90. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcodeKt/src/main/res/layout/activity_main.xml +0 -27
  91. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcodeKt/src/main/res/values/colors.xml +0 -5
  92. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcodeKt/src/main/res/values/strings.xml +0 -3
  93. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScanSingleBarcodeKt/src/main/res/values/themes.xml +0 -5
  94. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/build.gradle +0 -37
  95. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/proguard-rules.pro +0 -21
  96. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/AndroidManifest.xml +0 -27
  97. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/assets/Templates/ReadAztec.json +0 -91
  98. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/assets/Templates/ReadCommon2D.json +0 -185
  99. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/assets/Templates/ReadDPM.json +0 -138
  100. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/assets/Templates/ReadDataMatrix.json +0 -178
  101. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/assets/Templates/ReadDenseBarcodes.json +0 -138
  102. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/assets/Templates/ReadDotCode.json +0 -130
  103. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/assets/Templates/ReadOneDIndustrial.json +0 -155
  104. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/assets/Templates/ReadOneDRetail.json +0 -148
  105. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/assets/Templates/ReadQR.json +0 -150
  106. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/java/com/dynamsoft/scenarioorientedsamples/HomeActivity.java +0 -98
  107. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/java/com/dynamsoft/scenarioorientedsamples/ResultActivity.java +0 -45
  108. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/java/com/dynamsoft/scenarioorientedsamples/ui/HomeItemAdapter.java +0 -77
  109. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/java/com/dynamsoft/scenarioorientedsamples/ui/HomeItemsRecyclerView.java +0 -75
  110. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/java/com/dynamsoft/scenarioorientedsamples/ui/ModeInfo.java +0 -41
  111. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/drawable/dbr_icon.xml +0 -21
  112. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/drawable/shape_home_item1.xml +0 -7
  113. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/drawable/shape_home_item2.xml +0 -7
  114. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/layout/activity_home.xml +0 -96
  115. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/layout/activity_result.xml +0 -17
  116. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/layout/layout_home_item.xml +0 -55
  117. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/values/attr_HomeItemsRecyclerView.xml +0 -9
  118. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/values/colors.xml +0 -16
  119. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/values/dimens.xml +0 -8
  120. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/values/strings.xml +0 -23
  121. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/ScenarioOrientedSamples/src/main/res/values/themes.xml +0 -5
  122. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/build.gradle +0 -45
  123. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/gradle/wrapper/gradle-wrapper.properties +0 -6
  124. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/gradle.properties +0 -21
  125. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/gradlew +0 -185
  126. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/gradlew.bat +0 -89
  127. package/code-snippet/dynamsoft-barcode-reader/android/BarcodeScannerAPISamples/settings.gradle +0 -19
  128. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/build.gradle +0 -38
  129. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/proguard-rules.pro +0 -21
  130. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/AndroidManifest.xml +0 -32
  131. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/java/com/dynamsoft/debug/CaptureActivity.java +0 -256
  132. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/java/com/dynamsoft/debug/HomeActivity.java +0 -31
  133. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/java/com/dynamsoft/debug/settings/PreferencesConstants.java +0 -12
  134. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/java/com/dynamsoft/debug/settings/SettingsActivity.java +0 -47
  135. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/drawable/arrow_back_24.xml +0 -5
  136. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/drawable/dbr_icon.xml +0 -21
  137. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/layout/activity_capture.xml +0 -54
  138. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/layout/activity_home.xml +0 -84
  139. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/layout/activity_settings.xml +0 -17
  140. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/layout/layout_appbar.xml +0 -19
  141. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/menu/main_menu.xml +0 -11
  142. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/values/arrays.xml +0 -20
  143. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/values/colors.xml +0 -11
  144. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/values/strings.xml +0 -17
  145. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/values/themes.xml +0 -19
  146. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/Debug/src/main/res/xml/root_preferences.xml +0 -28
  147. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/build.gradle +0 -41
  148. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/proguard-rules.pro +0 -21
  149. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/AndroidManifest.xml +0 -38
  150. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/assets/Templates/ReadFromAnImage.json +0 -118
  151. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/java/com/dynamsoft/dbr/decodefromanimage/MainActivity.java +0 -211
  152. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/java/com/dynamsoft/dbr/decodefromanimage/ui/ThumbnailsRecyclerView.java +0 -219
  153. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/java/com/dynamsoft/dbr/decodefromanimage/ui/resultsview/CustomizedResultsDisplayView.java +0 -142
  154. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/java/com/dynamsoft/dbr/decodefromanimage/ui/resultsview/ResultsRecyclerView.java +0 -91
  155. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/java/com/dynamsoft/dbr/decodefromanimage/utils/BitmapUtils.java +0 -74
  156. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/java/com/dynamsoft/dbr/decodefromanimage/utils/UriUtils.java +0 -116
  157. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/drawable/boundary.xml +0 -7
  158. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/drawable/dashed_border.xml +0 -10
  159. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/drawable/dbr_icon.xml +0 -21
  160. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/drawable/image_button_state.xml +0 -19
  161. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/layout/activity_main.xml +0 -155
  162. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/layout/item_result.xml +0 -41
  163. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/layout/item_thumbnail.xml +0 -23
  164. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/layout/results_view.xml +0 -60
  165. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/values/attr_customized.xml +0 -7
  166. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/values/colors.xml +0 -11
  167. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/values/strings.xml +0 -19
  168. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/values/themes.xml +0 -12
  169. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeFromAnImage/src/main/res/xml/dynamsoft_file_paths.xml +0 -6
  170. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/build.gradle +0 -38
  171. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/proguard-rules.pro +0 -21
  172. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/AndroidManifest.xml +0 -29
  173. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/java/com/dynamsoft/dbr/decodewithcameraenhancer/HomeActivity.java +0 -17
  174. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/java/com/dynamsoft/dbr/decodewithcameraenhancer/MainActivity.java +0 -121
  175. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/java/com/dynamsoft/dbr/decodewithcameraenhancer/ui/resultsview/CustomizedResultsDisplayView.java +0 -80
  176. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/java/com/dynamsoft/dbr/decodewithcameraenhancer/ui/resultsview/ResultsRecyclerView.java +0 -91
  177. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/drawable/dbr_icon.xml +0 -21
  178. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/layout/activity_home.xml +0 -84
  179. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/layout/activity_main.xml +0 -22
  180. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/layout/item_result.xml +0 -41
  181. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/layout/results_view.xml +0 -48
  182. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/values/attr_customized.xml +0 -7
  183. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/values/colors.xml +0 -8
  184. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/values/strings.xml +0 -11
  185. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/values/themes.xml +0 -18
  186. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/xml/backup_rules.xml +0 -13
  187. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraEnhancer/src/main/res/xml/data_extraction_rules.xml +0 -19
  188. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/build.gradle +0 -44
  189. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/proguard-rules.pro +0 -21
  190. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/AndroidManifest.xml +0 -31
  191. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/java/com/dynamsoft/dbr/decodewithcamerax/CameraXImageSourceAdapter.java +0 -64
  192. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/java/com/dynamsoft/dbr/decodewithcamerax/HomeActivity.java +0 -16
  193. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/java/com/dynamsoft/dbr/decodewithcamerax/MainActivity.java +0 -146
  194. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/java/com/dynamsoft/dbr/decodewithcamerax/ui/PreviewWithDrawingQuads.java +0 -94
  195. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/java/com/dynamsoft/dbr/decodewithcamerax/ui/resultsview/CustomizedResultsDisplayView.java +0 -80
  196. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/java/com/dynamsoft/dbr/decodewithcamerax/ui/resultsview/ResultsRecyclerView.java +0 -91
  197. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/res/drawable/dbr_icon.xml +0 -21
  198. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/res/layout/activity_home.xml +0 -84
  199. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/res/layout/activity_main.xml +0 -23
  200. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/res/layout/item_result.xml +0 -41
  201. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/res/layout/results_view.xml +0 -48
  202. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/res/values/attr_customized.xml +0 -7
  203. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/res/values/colors.xml +0 -8
  204. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/res/values/strings.xml +0 -10
  205. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DecodeWithCameraX/src/main/res/values/themes.xml +0 -18
  206. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/build.gradle +0 -35
  207. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/proguard-rules.pro +0 -21
  208. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/AndroidManifest.xml +0 -30
  209. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/java/com/dynamsoft/dcv/driverslicensescanner/HomeActivity.java +0 -17
  210. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/java/com/dynamsoft/dcv/driverslicensescanner/MainActivity.java +0 -138
  211. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/java/com/dynamsoft/dcv/driverslicensescanner/ParseUtil.java +0 -107
  212. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/java/com/dynamsoft/dcv/driverslicensescanner/ResultActivity.java +0 -46
  213. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/res/drawable/dbr_icon.xml +0 -21
  214. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/res/layout/activity_home.xml +0 -84
  215. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/res/layout/activity_main.xml +0 -32
  216. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/res/layout/activity_result.xml +0 -15
  217. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/res/values/colors.xml +0 -8
  218. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/res/values/strings.xml +0 -7
  219. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/DriversLicenseScanner/src/main/res/values/themes.xml +0 -12
  220. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/build.gradle +0 -47
  221. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/proguard-rules.pro +0 -21
  222. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/AndroidManifest.xml +0 -37
  223. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/home/HomeActivity.java +0 -42
  224. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/models/CameraSettings.java +0 -45
  225. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/models/DecodeSettings.java +0 -279
  226. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/models/MultiFrameCrossFilterSettings.java +0 -59
  227. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/models/ResultFeedbackSettings.java +0 -31
  228. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/models/SettingsCache.java +0 -49
  229. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/scanner/ScannerActivity.java +0 -225
  230. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/scanner/ScannerViewModel.java +0 -67
  231. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/settings/OnItemClickListener.java +0 -5
  232. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/settings/SettingsActivity.java +0 -37
  233. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/settings/SettingsFragment.java +0 -160
  234. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/settings/SettingsViewModel.java +0 -49
  235. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/settings/barcodeformat/BarcodeFormatsFragment.java +0 -65
  236. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/settings/barcodeformat/BarcodeFormatsViewModel.java +0 -61
  237. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/settings/simplifiedsettings/SimplifiedSettingsFragment.java +0 -60
  238. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/settings/simplifiedsettings/SimplifiedSettingsViewModel.java +0 -24
  239. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/CustomResultDisplayView.java +0 -56
  240. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/ExpandLinearLayout.java +0 -220
  241. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/Extension.java +0 -27
  242. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/RadioGroupWithTitle.java +0 -145
  243. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/ResultsRecyclerView.java +0 -91
  244. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/SingleLineLayout.java +0 -302
  245. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/formatselection/BarcodeFormatConstants.java +0 -80
  246. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/formatselection/FormatSelectionAdapter.java +0 -122
  247. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/formatselection/FormatSelectionView.java +0 -98
  248. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/modeselection/ItemTouchHelperInter.java +0 -7
  249. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/modeselection/ModeSelectionAdapter.java +0 -174
  250. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/modeselection/ModeSelectionView.java +0 -98
  251. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/modeselection/ModesMapConstant.java +0 -55
  252. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/java/com/dynamsoft/dbr/generalsettings/ui/modeselection/MyTouchHelperCallBack.java +0 -45
  253. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/anim/enter_pop_slide.xml +0 -12
  254. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/anim/enter_slide.xml +0 -12
  255. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/anim/exit_pop_slide.xml +0 -12
  256. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/anim/exit_slide.xml +0 -12
  257. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/arrow_back_24.xml +0 -5
  258. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/dbr_icon.xml +0 -21
  259. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/icon_right_transparent.xml +0 -4
  260. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/selector_checkbox.xml +0 -6
  261. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/selector_checkbox2.xml +0 -5
  262. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/selector_checktext_textcolor.xml +0 -5
  263. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/selector_radiobutton_selected.xml +0 -13
  264. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/selector_radiobutton_textcolor.xml +0 -5
  265. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/selector_switch_track.xml +0 -20
  266. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/shape_circle_conner_dialog.xml +0 -8
  267. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/drawable/shape_radio_group.xml +0 -8
  268. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/activity_home.xml +0 -84
  269. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/activity_main.xml +0 -41
  270. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/activity_settings.xml +0 -20
  271. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/dialog_import_template.xml +0 -44
  272. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/format_selection.xml +0 -8
  273. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/fragment_barcode_format.xml +0 -101
  274. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/fragment_settings.xml +0 -305
  275. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/fragment_simplified_settings.xml +0 -149
  276. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/item_result.xml +0 -42
  277. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/layout_appbar.xml +0 -19
  278. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/layout_expand_arrow_and_switch.xml +0 -58
  279. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/layout_expand_arrow_only.xml +0 -45
  280. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/layout_expand_switch_only.xml +0 -44
  281. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/layout_radio_group_with_title.xml +0 -46
  282. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/layout_single_line.xml +0 -33
  283. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/modes_selection_spinner_item.xml +0 -17
  284. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/modes_selection_spinner_text.xml +0 -13
  285. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/layout/results_view.xml +0 -48
  286. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/menu/menu_main.xml +0 -11
  287. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/values/array.xml +0 -14
  288. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/values/attrs_customized.xml +0 -65
  289. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/values/colors.xml +0 -23
  290. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/values/dimens.xml +0 -20
  291. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/values/spinner_items.xml +0 -10
  292. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/values/strings.xml +0 -112
  293. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/values/themes.xml +0 -29
  294. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/xml/backup_rules.xml +0 -13
  295. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/GeneralSettings/src/main/res/xml/data_extraction_rules.xml +0 -19
  296. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/build.gradle +0 -39
  297. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/proguard-rules.pro +0 -21
  298. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/AndroidManifest.xml +0 -28
  299. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/assets/Templates/ReadMultipleBarcodes.json +0 -116
  300. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/java/com/dynamsoft/dbr/locateanitemwithbarcode/LocateGrabCodeActivity.java +0 -87
  301. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/java/com/dynamsoft/dbr/locateanitemwithbarcode/LocateScanActivity.java +0 -162
  302. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/java/com/dynamsoft/dbr/locateanitemwithbarcode/LocateStartActivity.java +0 -58
  303. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/res/drawable/arrow_back_24.xml +0 -5
  304. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/res/drawable/dbr_icon.xml +0 -21
  305. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/res/drawable/ic_launcher_background.xml +0 -170
  306. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/res/layout/activity_grab_code.xml +0 -23
  307. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/res/layout/activity_locate_start.xml +0 -94
  308. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/res/layout/activity_scanner.xml +0 -34
  309. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/res/values/colors.xml +0 -35
  310. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/res/values/strings.xml +0 -10
  311. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/LocateAnItemWithBarcode/src/main/res/values/themes.xml +0 -8
  312. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/build.gradle +0 -34
  313. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/proguard-rules.pro +0 -21
  314. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/src/main/AndroidManifest.xml +0 -27
  315. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/src/main/assets/Templates/ReadGS1AIBarcode.json +0 -135
  316. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/src/main/java/com/dynamsoft/readgs1ai/HomeActivity.java +0 -17
  317. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/src/main/java/com/dynamsoft/readgs1ai/MainActivity.java +0 -182
  318. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/src/main/res/drawable/dbr_icon.xml +0 -21
  319. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/src/main/res/layout/activity_home.xml +0 -84
  320. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/src/main/res/layout/activity_main.xml +0 -19
  321. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/src/main/res/values/colors.xml +0 -8
  322. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/src/main/res/values/strings.xml +0 -7
  323. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/ReadGS1AI/src/main/res/values/themes.xml +0 -11
  324. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/build.gradle +0 -39
  325. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/proguard-rules.pro +0 -21
  326. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/AndroidManifest.xml +0 -32
  327. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/java/com/dynamsoft/dbr/tinybarcodedecoding/HomeActivity.java +0 -17
  328. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/java/com/dynamsoft/dbr/tinybarcodedecoding/MainActivity.java +0 -272
  329. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/java/com/dynamsoft/dbr/tinybarcodedecoding/UIHandler.java +0 -14
  330. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/java/com/dynamsoft/dbr/tinybarcodedecoding/ZoomSeekbarView.java +0 -191
  331. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/res/drawable/dbr_icon.xml +0 -21
  332. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/res/drawable/ic_baseline_shape.xml +0 -5
  333. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/res/drawable/shape_circle_bg.xml +0 -16
  334. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/res/layout/activity_home.xml +0 -84
  335. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/res/layout/activity_main.xml +0 -77
  336. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/res/values/colors.xml +0 -8
  337. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/res/values/strings.xml +0 -10
  338. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/res/values/themes.xml +0 -12
  339. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/res/xml/backup_rules.xml +0 -13
  340. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/TinyBarcodeDecoding/src/main/res/xml/data_extraction_rules.xml +0 -19
  341. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/build.gradle +0 -42
  342. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/gradle/wrapper/gradle-wrapper.properties +0 -6
  343. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/gradle.properties +0 -21
  344. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/gradlew +0 -185
  345. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/gradlew.bat +0 -89
  346. package/code-snippet/dynamsoft-barcode-reader/android/FoundationalAPISamples/settings.gradle +0 -18
  347. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes/AppDelegate.swift +0 -35
  348. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  349. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -36
  350. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes/Assets.xcassets/Contents.json +0 -6
  351. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes/Base.lproj/LaunchScreen.storyboard +0 -25
  352. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes/Base.lproj/Main.storyboard +0 -52
  353. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes/DynamsoftResources.bundle/Templates/ReadMultipleBarcodes.json +0 -139
  354. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes/Info.plist +0 -25
  355. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes/SceneDelegate.swift +0 -51
  356. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes/ViewController.swift +0 -161
  357. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanMultipleBarcodes/ScanMultipleBarcodes.xcodeproj/project.pbxproj +0 -422
  358. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode/AppDelegate.swift +0 -35
  359. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  360. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -36
  361. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode/Assets.xcassets/Contents.json +0 -6
  362. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode/Base.lproj/LaunchScreen.storyboard +0 -25
  363. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode/Base.lproj/Main.storyboard +0 -52
  364. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode/DynamsoftResources.bundle/Templates/ReadSingleBarcode.json +0 -105
  365. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode/Info.plist +0 -25
  366. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode/SceneDelegate.swift +0 -51
  367. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode/ViewController.swift +0 -115
  368. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcode/ScanSingleBarcode.xcodeproj/project.pbxproj +0 -422
  369. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/AppDelegate.h +0 -13
  370. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/AppDelegate.m +0 -39
  371. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  372. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -36
  373. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/Assets.xcassets/Contents.json +0 -6
  374. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/Base.lproj/LaunchScreen.storyboard +0 -25
  375. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/Base.lproj/Main.storyboard +0 -52
  376. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/DynamsoftResources.bundle/Templates/ReadSingleBarcode.json +0 -105
  377. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/Info.plist +0 -25
  378. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/SceneDelegate.h +0 -14
  379. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/SceneDelegate.m +0 -56
  380. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/ViewController.h +0 -13
  381. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/ViewController.m +0 -127
  382. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc/main.m +0 -17
  383. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeObjc/ScanSingleBarcodeObjc.xcodeproj/project.pbxproj +0 -426
  384. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeSwiftUI/ScanSingleBarcodeSwiftUI/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  385. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeSwiftUI/ScanSingleBarcodeSwiftUI/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  386. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeSwiftUI/ScanSingleBarcodeSwiftUI/Assets.xcassets/Contents.json +0 -6
  387. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeSwiftUI/ScanSingleBarcodeSwiftUI/BarcodeScannerView.swift +0 -66
  388. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeSwiftUI/ScanSingleBarcodeSwiftUI/ContentView.swift +0 -47
  389. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeSwiftUI/ScanSingleBarcodeSwiftUI/Preview Content/Preview Assets.xcassets/Contents.json +0 -6
  390. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeSwiftUI/ScanSingleBarcodeSwiftUI/ScanSingleBarcodeSwiftUIApp.swift +0 -16
  391. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScanSingleBarcodeSwiftUI/ScanSingleBarcodeSwiftUI.xcodeproj/project.pbxproj +0 -377
  392. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/AppDelegate.swift +0 -35
  393. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  394. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  395. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/Contents.json +0 -6
  396. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/dynamsoft-logo.imageset/Contents.json +0 -23
  397. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/1d_industrial.imageset/Contents.json +0 -23
  398. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/1d_retail.imageset/Contents.json +0 -23
  399. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/Contents.json +0 -6
  400. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/any_codes.imageset/Contents.json +0 -23
  401. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/aztec_code.imageset/Contents.json +0 -23
  402. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/common_2d.imageset/Contents.json +0 -23
  403. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/data_matrix.imageset/Contents.json +0 -23
  404. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/dot_code.imageset/Contents.json +0 -23
  405. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/dpm_code.imageset/Contents.json +0 -23
  406. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/high_density.imageset/Contents.json +0 -23
  407. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Assets.xcassets/icons/qr_code.imageset/Contents.json +0 -23
  408. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Base.lproj/LaunchScreen.storyboard +0 -25
  409. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Base.lproj/Main.storyboard +0 -24
  410. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/DynamsoftResources.bundle/Templates/ReadAztec.json +0 -91
  411. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/DynamsoftResources.bundle/Templates/ReadCommon1DAnd2D.json +0 -272
  412. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/DynamsoftResources.bundle/Templates/ReadCommon2D.json +0 -185
  413. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/DynamsoftResources.bundle/Templates/ReadDPM.json +0 -138
  414. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/DynamsoftResources.bundle/Templates/ReadDataMatrix.json +0 -178
  415. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/DynamsoftResources.bundle/Templates/ReadDenseBarcodes.json +0 -138
  416. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/DynamsoftResources.bundle/Templates/ReadDotCode.json +0 -130
  417. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/DynamsoftResources.bundle/Templates/ReadOneDIndustrial.json +0 -155
  418. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/DynamsoftResources.bundle/Templates/ReadOneDRetail.json +0 -148
  419. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/DynamsoftResources.bundle/Templates/ReadQR.json +0 -150
  420. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/Info.plist +0 -25
  421. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/ResultViewController.swift +0 -43
  422. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/SceneDelegate.swift +0 -57
  423. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples/ViewController.swift +0 -271
  424. package/code-snippet/dynamsoft-barcode-reader/ios/BarcodeScannerAPISamples/ScenarioOrientedSamples/ScenarioOrientedSamples.xcodeproj/project.pbxproj +0 -426
  425. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/AppDelegate.swift +0 -35
  426. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  427. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  428. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/Assets.xcassets/Contents.json +0 -6
  429. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/Assets.xcassets/dynamsoft.imageset/Contents.json +0 -23
  430. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/Base.lproj/LaunchScreen.storyboard +0 -25
  431. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/Base.lproj/Main.storyboard +0 -24
  432. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/CameraViewController.swift +0 -256
  433. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/Info.plist +0 -25
  434. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/SceneDelegate.swift +0 -57
  435. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/SettingsViewController.swift +0 -234
  436. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug/ViewController.swift +0 -111
  437. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/Debug/Debug.xcodeproj/project.pbxproj +0 -387
  438. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/AppDelegate.swift +0 -35
  439. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  440. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -35
  441. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Assets.xcassets/Buttons/Contents.json +0 -6
  442. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Assets.xcassets/Buttons/bigGallery.imageset/Contents.json +0 -23
  443. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Assets.xcassets/Buttons/bigTakePhoto.imageset/Contents.json +0 -23
  444. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Assets.xcassets/Buttons/gallery.imageset/Contents.json +0 -23
  445. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Assets.xcassets/Buttons/takePhoto.imageset/Contents.json +0 -23
  446. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Assets.xcassets/Contents.json +0 -6
  447. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Assets.xcassets/dynamsoft.imageset/Contents.json +0 -23
  448. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Base.lproj/LaunchScreen.storyboard +0 -25
  449. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Base.lproj/Main.storyboard +0 -52
  450. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Info.plist +0 -25
  451. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/Resource/ReadFromAnImage.json +0 -118
  452. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/SceneDelegate.swift +0 -51
  453. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage/ViewController.swift +0 -457
  454. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeFromAnImage/DecodeFromAnImage.xcodeproj/project.pbxproj +0 -389
  455. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/AppDelegate.swift +0 -33
  456. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  457. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  458. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/Assets.xcassets/Contents.json +0 -6
  459. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/Assets.xcassets/dynamsoft.imageset/Contents.json +0 -23
  460. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/Base.lproj/LaunchScreen.storyboard +0 -25
  461. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/Base.lproj/Main.storyboard +0 -24
  462. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/CaptureEnhancer.swift +0 -102
  463. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/CaptureViewController.swift +0 -191
  464. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/Info.plist +0 -25
  465. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/SceneDelegate.swift +0 -57
  466. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession/ViewController.swift +0 -111
  467. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithAVCaptureSession/DecodeWithAVCaptureSession.xcodeproj/project.pbxproj +0 -423
  468. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/AppDelegate.swift +0 -33
  469. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  470. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  471. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/Assets.xcassets/Contents.json +0 -6
  472. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/Assets.xcassets/dynamsoft.imageset/Contents.json +0 -23
  473. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/Base.lproj/LaunchScreen.storyboard +0 -25
  474. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/Base.lproj/Main.storyboard +0 -32
  475. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/CameraViewController.swift +0 -170
  476. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/Info.plist +0 -25
  477. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/SceneDelegate.swift +0 -57
  478. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer/ViewController.swift +0 -111
  479. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DecodeWithCameraEnhancer/DecodeWithCameraEnhancer.xcodeproj/project.pbxproj +0 -419
  480. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/AppDelegate.swift +0 -29
  481. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  482. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  483. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/Assets.xcassets/Contents.json +0 -6
  484. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/Assets.xcassets/dynamsoft.imageset/Contents.json +0 -23
  485. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/Base.lproj/LaunchScreen.storyboard +0 -25
  486. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/Base.lproj/Main.storyboard +0 -52
  487. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/CameraViewController.swift +0 -231
  488. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/Category/UIDevice+Addition.swift +0 -59
  489. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/Category/UIView+Frame.swift +0 -80
  490. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/DriverLicenseResultViewController.swift +0 -168
  491. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/Info.plist +0 -8
  492. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/Utils/Dynamsoft.swift +0 -27
  493. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner/ViewController.swift +0 -111
  494. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/DriversLicenseScanner/DriversLicenseScanner.xcodeproj/project.pbxproj +0 -447
  495. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/AppDelegate.swift +0 -35
  496. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  497. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  498. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/Assets.xcassets/Contents.json +0 -6
  499. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/Assets.xcassets/arrow-circle/Contents.json +0 -6
  500. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/Assets.xcassets/arrow-circle/arrow-circle-down.imageset/Contents.json +0 -23
  501. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/Assets.xcassets/arrow-circle/arrow-circle-up.imageset/Contents.json +0 -23
  502. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/Assets.xcassets/dynamsoft.imageset/Contents.json +0 -23
  503. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/BarcodeFormatViewController.swift +0 -249
  504. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/Base.lproj/LaunchScreen.storyboard +0 -25
  505. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/Base.lproj/Main.storyboard +0 -24
  506. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/CameraViewController.swift +0 -305
  507. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/DataModel/CustomTableViewCell.swift +0 -234
  508. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/DataModel/Mode+Extension.swift +0 -129
  509. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/DataModel/PickerPopupView.swift +0 -145
  510. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/DataModel/SettingRow.swift +0 -332
  511. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/DataModel/UIColor+Extension.swift +0 -19
  512. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/Info.plist +0 -25
  513. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/SceneDelegate.swift +0 -57
  514. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/SettingsViewController.swift +0 -589
  515. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/SimplifiedSettingsViewController.swift +0 -532
  516. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings/ViewController.swift +0 -111
  517. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/GeneralSettings/GeneralSettings.xcodeproj/project.pbxproj +0 -387
  518. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/AppDelegate.swift +0 -45
  519. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  520. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  521. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/Assets.xcassets/Contents.json +0 -6
  522. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/Assets.xcassets/dynamsoft.imageset/Contents.json +0 -23
  523. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/Assets.xcassets/scan.imageset/Contents.json +0 -23
  524. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/Base.lproj/LaunchScreen.storyboard +0 -25
  525. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/Base.lproj/Main.storyboard +0 -145
  526. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/CameraViewController.swift +0 -187
  527. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/Info.plist +0 -25
  528. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/ReadMultipleBarcodes.json +0 -116
  529. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/SceneDelegate.swift +0 -51
  530. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode/ViewController.swift +0 -55
  531. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/LocateAnItemWithBarcode/LocateAnItemWithBarcode.xcodeproj/project.pbxproj +0 -429
  532. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/AppDelegate.swift +0 -35
  533. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  534. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  535. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/Assets.xcassets/Contents.json +0 -6
  536. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/Assets.xcassets/dynamsoft.imageset/Contents.json +0 -23
  537. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/Base.lproj/LaunchScreen.storyboard +0 -25
  538. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/Base.lproj/Main.storyboard +0 -24
  539. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/CameraViewController.swift +0 -114
  540. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/DynamsoftResources.bundle/Root.plist +0 -61
  541. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/DynamsoftResources.bundle/Templates/ReadGS1AI.json +0 -135
  542. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/DynamsoftResources.bundle/en.lproj/Root.strings +0 -0
  543. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/Info.plist +0 -25
  544. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/SceneDelegate.swift +0 -57
  545. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI/ViewController.swift +0 -111
  546. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/ReadGS1AI/ReadGS1AI.xcodeproj/project.pbxproj +0 -389
  547. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/AppDelegate.swift +0 -20
  548. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  549. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  550. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Assets.xcassets/Contents.json +0 -6
  551. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Assets.xcassets/dynamsoft.imageset/Contents.json +0 -23
  552. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Assets.xcassets/icon_arrow_camera_zoom_close.imageset/Contents.json +0 -22
  553. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Base.lproj/LaunchScreen.storyboard +0 -25
  554. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Base.lproj/Main.storyboard +0 -52
  555. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/CameraViewController.swift +0 -231
  556. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Category/UIDevice+Addition.swift +0 -58
  557. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Category/UIView+Frame.swift +0 -60
  558. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Info.plist +0 -8
  559. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/TinyBarcodeDecoding-Bridging-Header.h +0 -4
  560. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Utils/Dynamsoft.swift +0 -53
  561. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/ViewController.swift +0 -111
  562. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Views/CameraSettingView.swift +0 -71
  563. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Views/CameraZoomFloatingButton.swift +0 -56
  564. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding/Views/CameraZoomSlider.swift +0 -104
  565. package/code-snippet/dynamsoft-barcode-reader/ios/FoundationalAPISamples/TinyBarcodeDecoding/TinyBarcodeDecoding.xcodeproj/project.pbxproj +0 -473
  566. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadAztec.json +0 -99
  567. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadBarcodes_Default.json +0 -113
  568. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadBarcodes_ReadRateFirst.json +0 -144
  569. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadBarcodes_SpeedFirst.json +0 -151
  570. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadBlurry1DBarcode.json +0 -149
  571. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadDPM.json +0 -83
  572. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadDenseQRCode.json +0 -105
  573. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadDotcode.json +0 -125
  574. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadInvertedBarcode.json +0 -57
  575. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadMultipleBarcode.json +0 -103
  576. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadOneDIndustrial.json +0 -133
  577. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadOneDRetail.json +0 -137
  578. package/code-snippet/dynamsoft-barcode-reader/python/CustomTemplates/ReadSingleBarcode.json +0 -174
  579. package/code-snippet/dynamsoft-barcode-reader/python/README.md +0 -82
  580. package/code-snippet/dynamsoft-barcode-reader/python/Samples/ReadDPM.json +0 -83
  581. package/code-snippet/dynamsoft-barcode-reader/python/Samples/camera.py +0 -96
  582. package/code-snippet/dynamsoft-barcode-reader/python/Samples/file.py +0 -82
  583. package/code-snippet/dynamsoft-barcode-reader/python/Samples/general_settings.py +0 -80
  584. package/code-snippet/dynamsoft-barcode-reader/python/Samples/multi_format_image_processing.py +0 -79
  585. package/code-snippet/dynamsoft-barcode-reader/python/Samples/parameter_tuner.py +0 -166
  586. package/code-snippet/dynamsoft-barcode-reader/python/Samples/read_an_image.py +0 -45
  587. package/code-snippet/dynamsoft-barcode-reader/python/Samples/read_dpm_barcode.py +0 -53
  588. package/code-snippet/dynamsoft-barcode-reader/python/Samples/read_multiple_images.py +0 -55
  589. package/code-snippet/dynamsoft-barcode-reader/python/Samples/server_side_barcode_decoder.py +0 -108
  590. package/code-snippet/dynamsoft-barcode-reader/python/Samples/show_localized_vs_decoded_barcodes.py +0 -145
  591. package/code-snippet/dynamsoft-barcode-reader/python/Samples/utils.py +0 -60
  592. package/code-snippet/dynamsoft-barcode-reader/python/Samples/video_decoding.py +0 -147
  593. package/code-snippet/dynamsoft-barcode-reader/web/README.md +0 -81
  594. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/README.md +0 -42
  595. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/README.md +0 -23
  596. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/.editorconfig +0 -16
  597. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/README.md +0 -422
  598. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/angular.json +0 -99
  599. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/package.json +0 -39
  600. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/app/app.component.css +0 -42
  601. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/app/app.component.html +0 -14
  602. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/app/app.component.ts +0 -22
  603. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts +0 -22
  604. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.css +0 -20
  605. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.html +0 -11
  606. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.ts +0 -66
  607. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.css +0 -6
  608. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.html +0 -8
  609. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.ts +0 -109
  610. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/assets/.gitkeep +0 -0
  611. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/index.html +0 -19
  612. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/main.ts +0 -5
  613. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/src/styles.css +0 -11
  614. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/tsconfig.app.json +0 -14
  615. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/tsconfig.json +0 -32
  616. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-foundational-api/tsconfig.spec.json +0 -14
  617. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/.editorconfig +0 -17
  618. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/README.md +0 -33
  619. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/angular.json +0 -100
  620. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/package.json +0 -37
  621. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/src/app/app.component.css +0 -24
  622. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/src/app/app.component.html +0 -7
  623. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/src/app/app.component.ts +0 -53
  624. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/src/app/app.config.ts +0 -8
  625. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/src/app/app.routes.ts +0 -3
  626. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/src/index.html +0 -12
  627. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/src/main.ts +0 -6
  628. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/src/styles.css +0 -16
  629. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/tsconfig.app.json +0 -15
  630. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/tsconfig.json +0 -27
  631. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/angular/scan-using-rtu-api/tsconfig.spec.json +0 -15
  632. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/README.md +0 -23
  633. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/README.md +0 -372
  634. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/App.razor +0 -12
  635. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/BlazorApp.csproj +0 -18
  636. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/MainLayout.razor +0 -16
  637. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css +0 -77
  638. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/NavMenu.razor +0 -39
  639. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css +0 -91
  640. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor +0 -26
  641. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor +0 -48
  642. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Pages/Home.razor +0 -13
  643. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Program.cs +0 -11
  644. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Properties/launchSettings.json +0 -41
  645. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/_Imports.razor +0 -10
  646. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/obj/BlazorApp.csproj.nuget.dgspec.json +0 -108
  647. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/obj/BlazorApp.csproj.nuget.g.props +0 -26
  648. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/obj/BlazorApp.csproj.nuget.g.targets +0 -12
  649. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs +0 -4
  650. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/obj/Debug/net8.0/BlazorApp.AssemblyInfo.cs +0 -22
  651. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/obj/Debug/net8.0/BlazorApp.GeneratedMSBuildEditorConfig.editorconfig +0 -53
  652. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/obj/Debug/net8.0/BlazorApp.GlobalUsings.g.cs +0 -11
  653. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/obj/project.assets.json +0 -2137
  654. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js +0 -34
  655. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js +0 -70
  656. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/index.html +0 -72
  657. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/App.razor +0 -12
  658. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/BlazorApp.csproj +0 -18
  659. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/Layout/MainLayout.razor +0 -4
  660. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/Pages/Home.razor +0 -25
  661. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/Program.cs +0 -11
  662. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/Properties/launchSettings.json +0 -41
  663. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/README.md +0 -17
  664. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/_Imports.razor +0 -10
  665. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/obj/BlazorApp.csproj.nuget.dgspec.json +0 -108
  666. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/obj/BlazorApp.csproj.nuget.g.props +0 -26
  667. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/obj/BlazorApp.csproj.nuget.g.targets +0 -12
  668. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs +0 -4
  669. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/obj/Debug/net8.0/BlazorApp.AssemblyInfo.cs +0 -22
  670. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/obj/Debug/net8.0/BlazorApp.GeneratedMSBuildEditorConfig.editorconfig +0 -41
  671. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/obj/Debug/net8.0/BlazorApp.GlobalUsings.g.cs +0 -11
  672. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/obj/project.assets.json +0 -2137
  673. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/blazor/scan-using-rtu-api/wwwroot/index.html +0 -63
  674. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/README.md +0 -22
  675. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/README.md +0 -43
  676. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/build.gradle +0 -54
  677. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/capacitor.build.gradle +0 -19
  678. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/proguard-rules.pro +0 -21
  679. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +0 -26
  680. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/AndroidManifest.xml +0 -42
  681. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/java/com/dynamsoft/dbrjs/MainActivity.java +0 -5
  682. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
  683. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -34
  684. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/layout/activity_main.xml +0 -12
  685. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -5
  686. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -5
  687. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/values/ic_launcher_background.xml +0 -4
  688. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/values/strings.xml +0 -7
  689. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/values/styles.xml +0 -22
  690. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/xml/file_paths.xml +0 -5
  691. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +0 -18
  692. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/build.gradle +0 -29
  693. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/capacitor.settings.gradle +0 -3
  694. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  695. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/gradle.properties +0 -22
  696. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/gradlew +0 -252
  697. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/gradlew.bat +0 -94
  698. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/settings.gradle +0 -5
  699. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/android/variables.gradle +0 -16
  700. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/capacitor.config.json +0 -6
  701. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/index.ts +0 -35
  702. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/ios/App/App/AppDelegate.swift +0 -49
  703. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  704. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Contents.json +0 -6
  705. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +0 -23
  706. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Base.lproj/LaunchScreen.storyboard +0 -32
  707. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Base.lproj/Main.storyboard +0 -19
  708. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Info.plist +0 -51
  709. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/ios/App/App.xcodeproj/project.pbxproj +0 -408
  710. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  711. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/ios/App/Podfile +0 -24
  712. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/package.json +0 -24
  713. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/public/index.html +0 -21
  714. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/rollup.config.mjs +0 -28
  715. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/capacitor/scan-using-rtu-api/tsconfig.json +0 -21
  716. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/README.md +0 -23
  717. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-foundational-api/README.md +0 -241
  718. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-foundational-api/action.js +0 -70
  719. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-foundational-api/index.html +0 -22
  720. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-foundational-api/main.js +0 -29
  721. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-foundational-api/package.json +0 -26
  722. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-foundational-api/style.css +0 -6
  723. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-rtu-api/README.md +0 -31
  724. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-rtu-api/action.js +0 -22
  725. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-rtu-api/index.html +0 -61
  726. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-rtu-api/main.js +0 -29
  727. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-rtu-api/package.json +0 -26
  728. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/electron/scan-using-rtu-api/style.css +0 -6
  729. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/es6/README.md +0 -18
  730. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/es6/scan-using-foundational-api/es6.html +0 -94
  731. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/es6/scan-using-rtu-api/es6.html +0 -88
  732. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/README.md +0 -23
  733. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-foundational-api/index.html +0 -21
  734. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-foundational-api/index.ts +0 -68
  735. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-foundational-api/package.json +0 -23
  736. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-foundational-api/rollup.config.mjs +0 -27
  737. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-foundational-api/tsconfig.json +0 -21
  738. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-rtu-api/README.md +0 -26
  739. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-rtu-api/index.ts +0 -35
  740. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-rtu-api/package.json +0 -20
  741. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-rtu-api/public/index.html +0 -17
  742. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-rtu-api/rollup.config.mjs +0 -28
  743. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/native-ts/scan-using-rtu-api/tsconfig.json +0 -21
  744. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/README.md +0 -23
  745. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/.eslintrc.json +0 -3
  746. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/README.md +0 -434
  747. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/app/globals.css +0 -10
  748. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/app/layout.tsx +0 -23
  749. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/app/page.css +0 -33
  750. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/app/page.tsx +0 -51
  751. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/components/ImageCapture/ImageCapture.css +0 -21
  752. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/components/ImageCapture/ImageCapture.tsx +0 -76
  753. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/components/VideoCapture/VideoCapture.css +0 -6
  754. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/components/VideoCapture/VideoCapture.tsx +0 -122
  755. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/dynamsoft.config.ts +0 -22
  756. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/next.config.mjs +0 -4
  757. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/package.json +0 -25
  758. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/next/scan-using-foundational-api/tsconfig.json +0 -26
  759. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/nuxt/README.md +0 -22
  760. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/nuxt/scan-using-foundational-api/README.md +0 -383
  761. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/nuxt/scan-using-foundational-api/app.vue +0 -74
  762. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/nuxt/scan-using-foundational-api/assets/main.css +0 -7
  763. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/nuxt/scan-using-foundational-api/components/ImageCapture.client.vue +0 -88
  764. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/nuxt/scan-using-foundational-api/components/VideoCapture.client.vue +0 -107
  765. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/nuxt/scan-using-foundational-api/dynamsoft.config.ts +0 -20
  766. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/nuxt/scan-using-foundational-api/nuxt.config.ts +0 -4
  767. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/nuxt/scan-using-foundational-api/package.json +0 -18
  768. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/nuxt/scan-using-foundational-api/tsconfig.json +0 -4
  769. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/pwa/README.md +0 -23
  770. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/pwa/scan-using-foundational-api/README.md +0 -307
  771. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/pwa/scan-using-foundational-api/helloworld-pwa.html +0 -103
  772. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/pwa/scan-using-foundational-api/helloworld-pwa.json +0 -22
  773. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/pwa/scan-using-foundational-api/service-worker.js +0 -92
  774. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/pwa/scan-using-rtu-api/README.md +0 -17
  775. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/pwa/scan-using-rtu-api/helloworld-pwa.html +0 -99
  776. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/pwa/scan-using-rtu-api/helloworld-pwa.json +0 -22
  777. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/pwa/scan-using-rtu-api/service-worker.js +0 -92
  778. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/README.md +0 -23
  779. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/README.md +0 -396
  780. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/package.json +0 -45
  781. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/public/index.html +0 -45
  782. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/public/manifest.json +0 -25
  783. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/src/App.css +0 -50
  784. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/src/App.tsx +0 -48
  785. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/src/components/ImageCapture/ImageCapture.css +0 -21
  786. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/src/components/ImageCapture/ImageCapture.tsx +0 -76
  787. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/src/components/VideoCapture/VideoCapture.css +0 -6
  788. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/src/components/VideoCapture/VideoCapture.tsx +0 -114
  789. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts +0 -20
  790. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/src/index.css +0 -11
  791. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/src/index.tsx +0 -11
  792. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/src/react-app-env.d.ts +0 -1
  793. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-foundational-api/tsconfig.json +0 -26
  794. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-rtu-api/README.md +0 -33
  795. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-rtu-api/index.html +0 -12
  796. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-rtu-api/package.json +0 -29
  797. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-rtu-api/src/App.tsx +0 -59
  798. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-rtu-api/src/main.tsx +0 -9
  799. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-rtu-api/tsconfig.app.json +0 -27
  800. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-rtu-api/tsconfig.json +0 -7
  801. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-rtu-api/tsconfig.node.json +0 -25
  802. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/react/scan-using-rtu-api/vite.config.ts +0 -7
  803. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/requirejs/README.md +0 -18
  804. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/requirejs/scan-using-foundational-api/requirejs.html +0 -98
  805. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/requirejs/scan-using-rtu-api/requirejs.html +0 -94
  806. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/README.md +0 -23
  807. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/README.md +0 -351
  808. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/index.html +0 -18
  809. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/package.json +0 -24
  810. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/src/App.svelte +0 -88
  811. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/src/components/ImageCapture.svelte +0 -95
  812. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/src/components/VideoCapture.svelte +0 -119
  813. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/src/dynamsoft.config.ts +0 -21
  814. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/src/main.ts +0 -7
  815. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/src/vite-env.d.ts +0 -2
  816. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/svelte.config.js +0 -7
  817. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/tsconfig.json +0 -20
  818. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/tsconfig.node.json +0 -10
  819. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-foundational-api/vite.config.ts +0 -8
  820. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-rtu-api/README.md +0 -33
  821. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-rtu-api/index.html +0 -12
  822. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-rtu-api/package.json +0 -24
  823. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-rtu-api/src/App.svelte +0 -55
  824. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-rtu-api/src/main.ts +0 -7
  825. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-rtu-api/src/vite-env.d.ts +0 -2
  826. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-rtu-api/svelte.config.js +0 -7
  827. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-rtu-api/tsconfig.json +0 -20
  828. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-rtu-api/tsconfig.node.json +0 -10
  829. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/svelte/scan-using-rtu-api/vite.config.ts +0 -8
  830. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/README.md +0 -30
  831. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/README.md +0 -379
  832. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/env.d.ts +0 -1
  833. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/index.html +0 -19
  834. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/package.json +0 -26
  835. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/src/App.vue +0 -72
  836. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/src/assets/main.css +0 -6
  837. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/src/components/ImageCapture.vue +0 -87
  838. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/src/components/VideoCapture.vue +0 -106
  839. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/src/dynamsoft.config.ts +0 -20
  840. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/src/main.ts +0 -6
  841. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/tsconfig.config.json +0 -9
  842. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/tsconfig.json +0 -17
  843. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-foundational-api/vite.config.ts +0 -15
  844. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-rtu-api/README.md +0 -33
  845. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-rtu-api/index.html +0 -12
  846. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-rtu-api/package.json +0 -22
  847. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-rtu-api/src/App.vue +0 -52
  848. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-rtu-api/src/main.ts +0 -4
  849. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-rtu-api/src/vite-env.d.ts +0 -1
  850. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-rtu-api/tsconfig.app.json +0 -15
  851. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-rtu-api/tsconfig.json +0 -7
  852. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-rtu-api/tsconfig.node.json +0 -25
  853. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/vue/scan-using-rtu-api/vite.config.ts +0 -7
  854. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/README.md +0 -23
  855. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/README.md +0 -13
  856. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/build.gradle +0 -45
  857. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/proguard-rules.pro +0 -21
  858. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/AndroidManifest.xml +0 -28
  859. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/assets/decodeBarcodeInVideo.html +0 -83
  860. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt +0 -105
  861. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
  862. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -30
  863. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/layout/activity_main.xml +0 -15
  864. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -5
  865. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -5
  866. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml +0 -6
  867. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values/colors.xml +0 -10
  868. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values/strings.xml +0 -3
  869. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values/themes.xml +0 -16
  870. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values-night/themes.xml +0 -16
  871. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/xml/backup_rules.xml +0 -13
  872. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/xml/data_extraction_rules.xml +0 -19
  873. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/build.gradle +0 -6
  874. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/gradle/wrapper/gradle-wrapper.properties +0 -6
  875. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/gradle.properties +0 -23
  876. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/gradlew +0 -185
  877. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/gradlew.bat +0 -89
  878. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/android/settings.gradle +0 -16
  879. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/README.md +0 -13
  880. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/AppDelegate.swift +0 -36
  881. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  882. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -13
  883. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Assets.xcassets/Contents.json +0 -6
  884. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard +0 -25
  885. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Base.lproj/Main.storyboard +0 -33
  886. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Info.plist +0 -27
  887. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/SceneDelegate.swift +0 -52
  888. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/ViewController.swift +0 -116
  889. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/html/decodeFileInVideo.html +0 -83
  890. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview.xcodeproj/project.pbxproj +0 -373
  891. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  892. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  893. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/README.md +0 -24
  894. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/build.gradle +0 -45
  895. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/proguard-rules.pro +0 -21
  896. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/AndroidManifest.xml +0 -28
  897. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/assets/decodeBarcodeInVideo.html +0 -85
  898. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt +0 -105
  899. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
  900. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -30
  901. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/layout/activity_main.xml +0 -15
  902. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -5
  903. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -5
  904. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml +0 -6
  905. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values/colors.xml +0 -10
  906. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values/strings.xml +0 -3
  907. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values/themes.xml +0 -16
  908. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values-night/themes.xml +0 -16
  909. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/xml/backup_rules.xml +0 -13
  910. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/xml/data_extraction_rules.xml +0 -19
  911. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/build.gradle +0 -6
  912. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/gradle/wrapper/gradle-wrapper.properties +0 -6
  913. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/gradle.properties +0 -23
  914. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/gradlew +0 -185
  915. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/gradlew.bat +0 -89
  916. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/android/settings.gradle +0 -16
  917. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/README.md +0 -25
  918. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/AppDelegate.swift +0 -36
  919. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  920. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -13
  921. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Assets.xcassets/Contents.json +0 -6
  922. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard +0 -25
  923. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Base.lproj/Main.storyboard +0 -33
  924. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Info.plist +0 -27
  925. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/SceneDelegate.swift +0 -52
  926. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/ViewController.swift +0 -116
  927. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html +0 -85
  928. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview.xcodeproj/project.pbxproj +0 -373
  929. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  930. package/code-snippet/dynamsoft-barcode-reader/web/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  931. package/code-snippet/dynamsoft-barcode-reader/web/hello-world.html +0 -87
  932. package/code-snippet/dynamsoft-barcode-reader/web/index.html +0 -1271
  933. package/code-snippet/dynamsoft-barcode-reader/web/read-an-image.html +0 -72
  934. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/README.md +0 -30
  935. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/batch-inventory/README.md +0 -41
  936. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/batch-inventory/index.css +0 -160
  937. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/batch-inventory/index.html +0 -157
  938. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/cart-builder/README.md +0 -43
  939. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/cart-builder/cart-builder.html +0 -272
  940. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/debug/README.md +0 -57
  941. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/debug/app.js +0 -43
  942. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/debug/package.json +0 -16
  943. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/debug/pem/ryans-cert.pem +0 -13
  944. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/debug/pem/ryans-csr.pem +0 -11
  945. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/debug/pem/ryans-key.pem +0 -15
  946. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/debug/public/index.html +0 -198
  947. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/locate-an-item-with-barcode/README.md +0 -38
  948. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/locate-an-item-with-barcode/index.html +0 -735
  949. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/pick-one-to-fill/README.md +0 -35
  950. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/pick-one-to-fill/index.css +0 -112
  951. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/pick-one-to-fill/index.html +0 -113
  952. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-a-drivers-license/README.md +0 -39
  953. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-a-drivers-license/index.html +0 -170
  954. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-a-drivers-license/read_dl.json +0 -124
  955. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-a-drivers-license/style.css +0 -154
  956. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-and-parse-GS1-AI/README.md +0 -49
  957. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/index.css +0 -180
  958. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/index.html +0 -297
  959. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/read_and_parse_gs1.json +0 -159
  960. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/convert-GS1AI-title.js +0 -386
  961. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html +0 -285
  962. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/rtu_gs1.json +0 -163
  963. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/style.css +0 -200
  964. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-vin/README.md +0 -40
  965. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-vin/index.html +0 -146
  966. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-vin/read_vin.json +0 -139
  967. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/read-vin/style.css +0 -155
  968. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-1D-Industrial/README.md +0 -40
  969. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-1D-Industrial/ReadOneDIndustrial.json +0 -155
  970. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-1D-Industrial/index.html +0 -103
  971. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-1D-Retail/README.md +0 -37
  972. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-1D-Retail/ReadOneDRetail.json +0 -148
  973. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-1D-Retail/index.html +0 -103
  974. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-and-search/README.md +0 -39
  975. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-and-search/scan-and-search.html +0 -266
  976. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-common-1D-and-2D/README.md +0 -31
  977. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-common-1D-and-2D/ReadCommon1DAnd2D.json +0 -205
  978. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-common-1D-and-2D/index.html +0 -103
  979. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-common-2D-codes/README.md +0 -37
  980. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-common-2D-codes/ReadCommon2D.json +0 -188
  981. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-common-2D-codes/index.html +0 -103
  982. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-datamatrix-code/README.md +0 -29
  983. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-datamatrix-code/ReadDataMatrix.json +0 -184
  984. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-datamatrix-code/index.html +0 -103
  985. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-from-distance/README.md +0 -36
  986. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-from-distance/ReadDistantBarcodes.json +0 -155
  987. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-from-distance/index.html +0 -103
  988. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-qr-code/README.md +0 -37
  989. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-qr-code/ReadQR.json +0 -156
  990. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/scan-qr-code/index.html +0 -103
  991. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/show-result-texts-on-the-video/README.md +0 -32
  992. package/code-snippet/dynamsoft-barcode-reader/web/scenarios/show-result-texts-on-the-video/show-result-texts-on-the-video.html +0 -179
  993. package/code-snippet/dynamsoft-document-viewer/angular/.editorconfig +0 -16
  994. package/code-snippet/dynamsoft-document-viewer/angular/README.md +0 -42
  995. package/code-snippet/dynamsoft-document-viewer/angular/angular.json +0 -104
  996. package/code-snippet/dynamsoft-document-viewer/angular/package-lock.json +0 -12264
  997. package/code-snippet/dynamsoft-document-viewer/angular/package.json +0 -39
  998. package/code-snippet/dynamsoft-document-viewer/angular/src/app/app.component.css +0 -6
  999. package/code-snippet/dynamsoft-document-viewer/angular/src/app/app.component.html +0 -7
  1000. package/code-snippet/dynamsoft-document-viewer/angular/src/app/app.component.spec.ts +0 -10
  1001. package/code-snippet/dynamsoft-document-viewer/angular/src/app/app.component.ts +0 -19
  1002. package/code-snippet/dynamsoft-document-viewer/angular/src/app/app.config.ts +0 -8
  1003. package/code-snippet/dynamsoft-document-viewer/angular/src/app/app.routes.ts +0 -3
  1004. package/code-snippet/dynamsoft-document-viewer/angular/src/app/components/viewer/viewer.component.css +0 -4
  1005. package/code-snippet/dynamsoft-document-viewer/angular/src/app/components/viewer/viewer.component.html +0 -1
  1006. package/code-snippet/dynamsoft-document-viewer/angular/src/app/components/viewer/viewer.component.spec.ts +0 -22
  1007. package/code-snippet/dynamsoft-document-viewer/angular/src/app/components/viewer/viewer.component.ts +0 -30
  1008. package/code-snippet/dynamsoft-document-viewer/angular/src/assets/.gitkeep +0 -0
  1009. package/code-snippet/dynamsoft-document-viewer/angular/src/favicon.ico +0 -0
  1010. package/code-snippet/dynamsoft-document-viewer/angular/src/index.html +0 -13
  1011. package/code-snippet/dynamsoft-document-viewer/angular/src/main.ts +0 -6
  1012. package/code-snippet/dynamsoft-document-viewer/angular/src/styles.css +0 -13
  1013. package/code-snippet/dynamsoft-document-viewer/angular/tsconfig.app.json +0 -14
  1014. package/code-snippet/dynamsoft-document-viewer/angular/tsconfig.json +0 -34
  1015. package/code-snippet/dynamsoft-document-viewer/angular/tsconfig.spec.json +0 -14
  1016. package/code-snippet/dynamsoft-document-viewer/hello-world.html +0 -49
  1017. package/code-snippet/dynamsoft-document-viewer/next/README.md +0 -42
  1018. package/code-snippet/dynamsoft-document-viewer/next/next.config.ts +0 -27
  1019. package/code-snippet/dynamsoft-document-viewer/next/package-lock.json +0 -1919
  1020. package/code-snippet/dynamsoft-document-viewer/next/package.json +0 -24
  1021. package/code-snippet/dynamsoft-document-viewer/next/public/next.svg +0 -1
  1022. package/code-snippet/dynamsoft-document-viewer/next/public/vercel.svg +0 -1
  1023. package/code-snippet/dynamsoft-document-viewer/next/src/app/components/Viewer.css +0 -4
  1024. package/code-snippet/dynamsoft-document-viewer/next/src/app/components/Viewer.tsx +0 -40
  1025. package/code-snippet/dynamsoft-document-viewer/next/src/app/favicon.ico +0 -0
  1026. package/code-snippet/dynamsoft-document-viewer/next/src/app/globals.css +0 -18
  1027. package/code-snippet/dynamsoft-document-viewer/next/src/app/layout.tsx +0 -32
  1028. package/code-snippet/dynamsoft-document-viewer/next/src/app/page.tsx +0 -19
  1029. package/code-snippet/dynamsoft-document-viewer/next/tsconfig.json +0 -27
  1030. package/code-snippet/dynamsoft-document-viewer/react-vite/README.md +0 -42
  1031. package/code-snippet/dynamsoft-document-viewer/react-vite/eslint.config.js +0 -38
  1032. package/code-snippet/dynamsoft-document-viewer/react-vite/index.html +0 -13
  1033. package/code-snippet/dynamsoft-document-viewer/react-vite/package-lock.json +0 -4880
  1034. package/code-snippet/dynamsoft-document-viewer/react-vite/package.json +0 -30
  1035. package/code-snippet/dynamsoft-document-viewer/react-vite/src/App.css +0 -18
  1036. package/code-snippet/dynamsoft-document-viewer/react-vite/src/App.jsx +0 -13
  1037. package/code-snippet/dynamsoft-document-viewer/react-vite/src/assets/react.svg +0 -1
  1038. package/code-snippet/dynamsoft-document-viewer/react-vite/src/components/Viewer.css +0 -4
  1039. package/code-snippet/dynamsoft-document-viewer/react-vite/src/components/Viewer.jsx +0 -31
  1040. package/code-snippet/dynamsoft-document-viewer/react-vite/src/index.css +0 -13
  1041. package/code-snippet/dynamsoft-document-viewer/react-vite/src/main.jsx +0 -7
  1042. package/code-snippet/dynamsoft-document-viewer/react-vite/vite.config.js +0 -19
  1043. package/code-snippet/dynamsoft-document-viewer/vue/.eslintrc.cjs +0 -15
  1044. package/code-snippet/dynamsoft-document-viewer/vue/.prettierrc.json +0 -8
  1045. package/code-snippet/dynamsoft-document-viewer/vue/README.md +0 -42
  1046. package/code-snippet/dynamsoft-document-viewer/vue/env.d.ts +0 -1
  1047. package/code-snippet/dynamsoft-document-viewer/vue/index.html +0 -13
  1048. package/code-snippet/dynamsoft-document-viewer/vue/package-lock.json +0 -3340
  1049. package/code-snippet/dynamsoft-document-viewer/vue/package.json +0 -36
  1050. package/code-snippet/dynamsoft-document-viewer/vue/public/favicon.ico +0 -0
  1051. package/code-snippet/dynamsoft-document-viewer/vue/src/App.vue +0 -29
  1052. package/code-snippet/dynamsoft-document-viewer/vue/src/Component/Viewer.vue +0 -35
  1053. package/code-snippet/dynamsoft-document-viewer/vue/src/index.html +0 -13
  1054. package/code-snippet/dynamsoft-document-viewer/vue/src/main.ts +0 -5
  1055. package/code-snippet/dynamsoft-document-viewer/vue/tsconfig.app.json +0 -13
  1056. package/code-snippet/dynamsoft-document-viewer/vue/tsconfig.json +0 -11
  1057. package/code-snippet/dynamsoft-document-viewer/vue/tsconfig.node.json +0 -17
  1058. package/code-snippet/dynamsoft-document-viewer/vue/vite.config.ts +0 -29
  1059. package/data/ddv-api-docs.json +0 -1279
  1060. package/data/dynamsoft_sdks.json +0 -243
  1061. package/data/web-twain-api-docs.json +0 -1881
package/src/index.js CHANGED
@@ -1,1230 +1,1518 @@
1
- #!/usr/bin/env node
2
- import { readFileSync, readdirSync, existsSync, statSync } from "node:fs";
3
- import { join, relative, dirname, extname } from "node:path";
4
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
- import {
7
- ListResourcesRequestSchema,
8
- ReadResourceRequestSchema,
9
- SubscribeRequestSchema,
10
- UnsubscribeRequestSchema
11
- } from "@modelcontextprotocol/sdk/types.js";
12
- import { z } from "zod";
13
- import {
14
- registry,
15
- LATEST_VERSIONS,
16
- LATEST_MAJOR,
17
- discoverDwtSamples,
18
- findCodeFilesInSample,
19
- getMobileSamplePath,
20
- getPythonSamplePath,
21
- getDwtSamplePath,
22
- getDdvSamplePath,
23
- readCodeFile,
24
- getMainCodeFile,
25
- ensureLatestMajor,
26
- parseResourceUri,
27
- parseSampleUri,
28
- getSampleIdFromUri,
29
- getSampleEntries,
30
- buildIndexData,
31
- getDisplayEdition,
32
- getDisplayPlatform,
33
- formatScopeLabel,
34
- getPinnedResources,
35
- readResourceContent,
36
- normalizePlatform,
37
- normalizeApiLevel,
38
- normalizeSampleName,
39
- normalizeProduct,
40
- normalizeEdition,
41
- resourceIndex,
42
- getWebSamplePath
43
- } from "./resource-index.js";
44
- import { searchResources, getSampleSuggestions, prewarmRagIndex, ragConfig } from "./rag.js";
45
-
46
- const pkgUrl = new URL("../package.json", import.meta.url);
47
- const pkg = JSON.parse(readFileSync(pkgUrl, "utf8"));
48
-
49
- // ============================================================================
50
- // MCP Server
51
- // ============================================================================
52
-
53
- const server = new McpServer({
54
- name: "simple-dynamsoft-mcp",
55
- version: pkg.version,
56
- description: "MCP server for latest major versions of Dynamsoft SDKs: Barcode Reader (Mobile/Server/Web), Dynamic Web TWAIN, and Document Viewer"
57
- });
58
-
59
- function formatScoreLabel(entry) {
60
- if (!Number.isFinite(entry?.score)) return "";
61
- return ` | score: ${entry.score.toFixed(3)}`;
62
- }
63
-
64
- function formatScoreNote(entry) {
65
- if (!Number.isFinite(entry?.score)) return "";
66
- return ` score=${entry.score.toFixed(3)}`;
67
- }
68
-
69
- // ============================================================================
70
- // TOOL: get_index
71
- // ============================================================================
72
-
73
- server.registerTool(
74
- "get_index",
75
- {
76
- title: "Get Index",
77
- description: "Get a compact index of products, editions, versions, and available samples/docs.",
78
- inputSchema: {}
79
- },
80
- async () => ({
81
- content: [{ type: "text", text: JSON.stringify(buildIndexData(), null, 2) }]
82
- })
83
- );
84
-
85
- // ============================================================================
86
- // TOOL: search
87
- // ============================================================================
88
-
89
- server.registerTool(
90
- "search",
91
- {
92
- title: "Search",
93
- description: "Semantic (RAG) search across docs and samples with fuzzy fallback; returns resource links for lazy loading.",
94
- inputSchema: {
95
- query: z.string().describe("Keywords to search across docs and samples."),
96
- product: z.string().optional().describe("Product: dbr, dwt, ddv"),
97
- edition: z.string().optional().describe("Edition: mobile, web, server/desktop"),
98
- platform: z.string().optional().describe("Platform: android, ios, js, python, cpp, java, dotnet, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview"),
99
- version: z.string().optional().describe("Version constraint (major or full version)"),
100
- type: z.enum(["doc", "sample", "index", "policy", "any"]).optional(),
101
- limit: z.number().int().min(1).max(10).optional().describe("Max results (default 5)")
102
- }
103
- },
104
- async ({ query, product, edition, platform, version, type, limit }) => {
105
- if (!query || !query.trim()) {
106
- return { isError: true, content: [{ type: "text", text: "Query is required." }] };
107
- }
108
- const normalizedProduct = normalizeProduct(product);
109
- const normalizedPlatform = normalizePlatform(platform);
110
- const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
111
-
112
- const policy = ensureLatestMajor({
113
- product: normalizedProduct,
114
- version,
115
- query,
116
- edition: normalizedEdition,
117
- platform: normalizedPlatform
118
- });
119
-
120
- if (!policy.ok) {
121
- return { isError: true, content: [{ type: "text", text: policy.message }] };
122
- }
123
-
124
- const maxResults = Math.min(limit || 5, 10);
125
- const topResults = await searchResources({
126
- query,
127
- product: normalizedProduct,
128
- edition: normalizedEdition,
129
- platform: normalizedPlatform,
130
- type: type || "any",
131
- limit: maxResults
132
- });
133
-
134
- if (topResults.length === 0) {
135
- return {
136
- content: [{
137
- type: "text",
138
- text: `No results for "${query}". Try get_index for available products or adjust filters.`
139
- }]
140
- };
141
- }
142
-
143
- const content = [
144
- {
145
- type: "text",
146
- text: `Found ${topResults.length} result(s) for "${query}". Read the links you need with resources/read.`
147
- }
148
- ];
149
-
150
- for (const entry of topResults) {
151
- const versionLabel = entry.version ? `v${entry.version}` : "n/a";
152
- const scopeLabel = formatScopeLabel(entry);
153
- const sampleId = entry.type === "sample" ? getSampleIdFromUri(entry.uri) : "";
154
- const sampleHint = sampleId ? ` | sample_id: ${sampleId}` : "";
155
- const scoreLabel = formatScoreLabel(entry);
156
- content.push({
157
- type: "resource_link",
158
- uri: entry.uri,
159
- name: entry.title,
160
- description: `${entry.type.toUpperCase()} | ${scopeLabel} | ${versionLabel}${scoreLabel} - ${entry.summary}${sampleHint}`,
161
- mimeType: entry.mimeType,
162
- annotations: {
163
- audience: ["assistant"],
164
- priority: 0.8
165
- }
166
- });
167
- }
168
-
169
- const plainLines = topResults.map((entry, index) => {
170
- const sampleId = entry.type === "sample" ? getSampleIdFromUri(entry.uri) : "";
171
- const action = entry.type === "sample" ? "generate_project resource_uri" : "resources/read uri";
172
- const sampleNote = sampleId ? ` sample_id=${sampleId}` : "";
173
- const scoreNote = formatScoreNote(entry);
174
- return `- ${index + 1}. ${entry.uri}${sampleNote}${scoreNote} (${action})`;
175
- });
176
- content.push({
177
- type: "text",
178
- text: ["Plain URIs (copy/paste):", ...plainLines].join("\n")
179
- });
180
-
181
- return { content };
182
- }
183
- );
184
-
185
- // ============================================================================
186
- // TOOL: list_samples
187
- // ============================================================================
188
-
189
- server.registerTool(
190
- "list_samples",
191
- {
192
- title: "List Samples",
193
- description: "List available sample IDs and URIs for a given scope.",
194
- inputSchema: {
195
- product: z.string().optional().describe("Product: dbr, dwt, ddv"),
196
- edition: z.string().optional().describe("Edition: mobile, web, server/desktop"),
197
- platform: z.string().optional().describe("Platform: android, ios, js, python, cpp, java, dotnet, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview"),
198
- limit: z.number().int().min(1).max(200).optional().describe("Max results (default 50)")
199
- }
200
- },
201
- async ({ product, edition, platform, limit }) => {
202
- const normalizedProduct = normalizeProduct(product);
203
- const normalizedPlatform = normalizePlatform(platform);
204
- const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
205
-
206
- const policy = ensureLatestMajor({
207
- product: normalizedProduct,
208
- version: undefined,
209
- query: "",
210
- edition: normalizedEdition,
211
- platform: normalizedPlatform
212
- });
213
-
214
- if (!policy.ok) {
215
- return { isError: true, content: [{ type: "text", text: policy.message }] };
216
- }
217
-
218
- const samples = getSampleEntries({
219
- product: normalizedProduct,
220
- edition: normalizedEdition,
221
- platform: normalizedPlatform
222
- });
223
-
224
- const maxResults = Math.min(limit || 50, 200);
225
- const selected = samples.slice(0, maxResults);
226
-
227
- const payload = selected.map((entry) => ({
228
- sample_id: getSampleIdFromUri(entry.uri),
229
- uri: entry.uri,
230
- product: entry.product,
231
- edition: getDisplayEdition(entry.edition),
232
- platform: getDisplayPlatform(entry.platform),
233
- version: entry.version,
234
- title: entry.title,
235
- summary: entry.summary
236
- }));
237
-
238
- const lines = [
239
- `Total matches: ${samples.length}`,
240
- `Returned: ${payload.length}`,
241
- "",
242
- "Plain URIs (copy/paste):",
243
- ...payload.map((item, index) => {
244
- const sampleNote = item.sample_id ? ` (sample_id: ${item.sample_id})` : "";
245
- return `- ${index + 1}. ${item.uri}${sampleNote}`;
246
- })
247
- ];
248
-
249
- const output = {
250
- total: samples.length,
251
- returned: payload.length,
252
- samples: payload
253
- };
254
-
255
- return {
256
- content: [{
257
- type: "text",
258
- text: `${lines.join("\n")}\n\nJSON:\n${JSON.stringify(output, null, 2)}`
259
- }]
260
- };
261
- }
262
- );
263
-
264
- // ============================================================================
265
- // TOOL: resolve_sample
266
- // ============================================================================
267
-
268
- server.registerTool(
269
- "resolve_sample",
270
- {
271
- title: "Resolve Sample",
272
- description: "Resolve a sample_id (or sample URI) to matching sample URIs.",
273
- inputSchema: {
274
- sample_id: z.string().describe("Sample identifier or sample:// URI"),
275
- product: z.string().optional().describe("Product: dbr, dwt, ddv"),
276
- edition: z.string().optional().describe("Edition: mobile, web, server/desktop"),
277
- platform: z.string().optional().describe("Platform: android, ios, js, python, cpp, java, dotnet, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview"),
278
- limit: z.number().int().min(1).max(10).optional().describe("Max results (default 5)")
279
- }
280
- },
281
- async ({ sample_id, product, edition, platform, limit }) => {
282
- if (!sample_id || !sample_id.trim()) {
283
- return { isError: true, content: [{ type: "text", text: "sample_id is required." }] };
284
- }
285
-
286
- const normalizedProduct = normalizeProduct(product);
287
- const normalizedPlatform = normalizePlatform(platform);
288
- const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
289
-
290
- const policy = ensureLatestMajor({
291
- product: normalizedProduct,
292
- version: undefined,
293
- query: sample_id,
294
- edition: normalizedEdition,
295
- platform: normalizedPlatform
296
- });
297
-
298
- if (!policy.ok) {
299
- return { isError: true, content: [{ type: "text", text: policy.message }] };
300
- }
301
-
302
- if (sample_id.includes("://")) {
303
- const parsed = parseSampleUri(sample_id);
304
- if (!parsed) {
305
- return {
306
- isError: true,
307
- content: [{
308
- type: "text",
309
- text: "sample_id looks like a URI but is not a valid sample:// URI. For doc:// URIs, use resources/read."
310
- }]
311
- };
312
- }
313
- const entry = resourceIndex.find((item) => item.uri === sample_id && item.type === "sample");
314
- if (!entry) {
315
- return {
316
- isError: true,
317
- content: [{
318
- type: "text",
319
- text: `Sample URI not found in index: ${sample_id}. Use list_samples or search.`
320
- }]
321
- };
322
- }
323
-
324
- const payload = [{
325
- sample_id: getSampleIdFromUri(entry.uri),
326
- uri: entry.uri,
327
- product: entry.product,
328
- edition: getDisplayEdition(entry.edition),
329
- platform: getDisplayPlatform(entry.platform),
330
- version: entry.version,
331
- title: entry.title,
332
- summary: entry.summary
333
- }];
334
-
335
- const output = {
336
- query: sample_id,
337
- returned: payload.length,
338
- samples: payload
339
- };
340
-
341
- return {
342
- content: [{
343
- type: "text",
344
- text: [
345
- `Found ${payload.length} match(es) for "${sample_id}".`,
346
- "Plain URIs (copy/paste):",
347
- `- 1. ${entry.uri} (sample_id: ${payload[0].sample_id})`,
348
- "",
349
- "JSON:",
350
- JSON.stringify(output, null, 2)
351
- ].join("\n")
352
- }, {
353
- type: "resource_link",
354
- uri: entry.uri,
355
- name: entry.title,
356
- description: `SAMPLE | ${formatScopeLabel(entry)} | v${entry.version}${formatScoreLabel(entry)} | sample_id: ${payload[0].sample_id}`,
357
- mimeType: entry.mimeType,
358
- annotations: {
359
- audience: ["assistant"],
360
- priority: 0.8
361
- }
362
- }]
363
- };
364
- }
365
-
366
- const sampleQuery = normalizeSampleName(sample_id);
367
- const maxResults = Math.min(limit || 5, 10);
368
-
369
- const scopedSamples = getSampleEntries({
370
- product: normalizedProduct,
371
- edition: normalizedEdition,
372
- platform: normalizedPlatform
373
- });
374
-
375
- let matches = scopedSamples.filter((entry) => {
376
- const entryId = getSampleIdFromUri(entry.uri);
377
- return entryId && entryId.toLowerCase() === sampleQuery.toLowerCase();
378
- });
379
-
380
- if (matches.length === 0) {
381
- matches = await searchResources({
382
- query: sample_id,
383
- product: normalizedProduct,
384
- edition: normalizedEdition,
385
- platform: normalizedPlatform,
386
- type: "sample",
387
- limit: maxResults
388
- });
389
- }
390
-
391
- const selected = matches.slice(0, maxResults);
392
- if (selected.length === 0) {
393
- const suggestions = await getSampleSuggestions({
394
- query: sample_id,
395
- product: normalizedProduct,
396
- edition: normalizedEdition,
397
- platform: normalizedPlatform,
398
- limit: maxResults
399
- });
400
-
401
- const content = [{
402
- type: "text",
403
- text: suggestions.length
404
- ? `No exact sample match for "${sample_id}". Related samples:`
405
- : `No samples found for "${sample_id}". Try list_samples or search.`
406
- }];
407
-
408
- for (const entry of suggestions) {
409
- const sampleId = getSampleIdFromUri(entry.uri);
410
- content.push({
411
- type: "resource_link",
412
- uri: entry.uri,
413
- name: entry.title,
414
- description: `${entry.type.toUpperCase()} | ${formatScopeLabel(entry)} | v${entry.version}${formatScoreLabel(entry)} | sample_id: ${sampleId || "n/a"}`,
415
- mimeType: entry.mimeType,
416
- annotations: {
417
- audience: ["assistant"],
418
- priority: 0.6
419
- }
420
- });
421
- }
422
-
423
- if (suggestions.length) {
424
- const plainLines = suggestions.map((entry, index) => {
425
- const sampleId = getSampleIdFromUri(entry.uri);
426
- const sampleNote = sampleId ? ` (sample_id: ${sampleId})` : "";
427
- const scoreNote = formatScoreNote(entry);
428
- return `- ${index + 1}. ${entry.uri}${sampleNote}${scoreNote}`;
429
- });
430
- content.push({
431
- type: "text",
432
- text: ["Plain URIs (copy/paste):", ...plainLines].join("\n")
433
- });
434
- }
435
-
436
- return { isError: true, content };
437
- }
438
-
439
- const payload = selected.map((entry) => ({
440
- sample_id: getSampleIdFromUri(entry.uri),
441
- uri: entry.uri,
442
- product: entry.product,
443
- edition: getDisplayEdition(entry.edition),
444
- platform: getDisplayPlatform(entry.platform),
445
- version: entry.version,
446
- title: entry.title,
447
- summary: entry.summary
448
- }));
449
-
450
- const lines = [
451
- `Found ${selected.length} match(es) for "${sample_id}".`,
452
- "Plain URIs (copy/paste):",
453
- ...selected.map((entry, index) => {
454
- const sampleId = getSampleIdFromUri(entry.uri);
455
- const sampleNote = sampleId ? ` (sample_id: ${sampleId})` : "";
456
- const scoreNote = formatScoreNote(entry);
457
- return `- ${index + 1}. ${entry.uri}${sampleNote}${scoreNote}`;
458
- })
459
- ];
460
-
461
- const output = {
462
- query: sample_id,
463
- returned: payload.length,
464
- samples: payload
465
- };
466
-
467
- const content = [{
468
- type: "text",
469
- text: `${lines.join("\n")}\n\nJSON:\n${JSON.stringify(output, null, 2)}`
470
- }];
471
-
472
- for (const entry of selected) {
473
- const sampleId = getSampleIdFromUri(entry.uri);
474
- content.push({
475
- type: "resource_link",
476
- uri: entry.uri,
477
- name: entry.title,
478
- description: `${entry.type.toUpperCase()} | ${formatScopeLabel(entry)} | v${entry.version}${formatScoreLabel(entry)} | sample_id: ${sampleId || "n/a"}`,
479
- mimeType: entry.mimeType,
480
- annotations: {
481
- audience: ["assistant"],
482
- priority: 0.8
483
- }
484
- });
485
- }
486
-
487
- return { content };
488
- }
489
- );
490
-
491
- // ============================================================================
492
- // TOOL: resolve_version
493
- // ============================================================================
494
-
495
- server.registerTool(
496
- "resolve_version",
497
- {
498
- title: "Resolve Version",
499
- description: "Resolve a concrete latest-major version for a product/edition/platform.",
500
- inputSchema: {
501
- product: z.string().describe("Product: dbr, dwt, or ddv"),
502
- edition: z.string().optional().describe("Edition: mobile, web, server/desktop"),
503
- platform: z.string().optional().describe("Platform: android, ios, js, python, cpp, java, dotnet, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview"),
504
- constraint: z.string().optional().describe("Version constraint, e.g., latest, 11.x, 10"),
505
- feature: z.string().optional().describe("Optional feature hint")
506
- }
507
- },
508
- async ({ product, edition, platform, constraint, feature }) => {
509
- const normalizedProduct = normalizeProduct(product);
510
- const normalizedPlatform = normalizePlatform(platform);
511
- const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
512
-
513
- if (!["dbr", "dwt", "ddv"].includes(normalizedProduct)) {
514
- return {
515
- isError: true,
516
- content: [{ type: "text", text: `Unknown product "${product}". Use dbr, dwt, or ddv.` }]
517
- };
518
- }
519
-
520
- const policy = ensureLatestMajor({
521
- product: normalizedProduct,
522
- version: constraint,
523
- query: feature,
524
- edition: normalizedEdition,
525
- platform: normalizedPlatform
526
- });
527
-
528
- if (!policy.ok) {
529
- return { isError: true, content: [{ type: "text", text: policy.message }] };
530
- }
531
-
532
- if (normalizedProduct === "dbr") {
533
- if (!normalizedEdition) {
534
- const lines = [
535
- "# DBR Version Resolution",
536
- `- Latest major: v${LATEST_MAJOR.dbr}`,
537
- `- Mobile: ${LATEST_VERSIONS.dbr.mobile}`,
538
- `- Web: ${LATEST_VERSIONS.dbr.web}`,
539
- `- Server/Desktop: ${LATEST_VERSIONS.dbr.server}`,
540
- "",
541
- "Specify edition/platform to resolve a single version."
542
- ];
543
- return { content: [{ type: "text", text: lines.join("\n") }] };
544
- }
545
-
546
- const resolved = LATEST_VERSIONS.dbr[normalizedEdition];
547
- if (!resolved) {
548
- return {
549
- isError: true,
550
- content: [{ type: "text", text: `Edition "${normalizedEdition}" is not hosted by this MCP server.` }]
551
- };
552
- }
553
-
554
- const displayPlatform = normalizedPlatform === "web" ? "js" : normalizedPlatform;
555
- const lines = [
556
- "# DBR Version Resolution",
557
- `- Edition: ${normalizedEdition}`,
558
- displayPlatform ? `- Platform: ${displayPlatform}` : "",
559
- `- Latest major: v${LATEST_MAJOR.dbr}`,
560
- `- Resolved version: ${resolved}`
561
- ].filter(Boolean);
562
-
563
- return { content: [{ type: "text", text: lines.join("\n") }] };
564
- }
565
-
566
- if (normalizedProduct === "dwt") {
567
- const lines = [
568
- "# DWT Version Resolution",
569
- `- Latest major: v${LATEST_MAJOR.dwt}`,
570
- `- Resolved version: ${LATEST_VERSIONS.dwt.web}`
571
- ];
572
- return { content: [{ type: "text", text: lines.join("\n") }] };
573
- }
574
-
575
- const lines = [
576
- "# DDV Version Resolution",
577
- `- Latest major: v${LATEST_MAJOR.ddv}`,
578
- `- Resolved version: ${LATEST_VERSIONS.ddv.web}`
579
- ];
580
-
581
- return { content: [{ type: "text", text: lines.join("\n") }] };
582
- }
583
- );
584
-
585
- // ============================================================================
586
- // TOOL: get_quickstart
587
- // ============================================================================
588
-
589
- server.registerTool(
590
- "get_quickstart",
591
- {
592
- title: "Get Quickstart",
593
- description: "Opinionated quickstart for a target product/edition/platform.",
594
- inputSchema: {
595
- product: z.string().describe("Product: dbr, dwt, or ddv"),
596
- edition: z.string().optional().describe("Edition: mobile, web, server/desktop"),
597
- platform: z.string().optional().describe("Platform: android, ios, js, python, cpp, java, dotnet, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview"),
598
- language: z.string().optional().describe("Language hint: kotlin, java, swift, js, ts, python, cpp, csharp, react, vue, angular"),
599
- version: z.string().optional().describe("Version constraint"),
600
- api_level: z.string().optional().describe("API level: high-level or low-level (mobile only)"),
601
- scenario: z.string().optional().describe("Scenario: camera, image, single, multiple, react, etc.")
602
- }
603
- },
604
- async ({ product, edition, platform, language, version, api_level, scenario }) => {
605
- const normalizedProduct = normalizeProduct(product);
606
- const normalizedPlatform = normalizePlatform(platform);
607
- const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
608
- const policy = ensureLatestMajor({
609
- product: normalizedProduct,
610
- version,
611
- query: scenario,
612
- edition: normalizedEdition,
613
- platform: normalizedPlatform
614
- });
615
-
616
- if (!policy.ok) {
617
- return { isError: true, content: [{ type: "text", text: policy.message }] };
618
- }
619
-
620
- if (normalizedProduct === "dbr" && normalizedEdition === "server") {
621
- const sdkEntry = registry.sdks["dbr-python"];
622
- const scenarioLower = (scenario || "").toLowerCase();
623
- const sampleName = scenarioLower.includes("video") ? "video_decoding" : "read_an_image";
624
- const samplePath = getPythonSamplePath(sampleName);
625
-
626
- if (!existsSync(samplePath)) {
627
- return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName}.` }] };
628
- }
629
-
630
- const content = readCodeFile(samplePath);
631
-
632
- return {
633
- content: [{
634
- type: "text",
635
- text: [
636
- "# Quick Start: DBR Python",
637
- "",
638
- `**SDK Version:** ${sdkEntry.version}`,
639
- `**Trial License:** \`${registry.trial_license}\``,
640
- "",
641
- "## Install",
642
- "```bash",
643
- sdkEntry.platforms.python.installation.pip,
644
- "```",
645
- "",
646
- `## ${sampleName}.py`,
647
- "```python",
648
- content,
649
- "```",
650
- "",
651
- `Docs: ${sdkEntry.platforms.python.docs["user-guide"]}`
652
- ].join("\n")
653
- }]
654
- };
655
- }
656
-
657
- if (normalizedProduct === "dbr" && normalizedEdition === "web") {
658
- const sdkEntry = registry.sdks["dbr-web"];
659
- const scenarioLower = (scenario || "").toLowerCase();
660
- const sampleName = scenarioLower.includes("image") ? "read-an-image" : "hello-world";
661
- const samplePath = getWebSamplePath("root", sampleName);
662
-
663
- if (!samplePath || !existsSync(samplePath)) {
664
- return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName}.` }] };
665
- }
666
-
667
- const content = readCodeFile(samplePath);
668
-
669
- return {
670
- content: [{
671
- type: "text",
672
- text: [
673
- "# Quick Start: DBR Web",
674
- "",
675
- `**SDK Version:** ${sdkEntry.version}`,
676
- `**Trial License:** \`${registry.trial_license}\``,
677
- "",
678
- "## Option 1: CDN",
679
- "```html",
680
- `<script src="${sdkEntry.platforms.web.installation.cdn}"></script>`,
681
- "```",
682
- "",
683
- "## Option 2: NPM",
684
- "```bash",
685
- sdkEntry.platforms.web.installation.npm,
686
- "```",
687
- "",
688
- `## ${sampleName}.html`,
689
- "```html",
690
- content,
691
- "```",
692
- "",
693
- `Docs: ${sdkEntry.platforms.web.docs["user-guide"]}`
694
- ].join("\n")
695
- }]
696
- };
697
- }
698
-
699
- if (normalizedProduct === "dbr" && normalizedEdition === "mobile") {
700
- const sdkEntry = registry.sdks["dbr-mobile"];
701
- const targetPlatform = normalizedPlatform || "android";
702
- const level = normalizeApiLevel(api_level || scenario);
703
- const scenarioLower = (scenario || "").toLowerCase();
704
-
705
- let sampleName = "ScanSingleBarcode";
706
- if (scenarioLower.includes("multiple") || scenarioLower.includes("batch")) sampleName = "ScanMultipleBarcodes";
707
- else if (scenarioLower.includes("image") || scenarioLower.includes("file")) sampleName = "DecodeFromAnImage";
708
-
709
- if (level === "low-level") {
710
- if (sampleName === "ScanSingleBarcode" || sampleName === "ScanMultipleBarcodes") {
711
- sampleName = "DecodeWithCameraEnhancer";
712
- }
713
- }
714
-
715
- const samplePath = getMobileSamplePath(targetPlatform, level, sampleName);
716
- if (!existsSync(samplePath)) {
717
- return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName}.` }] };
718
- }
719
-
720
- const mainFile = getMainCodeFile(targetPlatform, samplePath);
721
- if (!mainFile) {
722
- return { isError: true, content: [{ type: "text", text: "Could not find main code file." }] };
723
- }
724
-
725
- const content = readCodeFile(mainFile.path);
726
- const langExt = mainFile.filename.split(".").pop();
727
-
728
- let deps = "";
729
- if (targetPlatform === "android") {
730
- deps = `
731
- ## Dependencies
732
-
733
- **Project build.gradle**
734
- \`\`\`groovy
735
- allprojects {
736
- repositories {
737
- google()
738
- mavenCentral()
739
- maven { url "${registry.maven_url}" }
740
- }
741
- }
742
- \`\`\`
743
-
744
- **App build.gradle**
745
- \`\`\`groovy
746
- dependencies {
747
- implementation 'com.dynamsoft:barcodereaderbundle:${sdkEntry.version}'
748
- }
749
- \`\`\`
750
-
751
- **AndroidManifest.xml**
752
- \`\`\`xml
753
- <uses-permission android:name="android.permission.CAMERA" />
754
- \`\`\``;
755
- } else {
756
- deps = `
757
- ## Dependencies
758
-
759
- **Podfile**
760
- \`\`\`ruby
761
- platform :ios, '11.0'
762
- use_frameworks!
763
-
764
- target 'YourApp' do
765
- pod 'DynamsoftBarcodeReaderBundle'
766
- end
767
- \`\`\`
768
-
769
- **Info.plist**
770
- \`\`\`xml
771
- <key>NSCameraUsageDescription</key>
772
- <string>Camera access for barcode scanning</string>
773
- \`\`\``;
774
- }
775
-
776
- const output = [
777
- "# Quick Start: DBR Mobile",
778
- "",
779
- `**SDK Version:** ${sdkEntry.version}`,
780
- `**API Level:** ${level}`,
781
- `**Trial License:** \`${registry.trial_license}\``,
782
- "",
783
- deps,
784
- "",
785
- `## ${mainFile.filename}`,
786
- "```" + langExt,
787
- content,
788
- "```",
789
- "",
790
- `Docs: ${sdkEntry.platforms[targetPlatform]?.docs[level]?.["user-guide"] || "N/A"}`
791
- ];
792
-
793
- return { content: [{ type: "text", text: output.join("\n") }] };
794
- }
795
-
796
- if (normalizedProduct === "dwt") {
797
- const sdkEntry = registry.sdks["dwt"];
798
- const samplePath = getDwtSamplePath("scan", "basic-scan");
799
-
800
- if (!samplePath || !existsSync(samplePath)) {
801
- return { isError: true, content: [{ type: "text", text: "Sample not found: basic-scan." }] };
802
- }
803
-
804
- const content = readCodeFile(samplePath);
805
-
806
- return {
807
- content: [{
808
- type: "text",
809
- text: [
810
- "# Quick Start: Dynamic Web TWAIN",
811
- "",
812
- `**SDK Version:** ${sdkEntry.version}`,
813
- `**Trial License:** \`${registry.trial_license}\``,
814
- "",
815
- "## Option 1: CDN",
816
- "```html",
817
- `<script src="${sdkEntry.platforms.web.installation.cdn}"></script>`,
818
- "```",
819
- "",
820
- "## Option 2: NPM",
821
- "```bash",
822
- sdkEntry.platforms.web.installation.npm,
823
- "```",
824
- "",
825
- "## basic-scan.html",
826
- "```html",
827
- content,
828
- "```",
829
- "",
830
- `Docs: ${sdkEntry.platforms.web.docs["user-guide"]}`
831
- ].join("\n")
832
- }]
833
- };
834
- }
835
-
836
- if (normalizedProduct === "ddv") {
837
- const sdkEntry = registry.sdks["ddv"];
838
- const hint = `${scenario || ""} ${language || ""}`.toLowerCase();
839
- let sampleName = "hello-world";
840
-
841
- if (hint.includes("react")) sampleName = "react-vite";
842
- else if (hint.includes("vue")) sampleName = "vue";
843
- else if (hint.includes("angular")) sampleName = "angular";
844
- else if (hint.includes("next")) sampleName = "next";
845
-
846
- const samplePath = getDdvSamplePath(sampleName);
847
- if (!samplePath || !existsSync(samplePath)) {
848
- return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName}.` }] };
849
- }
850
-
851
- let sampleContent = "";
852
- let fence = "text";
853
- const stat = statSync(samplePath);
854
- if (stat.isDirectory()) {
855
- const readmePath = join(samplePath, "README.md");
856
- if (existsSync(readmePath)) {
857
- sampleContent = readCodeFile(readmePath);
858
- fence = "markdown";
859
- } else {
860
- const codeFiles = findCodeFilesInSample(samplePath);
861
- if (codeFiles.length > 0) {
862
- const preferredNames = [
863
- "main.tsx",
864
- "main.jsx",
865
- "main.ts",
866
- "main.js",
867
- "App.tsx",
868
- "App.jsx",
869
- "App.vue"
870
- ];
871
- const preferred = codeFiles.find((file) => preferredNames.includes(file.filename)) || codeFiles[0];
872
- sampleContent = readCodeFile(preferred.path);
873
- fence = preferred.extension ? preferred.extension.replace(".", "") : "text";
874
- } else {
875
- sampleContent = "Sample found, but no code files detected.";
876
- }
877
- }
878
- } else {
879
- sampleContent = readCodeFile(samplePath);
880
- fence = extname(samplePath).replace(".", "") || "text";
881
- }
882
-
883
- return {
884
- content: [{
885
- type: "text",
886
- text: [
887
- "# Quick Start: Dynamsoft Document Viewer",
888
- "",
889
- `**SDK Version:** ${sdkEntry.version}`,
890
- `**Trial License:** \`${registry.trial_license}\``,
891
- "",
892
- "## Option 1: CDN",
893
- "```html",
894
- `<script src="${sdkEntry.platforms.web.installation.cdn}"></script>`,
895
- "```",
896
- "",
897
- "## Option 2: NPM",
898
- "```bash",
899
- sdkEntry.platforms.web.installation.npm,
900
- "```",
901
- "",
902
- `## ${sampleName}`,
903
- "```" + fence,
904
- sampleContent,
905
- "```",
906
- "",
907
- `Docs: ${sdkEntry.platforms.web.docs["user-guide"]}`
908
- ].join("\n")
909
- }]
910
- };
911
- }
912
-
913
- return {
914
- isError: true,
915
- content: [{ type: "text", text: "Unsupported product/edition for quickstart." }]
916
- };
917
- }
918
- );
919
-
920
- // ============================================================================
921
- // TOOL: generate_project
922
- // ============================================================================
923
-
924
- server.registerTool(
925
- "generate_project",
926
- {
927
- title: "Generate Project",
928
- description: "Generate a project structure from a sample and return files inline (no zip/download).",
929
- inputSchema: {
930
- product: z.string().describe("Product: dbr, dwt, or ddv"),
931
- edition: z.string().optional().describe("Edition: mobile, web, server/desktop"),
932
- platform: z.string().optional().describe("Platform: android, ios, js, python, cpp, java, dotnet, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview"),
933
- version: z.string().optional().describe("Version constraint"),
934
- sample_id: z.string().optional().describe("Sample identifier (name or path)"),
935
- resource_uri: z.string().optional().describe("Resource URI returned by search"),
936
- api_level: z.string().optional().describe("API level: high-level or low-level (mobile only)")
937
- }
938
- },
939
- async ({ product, edition, platform, version, sample_id, resource_uri, api_level }) => {
940
- const normalizedProduct = normalizeProduct(product);
941
- const normalizedPlatform = normalizePlatform(platform);
942
- const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
943
-
944
- const policy = ensureLatestMajor({
945
- product: normalizedProduct,
946
- version,
947
- query: sample_id,
948
- edition: normalizedEdition,
949
- platform: normalizedPlatform
950
- });
951
-
952
- if (!policy.ok) {
953
- return { isError: true, content: [{ type: "text", text: policy.message }] };
954
- }
955
-
956
- let sampleInfo = null;
957
- if (resource_uri) {
958
- const parsed = parseResourceUri(resource_uri);
959
- if (!parsed) {
960
- return {
961
- isError: true,
962
- content: [{
963
- type: "text",
964
- text: "resource_uri must be a sample://... URI. Use search or list_samples to get a valid sample URI."
965
- }]
966
- };
967
- }
968
- if (parsed.scheme !== "sample") {
969
- return {
970
- isError: true,
971
- content: [{
972
- type: "text",
973
- text: "resource_uri must use the sample:// scheme. For doc:// URIs, use resources/read instead."
974
- }]
975
- };
976
- }
977
- sampleInfo = parseSampleUri(resource_uri);
978
- if (!sampleInfo) {
979
- return {
980
- isError: true,
981
- content: [{
982
- type: "text",
983
- text: "Invalid sample URI format. Use search or list_samples to obtain a valid sample:// URI."
984
- }]
985
- };
986
- }
987
- }
988
-
989
- let samplePath = null;
990
- let sampleLabel = "";
991
- let sampleQuery = "";
992
-
993
- if (sampleInfo) {
994
- sampleLabel = sampleInfo.sampleName || resource_uri;
995
- sampleQuery = sampleInfo.sampleName || sample_id || "";
996
- if (sampleInfo.product === "dbr" && sampleInfo.edition === "mobile") {
997
- samplePath = getMobileSamplePath(sampleInfo.platform, sampleInfo.level, sampleInfo.sampleName);
998
- } else if (sampleInfo.product === "dbr" && sampleInfo.edition === "web") {
999
- samplePath = getWebSamplePath(sampleInfo.category, sampleInfo.sampleName);
1000
- } else if (sampleInfo.product === "dbr" && (sampleInfo.edition === "python" || sampleInfo.edition === "server")) {
1001
- samplePath = getPythonSamplePath(sampleInfo.sampleName);
1002
- } else if (sampleInfo.product === "dwt") {
1003
- samplePath = getDwtSamplePath(sampleInfo.category, sampleInfo.sampleName);
1004
- } else if (sampleInfo.product === "ddv") {
1005
- samplePath = getDdvSamplePath(sampleInfo.sampleName);
1006
- }
1007
- } else if (sample_id) {
1008
- if (!normalizedProduct || !normalizedEdition) {
1009
- return {
1010
- isError: true,
1011
- content: [{
1012
- type: "text",
1013
- text: "Specify product/edition or provide resource_uri. Use list_samples or get_index to discover valid scopes."
1014
- }]
1015
- };
1016
- }
1017
-
1018
- const level = normalizeApiLevel(api_level);
1019
- const sampleName = normalizeSampleName(sample_id);
1020
- sampleLabel = sampleName;
1021
- sampleQuery = sampleName;
1022
-
1023
- if (normalizedProduct === "dbr" && normalizedEdition === "mobile") {
1024
- const targetPlatform = normalizedPlatform || "android";
1025
- const primaryPath = getMobileSamplePath(targetPlatform, level, sampleName);
1026
- const altLevel = level === "high-level" ? "low-level" : "high-level";
1027
- const alternatePath = getMobileSamplePath(targetPlatform, altLevel, sampleName);
1028
- samplePath = existsSync(primaryPath) ? primaryPath : (existsSync(alternatePath) ? alternatePath : null);
1029
- } else if (normalizedProduct === "dbr" && normalizedEdition === "web") {
1030
- samplePath = getWebSamplePath(undefined, sampleName);
1031
- } else if (normalizedProduct === "dbr" && normalizedEdition === "server") {
1032
- samplePath = getPythonSamplePath(sampleName);
1033
- } else if (normalizedProduct === "dwt") {
1034
- const categories = discoverDwtSamples();
1035
- let foundCategory = "";
1036
- for (const [category, samples] of Object.entries(categories)) {
1037
- if (samples.includes(sampleName)) {
1038
- foundCategory = category;
1039
- break;
1040
- }
1041
- }
1042
- samplePath = foundCategory ? getDwtSamplePath(foundCategory, sampleName) : null;
1043
- } else if (normalizedProduct === "ddv") {
1044
- samplePath = getDdvSamplePath(sampleName);
1045
- }
1046
- } else {
1047
- return { isError: true, content: [{ type: "text", text: "Provide sample_id or resource_uri." }] };
1048
- }
1049
-
1050
- if (!samplePath || !existsSync(samplePath)) {
1051
- const suggestions = await getSampleSuggestions({
1052
- query: sampleQuery,
1053
- product: normalizedProduct,
1054
- edition: normalizedEdition,
1055
- platform: normalizedPlatform,
1056
- limit: 5
1057
- });
1058
-
1059
- const content = [{
1060
- type: "text",
1061
- text: [
1062
- `Sample not found for "${sampleLabel}".`,
1063
- suggestions.length ? "Related samples:" : "No related samples found. Try search or get_index."
1064
- ].join("\n")
1065
- }];
1066
-
1067
- for (const entry of suggestions) {
1068
- const versionLabel = entry.version ? `v${entry.version}` : "n/a";
1069
- const scopeLabel = formatScopeLabel(entry);
1070
- const sampleId = entry.type === "sample" ? getSampleIdFromUri(entry.uri) : "";
1071
- const sampleHint = sampleId ? ` | sample_id: ${sampleId}` : "";
1072
- content.push({
1073
- type: "resource_link",
1074
- uri: entry.uri,
1075
- name: entry.title,
1076
- description: `${entry.type.toUpperCase()} | ${scopeLabel} | ${versionLabel} - ${entry.summary}${sampleHint}`,
1077
- mimeType: entry.mimeType,
1078
- annotations: {
1079
- audience: ["assistant"],
1080
- priority: 0.6
1081
- }
1082
- });
1083
- }
1084
-
1085
- if (suggestions.length) {
1086
- const plainLines = suggestions.map((entry, index) => {
1087
- const sampleId = entry.type === "sample" ? getSampleIdFromUri(entry.uri) : "";
1088
- const sampleNote = sampleId ? ` sample_id=${sampleId}` : "";
1089
- return `- ${index + 1}. ${entry.uri}${sampleNote}`;
1090
- });
1091
- content.push({
1092
- type: "text",
1093
- text: ["Plain URIs (copy/paste):", ...plainLines].join("\n")
1094
- });
1095
- }
1096
-
1097
- return { isError: true, content };
1098
- }
1099
-
1100
- const textExtensions = [
1101
- ".java", ".kt", ".swift", ".m", ".h", ".xml", ".gradle", ".properties",
1102
- ".pro", ".json", ".plist", ".storyboard", ".xib", ".gitignore", ".md",
1103
- ".js", ".jsx", ".ts", ".tsx", ".vue", ".cjs", ".html", ".css"
1104
- ];
1105
-
1106
- const files = [];
1107
- const stat = statSync(samplePath);
1108
- const rootDir = stat.isDirectory() ? samplePath : dirname(samplePath);
1109
-
1110
- function addFile(fullPath) {
1111
- const ext = "." + fullPath.split(".").pop();
1112
- const baseName = fullPath.split(/[\\/]/).pop();
1113
- if (!textExtensions.includes(ext) && !["gradlew", "Podfile"].includes(baseName)) {
1114
- return;
1115
- }
1116
- try {
1117
- const content = readFileSync(fullPath, "utf-8");
1118
- const normalized = content.replace(/\r\n/g, "\n");
1119
- files.push({
1120
- path: relative(rootDir, fullPath),
1121
- content: normalized,
1122
- ext: ext.replace(".", "")
1123
- });
1124
- } catch (e) {
1125
- // Ignore binary or unreadable files
1126
- }
1127
- }
1128
-
1129
- function walk(dir) {
1130
- const entries = readdirSync(dir);
1131
- for (const entry of entries) {
1132
- if (["build", ".gradle", ".idea", ".git", "node_modules", "Pods", "DerivedData", "__pycache__"].includes(entry)) {
1133
- continue;
1134
- }
1135
- const fullPath = join(dir, entry);
1136
- const entryStat = statSync(fullPath);
1137
- if (entryStat.isDirectory()) {
1138
- walk(fullPath);
1139
- } else {
1140
- addFile(fullPath);
1141
- }
1142
- }
1143
- }
1144
-
1145
- if (stat.isDirectory()) {
1146
- walk(samplePath);
1147
- } else {
1148
- addFile(samplePath);
1149
- }
1150
-
1151
- const validFiles = files.filter((f) => f.content.length < 50000);
1152
-
1153
- const output = [
1154
- `# Project Generation: ${sampleLabel}`,
1155
- "",
1156
- "This output contains the file structure for the project.",
1157
- "Note: This tool returns files inline and does not create a downloadable zip.",
1158
- ""
1159
- ];
1160
-
1161
- for (const file of validFiles) {
1162
- output.push(`## ${file.path}`);
1163
- output.push("```" + (file.ext || "text"));
1164
- output.push(file.content);
1165
- output.push("```");
1166
- output.push("");
1167
- }
1168
-
1169
- return { content: [{ type: "text", text: output.join("\n") }] };
1170
- }
1171
- );
1172
- // ============================================================================
1173
- // MCP Resources (tool-discovered, lazy-read)
1174
- // ============================================================================
1175
-
1176
- server.server.registerCapabilities({
1177
- resources: {
1178
- listChanged: false,
1179
- subscribe: true
1180
- }
1181
- });
1182
-
1183
- server.server.setRequestHandler(ListResourcesRequestSchema, async () => {
1184
- // Only surface a small, pinned set to avoid bloating the context window.
1185
- const resources = getPinnedResources().map((r) => ({
1186
- uri: r.uri,
1187
- name: r.title,
1188
- description: r.summary,
1189
- mimeType: r.mimeType
1190
- }));
1191
- return { resources };
1192
- });
1193
-
1194
- server.server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
1195
- const parsed = parseResourceUri(request.params.uri);
1196
- if (parsed && ["dbr", "dwt", "ddv"].includes(parsed.product)) {
1197
- const policy = ensureLatestMajor({
1198
- product: parsed.product,
1199
- version: parsed.version,
1200
- edition: parsed.edition,
1201
- platform: parsed.platform
1202
- });
1203
- if (!policy.ok) {
1204
- throw new Error(policy.message);
1205
- }
1206
- }
1207
- const resource = await readResourceContent(request.params.uri);
1208
- if (!resource) {
1209
- throw new Error(`Resource not found: ${request.params.uri}`);
1210
- }
1211
- return { contents: [resource] };
1212
- });
1213
-
1214
- server.server.setRequestHandler(SubscribeRequestSchema, async () => ({}));
1215
- server.server.setRequestHandler(UnsubscribeRequestSchema, async () => ({}));
1216
-
1217
- // ============================================================================
1218
- // Start Server
1219
- // ============================================================================
1220
-
1221
- const transport = new StdioServerTransport();
1222
- await server.connect(transport);
1223
-
1224
- if (ragConfig.prewarm) {
1225
- if (ragConfig.prewarmBlock) {
1226
- await prewarmRagIndex();
1227
- } else {
1228
- void prewarmRagIndex();
1229
- }
1230
- }
1
+ #!/usr/bin/env node
2
+ import { readFileSync, readdirSync, existsSync, statSync } from "node:fs";
3
+ import { join, relative, dirname, extname } from "node:path";
4
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
+ import {
7
+ ListResourcesRequestSchema,
8
+ ReadResourceRequestSchema,
9
+ SubscribeRequestSchema,
10
+ UnsubscribeRequestSchema
11
+ } from "@modelcontextprotocol/sdk/types.js";
12
+ import { z } from "zod";
13
+ import { ensureDataReady } from "./data-bootstrap.js";
14
+ import { maybeSyncSubmodulesOnStart } from "./submodule-sync.js";
15
+
16
+ const pkgUrl = new URL("../package.json", import.meta.url);
17
+ const pkg = JSON.parse(readFileSync(pkgUrl, "utf8"));
18
+
19
+ await maybeSyncSubmodulesOnStart();
20
+ const dataStatus = await ensureDataReady();
21
+ if (dataStatus.mode === "downloaded") {
22
+ console.error(
23
+ `[data] mode=downloaded path=${dataStatus.dataRoot} source=${dataStatus.downloaded ? "fresh-download" : "cache"}`
24
+ );
25
+ } else {
26
+ console.error(`[data] mode=${dataStatus.mode} path=${dataStatus.dataRoot}`);
27
+ }
28
+
29
+ const {
30
+ registry,
31
+ LATEST_VERSIONS,
32
+ LATEST_MAJOR,
33
+ discoverDwtSamples,
34
+ discoverDcvMobileSamples,
35
+ discoverDcvServerSamples,
36
+ discoverDcvWebSamples,
37
+ findCodeFilesInSample,
38
+ getMobileSamplePath,
39
+ getDbrServerSamplePath,
40
+ getDcvMobileSamplePath,
41
+ getDcvServerSamplePath,
42
+ getDcvWebSamplePath,
43
+ getDwtSamplePath,
44
+ getDdvSamplePath,
45
+ readCodeFile,
46
+ getMainCodeFile,
47
+ ensureLatestMajor,
48
+ parseResourceUri,
49
+ parseSampleUri,
50
+ getSampleIdFromUri,
51
+ getSampleEntries,
52
+ buildIndexData,
53
+ getDisplayEdition,
54
+ getDisplayPlatform,
55
+ formatScopeLabel,
56
+ getPinnedResources,
57
+ readResourceContent,
58
+ normalizePlatform,
59
+ normalizeApiLevel,
60
+ normalizeSampleName,
61
+ normalizeProduct,
62
+ normalizeEdition,
63
+ resourceIndex,
64
+ getWebSamplePath
65
+ } = await import("./resource-index.js");
66
+
67
+ const {
68
+ searchResources,
69
+ getSampleSuggestions,
70
+ prewarmRagIndex,
71
+ ragConfig
72
+ } = await import("./rag.js");
73
+
74
+ // ============================================================================
75
+ // MCP Server
76
+ // ============================================================================
77
+
78
+ const server = new McpServer({
79
+ name: "simple-dynamsoft-mcp",
80
+ version: pkg.version,
81
+ description: "MCP server for latest major versions of Dynamsoft SDKs: Capture Vision, Barcode Reader, Dynamic Web TWAIN, and Document Viewer. Includes guidance for choosing DBR vs DCV by scenario."
82
+ });
83
+
84
+ function formatScoreLabel(entry) {
85
+ if (!Number.isFinite(entry?.score)) return "";
86
+ return ` | score: ${entry.score.toFixed(3)}`;
87
+ }
88
+
89
+ function formatScoreNote(entry) {
90
+ if (!Number.isFinite(entry?.score)) return "";
91
+ return ` score=${entry.score.toFixed(3)}`;
92
+ }
93
+
94
+ // ============================================================================
95
+ // TOOL: get_index
96
+ // ============================================================================
97
+
98
+ server.registerTool(
99
+ "get_index",
100
+ {
101
+ title: "Get Index",
102
+ description: "Get a compact index of products, editions, versions, samples/docs, plus DBR-vs-DCV selection guidance.",
103
+ inputSchema: {}
104
+ },
105
+ async () => ({
106
+ content: [{ type: "text", text: JSON.stringify(buildIndexData(), null, 2) }]
107
+ })
108
+ );
109
+
110
+ // ============================================================================
111
+ // TOOL: search
112
+ // ============================================================================
113
+
114
+ server.registerTool(
115
+ "search",
116
+ {
117
+ title: "Search",
118
+ description: "Semantic (RAG) search across docs and samples with fuzzy fallback; returns resource links for lazy loading. Prefer DCV for MRZ/VIN/document-normalization/driver-license scenarios; DBR for barcode-only.",
119
+ inputSchema: {
120
+ query: z.string().describe("Keywords to search across docs and samples."),
121
+ product: z.string().optional().describe("Product: dcv, dbr, dwt, ddv"),
122
+ edition: z.string().optional().describe("Edition: core, mobile, web, server/desktop"),
123
+ platform: z.string().optional().describe("Platform: android, ios, maui, react-native, flutter, js, python, cpp, java, dotnet, nodejs, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview, spm, core"),
124
+ version: z.string().optional().describe("Version constraint (major or full version)"),
125
+ type: z.enum(["doc", "sample", "index", "policy", "any"]).optional(),
126
+ limit: z.number().int().min(1).max(10).optional().describe("Max results (default 5)")
127
+ }
128
+ },
129
+ async ({ query, product, edition, platform, version, type, limit }) => {
130
+ if (!query || !query.trim()) {
131
+ return { isError: true, content: [{ type: "text", text: "Query is required." }] };
132
+ }
133
+ const normalizedProduct = normalizeProduct(product);
134
+ const normalizedPlatform = normalizePlatform(platform);
135
+ const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
136
+
137
+ const policy = ensureLatestMajor({
138
+ product: normalizedProduct,
139
+ version,
140
+ query,
141
+ edition: normalizedEdition,
142
+ platform: normalizedPlatform
143
+ });
144
+
145
+ if (!policy.ok) {
146
+ return { isError: true, content: [{ type: "text", text: policy.message }] };
147
+ }
148
+
149
+ const maxResults = Math.min(limit || 5, 10);
150
+ const topResults = await searchResources({
151
+ query,
152
+ product: normalizedProduct,
153
+ edition: normalizedEdition,
154
+ platform: normalizedPlatform,
155
+ type: type || "any",
156
+ limit: maxResults
157
+ });
158
+
159
+ if (topResults.length === 0) {
160
+ return {
161
+ content: [{
162
+ type: "text",
163
+ text: `No results for "${query}". Try get_index for available products or adjust filters.`
164
+ }]
165
+ };
166
+ }
167
+
168
+ const content = [
169
+ {
170
+ type: "text",
171
+ text: `Found ${topResults.length} result(s) for "${query}". Read the links you need with resources/read.`
172
+ }
173
+ ];
174
+
175
+ for (const entry of topResults) {
176
+ const versionLabel = entry.version ? `v${entry.version}` : "n/a";
177
+ const scopeLabel = formatScopeLabel(entry);
178
+ const sampleId = entry.type === "sample" ? getSampleIdFromUri(entry.uri) : "";
179
+ const sampleHint = sampleId ? ` | sample_id: ${sampleId}` : "";
180
+ const scoreLabel = formatScoreLabel(entry);
181
+ content.push({
182
+ type: "resource_link",
183
+ uri: entry.uri,
184
+ name: entry.title,
185
+ description: `${entry.type.toUpperCase()} | ${scopeLabel} | ${versionLabel}${scoreLabel} - ${entry.summary}${sampleHint}`,
186
+ mimeType: entry.mimeType,
187
+ annotations: {
188
+ audience: ["assistant"],
189
+ priority: 0.8
190
+ }
191
+ });
192
+ }
193
+
194
+ const plainLines = topResults.map((entry, index) => {
195
+ const sampleId = entry.type === "sample" ? getSampleIdFromUri(entry.uri) : "";
196
+ const action = entry.type === "sample" ? "generate_project resource_uri" : "resources/read uri";
197
+ const sampleNote = sampleId ? ` sample_id=${sampleId}` : "";
198
+ const scoreNote = formatScoreNote(entry);
199
+ return `- ${index + 1}. ${entry.uri}${sampleNote}${scoreNote} (${action})`;
200
+ });
201
+ content.push({
202
+ type: "text",
203
+ text: ["Plain URIs (copy/paste):", ...plainLines].join("\n")
204
+ });
205
+
206
+ return { content };
207
+ }
208
+ );
209
+
210
+ // ============================================================================
211
+ // TOOL: list_samples
212
+ // ============================================================================
213
+
214
+ server.registerTool(
215
+ "list_samples",
216
+ {
217
+ title: "List Samples",
218
+ description: "List available sample IDs and URIs for a given scope. Use DCV scope for MRZ/VIN/document normalization scenarios.",
219
+ inputSchema: {
220
+ product: z.string().optional().describe("Product: dcv, dbr, dwt, ddv"),
221
+ edition: z.string().optional().describe("Edition: core, mobile, web, server/desktop"),
222
+ platform: z.string().optional().describe("Platform: android, ios, maui, react-native, flutter, js, python, cpp, java, dotnet, nodejs, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview, spm, core"),
223
+ limit: z.number().int().min(1).max(200).optional().describe("Max results (default 50)")
224
+ }
225
+ },
226
+ async ({ product, edition, platform, limit }) => {
227
+ const normalizedProduct = normalizeProduct(product);
228
+ const normalizedPlatform = normalizePlatform(platform);
229
+ const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
230
+
231
+ const policy = ensureLatestMajor({
232
+ product: normalizedProduct,
233
+ version: undefined,
234
+ query: "",
235
+ edition: normalizedEdition,
236
+ platform: normalizedPlatform
237
+ });
238
+
239
+ if (!policy.ok) {
240
+ return { isError: true, content: [{ type: "text", text: policy.message }] };
241
+ }
242
+
243
+ const samples = getSampleEntries({
244
+ product: normalizedProduct,
245
+ edition: normalizedEdition,
246
+ platform: normalizedPlatform
247
+ });
248
+
249
+ const maxResults = Math.min(limit || 50, 200);
250
+ const selected = samples.slice(0, maxResults);
251
+
252
+ const payload = selected.map((entry) => ({
253
+ sample_id: getSampleIdFromUri(entry.uri),
254
+ uri: entry.uri,
255
+ product: entry.product,
256
+ edition: getDisplayEdition(entry.edition),
257
+ platform: getDisplayPlatform(entry.platform),
258
+ version: entry.version,
259
+ title: entry.title,
260
+ summary: entry.summary
261
+ }));
262
+
263
+ const lines = [
264
+ `Total matches: ${samples.length}`,
265
+ `Returned: ${payload.length}`,
266
+ "",
267
+ "Plain URIs (copy/paste):",
268
+ ...payload.map((item, index) => {
269
+ const sampleNote = item.sample_id ? ` (sample_id: ${item.sample_id})` : "";
270
+ return `- ${index + 1}. ${item.uri}${sampleNote}`;
271
+ })
272
+ ];
273
+
274
+ const output = {
275
+ total: samples.length,
276
+ returned: payload.length,
277
+ samples: payload
278
+ };
279
+
280
+ return {
281
+ content: [{
282
+ type: "text",
283
+ text: `${lines.join("\n")}\n\nJSON:\n${JSON.stringify(output, null, 2)}`
284
+ }]
285
+ };
286
+ }
287
+ );
288
+
289
+ // ============================================================================
290
+ // TOOL: resolve_sample
291
+ // ============================================================================
292
+
293
+ server.registerTool(
294
+ "resolve_sample",
295
+ {
296
+ title: "Resolve Sample",
297
+ description: "Resolve a sample_id (or sample URI) to matching sample URIs.",
298
+ inputSchema: {
299
+ sample_id: z.string().describe("Sample identifier or sample:// URI"),
300
+ product: z.string().optional().describe("Product: dcv, dbr, dwt, ddv"),
301
+ edition: z.string().optional().describe("Edition: core, mobile, web, server/desktop"),
302
+ platform: z.string().optional().describe("Platform: android, ios, maui, react-native, flutter, js, python, cpp, java, dotnet, nodejs, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview, spm, core"),
303
+ limit: z.number().int().min(1).max(10).optional().describe("Max results (default 5)")
304
+ }
305
+ },
306
+ async ({ sample_id, product, edition, platform, limit }) => {
307
+ if (!sample_id || !sample_id.trim()) {
308
+ return { isError: true, content: [{ type: "text", text: "sample_id is required." }] };
309
+ }
310
+
311
+ const normalizedProduct = normalizeProduct(product);
312
+ const normalizedPlatform = normalizePlatform(platform);
313
+ const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
314
+
315
+ const policy = ensureLatestMajor({
316
+ product: normalizedProduct,
317
+ version: undefined,
318
+ query: sample_id,
319
+ edition: normalizedEdition,
320
+ platform: normalizedPlatform
321
+ });
322
+
323
+ if (!policy.ok) {
324
+ return { isError: true, content: [{ type: "text", text: policy.message }] };
325
+ }
326
+
327
+ if (sample_id.includes("://")) {
328
+ const parsed = parseSampleUri(sample_id);
329
+ if (!parsed) {
330
+ return {
331
+ isError: true,
332
+ content: [{
333
+ type: "text",
334
+ text: "sample_id looks like a URI but is not a valid sample:// URI. For doc:// URIs, use resources/read."
335
+ }]
336
+ };
337
+ }
338
+ const entry = resourceIndex.find((item) => item.uri === sample_id && item.type === "sample");
339
+ if (!entry) {
340
+ return {
341
+ isError: true,
342
+ content: [{
343
+ type: "text",
344
+ text: `Sample URI not found in index: ${sample_id}. Use list_samples or search.`
345
+ }]
346
+ };
347
+ }
348
+
349
+ const payload = [{
350
+ sample_id: getSampleIdFromUri(entry.uri),
351
+ uri: entry.uri,
352
+ product: entry.product,
353
+ edition: getDisplayEdition(entry.edition),
354
+ platform: getDisplayPlatform(entry.platform),
355
+ version: entry.version,
356
+ title: entry.title,
357
+ summary: entry.summary
358
+ }];
359
+
360
+ const output = {
361
+ query: sample_id,
362
+ returned: payload.length,
363
+ samples: payload
364
+ };
365
+
366
+ return {
367
+ content: [{
368
+ type: "text",
369
+ text: [
370
+ `Found ${payload.length} match(es) for "${sample_id}".`,
371
+ "Plain URIs (copy/paste):",
372
+ `- 1. ${entry.uri} (sample_id: ${payload[0].sample_id})`,
373
+ "",
374
+ "JSON:",
375
+ JSON.stringify(output, null, 2)
376
+ ].join("\n")
377
+ }, {
378
+ type: "resource_link",
379
+ uri: entry.uri,
380
+ name: entry.title,
381
+ description: `SAMPLE | ${formatScopeLabel(entry)} | v${entry.version}${formatScoreLabel(entry)} | sample_id: ${payload[0].sample_id}`,
382
+ mimeType: entry.mimeType,
383
+ annotations: {
384
+ audience: ["assistant"],
385
+ priority: 0.8
386
+ }
387
+ }]
388
+ };
389
+ }
390
+
391
+ const sampleQuery = normalizeSampleName(sample_id);
392
+ const maxResults = Math.min(limit || 5, 10);
393
+
394
+ const scopedSamples = getSampleEntries({
395
+ product: normalizedProduct,
396
+ edition: normalizedEdition,
397
+ platform: normalizedPlatform
398
+ });
399
+
400
+ let matches = scopedSamples.filter((entry) => {
401
+ const entryId = getSampleIdFromUri(entry.uri);
402
+ return entryId && entryId.toLowerCase() === sampleQuery.toLowerCase();
403
+ });
404
+
405
+ if (matches.length === 0) {
406
+ matches = await searchResources({
407
+ query: sample_id,
408
+ product: normalizedProduct,
409
+ edition: normalizedEdition,
410
+ platform: normalizedPlatform,
411
+ type: "sample",
412
+ limit: maxResults
413
+ });
414
+ }
415
+
416
+ const selected = matches.slice(0, maxResults);
417
+ if (selected.length === 0) {
418
+ const suggestions = await getSampleSuggestions({
419
+ query: sample_id,
420
+ product: normalizedProduct,
421
+ edition: normalizedEdition,
422
+ platform: normalizedPlatform,
423
+ limit: maxResults
424
+ });
425
+
426
+ const content = [{
427
+ type: "text",
428
+ text: suggestions.length
429
+ ? `No exact sample match for "${sample_id}". Related samples:`
430
+ : `No samples found for "${sample_id}". Try list_samples or search.`
431
+ }];
432
+
433
+ for (const entry of suggestions) {
434
+ const sampleId = getSampleIdFromUri(entry.uri);
435
+ content.push({
436
+ type: "resource_link",
437
+ uri: entry.uri,
438
+ name: entry.title,
439
+ description: `${entry.type.toUpperCase()} | ${formatScopeLabel(entry)} | v${entry.version}${formatScoreLabel(entry)} | sample_id: ${sampleId || "n/a"}`,
440
+ mimeType: entry.mimeType,
441
+ annotations: {
442
+ audience: ["assistant"],
443
+ priority: 0.6
444
+ }
445
+ });
446
+ }
447
+
448
+ if (suggestions.length) {
449
+ const plainLines = suggestions.map((entry, index) => {
450
+ const sampleId = getSampleIdFromUri(entry.uri);
451
+ const sampleNote = sampleId ? ` (sample_id: ${sampleId})` : "";
452
+ const scoreNote = formatScoreNote(entry);
453
+ return `- ${index + 1}. ${entry.uri}${sampleNote}${scoreNote}`;
454
+ });
455
+ content.push({
456
+ type: "text",
457
+ text: ["Plain URIs (copy/paste):", ...plainLines].join("\n")
458
+ });
459
+ }
460
+
461
+ return { isError: true, content };
462
+ }
463
+
464
+ const payload = selected.map((entry) => ({
465
+ sample_id: getSampleIdFromUri(entry.uri),
466
+ uri: entry.uri,
467
+ product: entry.product,
468
+ edition: getDisplayEdition(entry.edition),
469
+ platform: getDisplayPlatform(entry.platform),
470
+ version: entry.version,
471
+ title: entry.title,
472
+ summary: entry.summary
473
+ }));
474
+
475
+ const lines = [
476
+ `Found ${selected.length} match(es) for "${sample_id}".`,
477
+ "Plain URIs (copy/paste):",
478
+ ...selected.map((entry, index) => {
479
+ const sampleId = getSampleIdFromUri(entry.uri);
480
+ const sampleNote = sampleId ? ` (sample_id: ${sampleId})` : "";
481
+ const scoreNote = formatScoreNote(entry);
482
+ return `- ${index + 1}. ${entry.uri}${sampleNote}${scoreNote}`;
483
+ })
484
+ ];
485
+
486
+ const output = {
487
+ query: sample_id,
488
+ returned: payload.length,
489
+ samples: payload
490
+ };
491
+
492
+ const content = [{
493
+ type: "text",
494
+ text: `${lines.join("\n")}\n\nJSON:\n${JSON.stringify(output, null, 2)}`
495
+ }];
496
+
497
+ for (const entry of selected) {
498
+ const sampleId = getSampleIdFromUri(entry.uri);
499
+ content.push({
500
+ type: "resource_link",
501
+ uri: entry.uri,
502
+ name: entry.title,
503
+ description: `${entry.type.toUpperCase()} | ${formatScopeLabel(entry)} | v${entry.version}${formatScoreLabel(entry)} | sample_id: ${sampleId || "n/a"}`,
504
+ mimeType: entry.mimeType,
505
+ annotations: {
506
+ audience: ["assistant"],
507
+ priority: 0.8
508
+ }
509
+ });
510
+ }
511
+
512
+ return { content };
513
+ }
514
+ );
515
+
516
+ // ============================================================================
517
+ // TOOL: resolve_version
518
+ // ============================================================================
519
+
520
+ server.registerTool(
521
+ "resolve_version",
522
+ {
523
+ title: "Resolve Version",
524
+ description: "Resolve a concrete latest-major version for a product/edition/platform.",
525
+ inputSchema: {
526
+ product: z.string().describe("Product: dcv, dbr, dwt, or ddv"),
527
+ edition: z.string().optional().describe("Edition: core, mobile, web, server/desktop"),
528
+ platform: z.string().optional().describe("Platform: android, ios, maui, react-native, flutter, js, python, cpp, java, dotnet, nodejs, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview, spm, core"),
529
+ constraint: z.string().optional().describe("Version constraint, e.g., latest, 11.x, 10"),
530
+ feature: z.string().optional().describe("Optional feature hint")
531
+ }
532
+ },
533
+ async ({ product, edition, platform, constraint, feature }) => {
534
+ const normalizedProduct = normalizeProduct(product);
535
+ const normalizedPlatform = normalizePlatform(platform);
536
+ const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
537
+
538
+ if (!["dcv", "dbr", "dwt", "ddv"].includes(normalizedProduct)) {
539
+ return {
540
+ isError: true,
541
+ content: [{ type: "text", text: `Unknown product "${product}". Use dcv, dbr, dwt, or ddv.` }]
542
+ };
543
+ }
544
+
545
+ const policy = ensureLatestMajor({
546
+ product: normalizedProduct,
547
+ version: constraint,
548
+ query: feature,
549
+ edition: normalizedEdition,
550
+ platform: normalizedPlatform
551
+ });
552
+
553
+ if (!policy.ok) {
554
+ return { isError: true, content: [{ type: "text", text: policy.message }] };
555
+ }
556
+
557
+ if (normalizedProduct === "dcv") {
558
+ if (!normalizedEdition) {
559
+ const lines = [
560
+ "# DCV Version Resolution",
561
+ `- Latest major: v${LATEST_MAJOR.dcv}`,
562
+ `- Core: ${LATEST_VERSIONS.dcv.core}`,
563
+ `- Web: ${LATEST_VERSIONS.dcv.web}`,
564
+ `- Mobile: ${LATEST_VERSIONS.dcv.mobile}`,
565
+ `- Server/Desktop: ${LATEST_VERSIONS.dcv.server}`,
566
+ "",
567
+ "Specify edition/platform to resolve a single version."
568
+ ];
569
+ return { content: [{ type: "text", text: lines.join("\n") }] };
570
+ }
571
+
572
+ const resolved = LATEST_VERSIONS.dcv[normalizedEdition];
573
+ if (!resolved) {
574
+ return {
575
+ isError: true,
576
+ content: [{ type: "text", text: `Edition "${normalizedEdition}" is not hosted by this MCP server.` }]
577
+ };
578
+ }
579
+
580
+ const displayPlatform = normalizedPlatform === "web" ? "js" : normalizedPlatform;
581
+ const lines = [
582
+ "# DCV Version Resolution",
583
+ `- Edition: ${normalizedEdition}`,
584
+ displayPlatform ? `- Platform: ${displayPlatform}` : "",
585
+ `- Latest major: v${LATEST_MAJOR.dcv}`,
586
+ `- Resolved version: ${resolved}`
587
+ ].filter(Boolean);
588
+
589
+ return { content: [{ type: "text", text: lines.join("\n") }] };
590
+ }
591
+
592
+ if (normalizedProduct === "dbr") {
593
+ if (!normalizedEdition) {
594
+ const lines = [
595
+ "# DBR Version Resolution",
596
+ `- Latest major: v${LATEST_MAJOR.dbr}`,
597
+ `- Mobile: ${LATEST_VERSIONS.dbr.mobile}`,
598
+ `- Web: ${LATEST_VERSIONS.dbr.web}`,
599
+ `- Server/Desktop: ${LATEST_VERSIONS.dbr.server}`,
600
+ "",
601
+ "Specify edition/platform to resolve a single version."
602
+ ];
603
+ return { content: [{ type: "text", text: lines.join("\n") }] };
604
+ }
605
+
606
+ const resolved = LATEST_VERSIONS.dbr[normalizedEdition];
607
+ if (!resolved) {
608
+ return {
609
+ isError: true,
610
+ content: [{ type: "text", text: `Edition "${normalizedEdition}" is not hosted by this MCP server.` }]
611
+ };
612
+ }
613
+
614
+ const displayPlatform = normalizedPlatform === "web" ? "js" : normalizedPlatform;
615
+ const lines = [
616
+ "# DBR Version Resolution",
617
+ `- Edition: ${normalizedEdition}`,
618
+ displayPlatform ? `- Platform: ${displayPlatform}` : "",
619
+ `- Latest major: v${LATEST_MAJOR.dbr}`,
620
+ `- Resolved version: ${resolved}`
621
+ ].filter(Boolean);
622
+
623
+ return { content: [{ type: "text", text: lines.join("\n") }] };
624
+ }
625
+
626
+ if (normalizedProduct === "dwt") {
627
+ const lines = [
628
+ "# DWT Version Resolution",
629
+ `- Latest major: v${LATEST_MAJOR.dwt}`,
630
+ `- Resolved version: ${LATEST_VERSIONS.dwt.web}`
631
+ ];
632
+ return { content: [{ type: "text", text: lines.join("\n") }] };
633
+ }
634
+
635
+ const lines = [
636
+ "# DDV Version Resolution",
637
+ `- Latest major: v${LATEST_MAJOR.ddv}`,
638
+ `- Resolved version: ${LATEST_VERSIONS.ddv.web}`
639
+ ];
640
+
641
+ return { content: [{ type: "text", text: lines.join("\n") }] };
642
+ }
643
+ );
644
+
645
+ // ============================================================================
646
+ // TOOL: get_quickstart
647
+ // ============================================================================
648
+
649
+ server.registerTool(
650
+ "get_quickstart",
651
+ {
652
+ title: "Get Quickstart",
653
+ description: "Opinionated quickstart for a target product/edition/platform. DCV supports MRZ/VIN/document-normalization/driver-license workflows.",
654
+ inputSchema: {
655
+ product: z.string().describe("Product: dcv, dbr, dwt, or ddv"),
656
+ edition: z.string().optional().describe("Edition: core, mobile, web, server/desktop"),
657
+ platform: z.string().optional().describe("Platform: android, ios, maui, react-native, flutter, js, python, cpp, java, dotnet, nodejs, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview, spm, core"),
658
+ language: z.string().optional().describe("Language hint: kotlin, java, swift, js, ts, python, cpp, csharp, react, vue, angular"),
659
+ version: z.string().optional().describe("Version constraint"),
660
+ api_level: z.string().optional().describe("API level: high-level or low-level (mobile only)"),
661
+ scenario: z.string().optional().describe("Scenario: camera, image, single, multiple, MRZ, VIN, document scan/normalization, driver license, react, etc.")
662
+ }
663
+ },
664
+ async ({ product, edition, platform, language, version, api_level, scenario }) => {
665
+ const normalizedProduct = normalizeProduct(product);
666
+ const normalizedPlatform = normalizePlatform(platform);
667
+ const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
668
+ const policy = ensureLatestMajor({
669
+ product: normalizedProduct,
670
+ version,
671
+ query: scenario,
672
+ edition: normalizedEdition,
673
+ platform: normalizedPlatform
674
+ });
675
+
676
+ if (!policy.ok) {
677
+ return { isError: true, content: [{ type: "text", text: policy.message }] };
678
+ }
679
+
680
+ if (normalizedProduct === "dcv") {
681
+ const scenarioLower = `${scenario || ""} ${language || ""}`.toLowerCase();
682
+ const effectiveEdition = normalizedEdition || (normalizedPlatform ? normalizeEdition("", normalizedPlatform, "dcv") : "server");
683
+
684
+ function selectDcvServerSample(platformHint, hint) {
685
+ const platformName = normalizePlatform(platformHint) || "python";
686
+ if (platformName === "python") {
687
+ if (hint.includes("mrz")) return "mrz_scanner";
688
+ if (hint.includes("vin")) return "vin_scanner";
689
+ if (hint.includes("driver") || hint.includes("license")) return "driver_license_scanner";
690
+ if (hint.includes("gs1")) return "gs1_ai_scanner";
691
+ return "document_scanner";
692
+ }
693
+ if (platformName === "nodejs") {
694
+ if (hint.includes("lambda")) return "lambda";
695
+ if (hint.includes("pdf")) return "pdf-advanced";
696
+ if (hint.includes("koa")) return "koa";
697
+ return "express";
698
+ }
699
+ if (hint.includes("mrz")) return "MRZScanner";
700
+ if (hint.includes("vin")) return "VINScanner";
701
+ if (hint.includes("driver") || hint.includes("license")) return "DriverLicenseScanner";
702
+ if (hint.includes("gs1")) return "GS1AIScanner";
703
+ return "DocumentScanner";
704
+ }
705
+
706
+ function selectMobileSample(sampleNames, hint) {
707
+ const lowerToName = new Map(sampleNames.map((name) => [String(name).toLowerCase(), name]));
708
+ const candidates = hint.includes("mrz")
709
+ ? ["scanmrz", "mrzscanner"]
710
+ : hint.includes("vin")
711
+ ? ["scanvin", "vinscanner"]
712
+ : (hint.includes("driver") || hint.includes("license"))
713
+ ? ["driverlicensescanner"]
714
+ : ["scandocument", "documentscanner"];
715
+ for (const candidate of candidates) {
716
+ if (lowerToName.has(candidate)) return lowerToName.get(candidate);
717
+ }
718
+ return sampleNames[0] || "";
719
+ }
720
+
721
+ function readBestSampleContent(samplePath) {
722
+ if (!samplePath || !existsSync(samplePath)) return { text: "", fence: "text" };
723
+ const sampleStat = statSync(samplePath);
724
+ if (sampleStat.isFile()) {
725
+ return {
726
+ text: readCodeFile(samplePath),
727
+ fence: extname(samplePath).replace(".", "") || "text"
728
+ };
729
+ }
730
+ const readmePath = join(samplePath, "README.md");
731
+ if (existsSync(readmePath)) return { text: readCodeFile(readmePath), fence: "markdown" };
732
+
733
+ const codeFiles = findCodeFilesInSample(samplePath);
734
+ if (codeFiles.length > 0) {
735
+ const preferredNames = ["index.html", "index.js", "index.ts", "main.dart", "App.tsx", "MainActivity.kt", "MainActivity.java"];
736
+ const preferred = codeFiles.find((file) => preferredNames.includes(file.filename)) || codeFiles[0];
737
+ return {
738
+ text: readCodeFile(preferred.path),
739
+ fence: preferred.extension ? preferred.extension.replace(".", "") : "text"
740
+ };
741
+ }
742
+
743
+ return { text: "Sample found, but no code files detected.", fence: "text" };
744
+ }
745
+
746
+ function formatInstallLines(installation) {
747
+ if (!installation || typeof installation !== "object") return [];
748
+ const lines = [];
749
+ for (const value of Object.values(installation)) {
750
+ if (typeof value === "string" && value.trim()) lines.push(value);
751
+ }
752
+ return lines;
753
+ }
754
+
755
+ if (effectiveEdition === "server") {
756
+ const sdkEntry = registry.sdks["dcv-server"];
757
+ const targetPlatform = normalizePlatform(normalizedPlatform || sdkEntry.default_platform || "python");
758
+ const sampleName = selectDcvServerSample(targetPlatform, scenarioLower);
759
+ const samplePath = getDcvServerSamplePath(targetPlatform, sampleName);
760
+
761
+ if (!samplePath || !existsSync(samplePath)) {
762
+ return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName}.` }] };
763
+ }
764
+
765
+ const { text: sampleContent, fence } = readBestSampleContent(samplePath);
766
+ const installLines = formatInstallLines(sdkEntry.platforms?.[targetPlatform]?.installation);
767
+
768
+ return {
769
+ content: [{
770
+ type: "text",
771
+ text: [
772
+ `# Quick Start: DCV Server (${targetPlatform})`,
773
+ "",
774
+ `**SDK Version:** ${sdkEntry.version}`,
775
+ `**Trial License:** \`${registry.trial_license}\``,
776
+ "",
777
+ installLines.length ? "## Install" : "",
778
+ installLines.length ? "```bash" : "",
779
+ ...installLines,
780
+ installLines.length ? "```" : "",
781
+ installLines.length ? "" : "",
782
+ `## ${sampleName}`,
783
+ "```" + fence,
784
+ sampleContent,
785
+ "```",
786
+ "",
787
+ `Docs: ${sdkEntry.platforms?.[targetPlatform]?.docs?.["user-guide"] || "N/A"}`
788
+ ].filter(Boolean).join("\n")
789
+ }]
790
+ };
791
+ }
792
+
793
+ if (effectiveEdition === "web") {
794
+ const sdkEntry = registry.sdks["dcv-web"];
795
+ const available = discoverDcvWebSamples();
796
+ const sampleName = scenarioLower.includes("vin") ? "VINScanner" : (available[0] || "VINScanner");
797
+ const samplePath = getDcvWebSamplePath(sampleName);
798
+ if (!samplePath || !existsSync(samplePath)) {
799
+ return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName}.` }] };
800
+ }
801
+ const { text: sampleContent, fence } = readBestSampleContent(samplePath);
802
+ const installLines = formatInstallLines(sdkEntry.platforms?.web?.installation);
803
+
804
+ return {
805
+ content: [{
806
+ type: "text",
807
+ text: [
808
+ "# Quick Start: DCV Web",
809
+ "",
810
+ `**SDK Version:** ${sdkEntry.version}`,
811
+ `**Trial License:** \`${registry.trial_license}\``,
812
+ "",
813
+ installLines.length ? "## Install" : "",
814
+ installLines.length ? "```bash" : "",
815
+ ...installLines,
816
+ installLines.length ? "```" : "",
817
+ installLines.length ? "" : "",
818
+ `## ${sampleName}`,
819
+ "```" + fence,
820
+ sampleContent,
821
+ "```",
822
+ "",
823
+ `Docs: ${sdkEntry.platforms?.web?.docs?.["user-guide"] || "N/A"}`
824
+ ].filter(Boolean).join("\n")
825
+ }]
826
+ };
827
+ }
828
+
829
+ if (effectiveEdition === "mobile") {
830
+ const sdkEntry = registry.sdks["dcv-mobile"];
831
+ const targetPlatform = normalizePlatform(normalizedPlatform || sdkEntry.default_platform || "android");
832
+ const sampleNames = discoverDcvMobileSamples(targetPlatform);
833
+ const sampleName = selectMobileSample(sampleNames, scenarioLower);
834
+ const samplePath = getDcvMobileSamplePath(targetPlatform, sampleName);
835
+
836
+ if (!samplePath || !existsSync(samplePath)) {
837
+ return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName || "N/A"}.` }] };
838
+ }
839
+
840
+ const { text: sampleContent, fence } = readBestSampleContent(samplePath);
841
+ const installLines = formatInstallLines(sdkEntry.platforms?.[targetPlatform]?.installation);
842
+
843
+ return {
844
+ content: [{
845
+ type: "text",
846
+ text: [
847
+ `# Quick Start: DCV Mobile (${targetPlatform})`,
848
+ "",
849
+ `**SDK Version:** ${sdkEntry.version}`,
850
+ `**Trial License:** \`${registry.trial_license}\``,
851
+ "",
852
+ installLines.length ? "## Install" : "",
853
+ installLines.length ? "```bash" : "",
854
+ ...installLines,
855
+ installLines.length ? "```" : "",
856
+ installLines.length ? "" : "",
857
+ `## ${sampleName}`,
858
+ "```" + fence,
859
+ sampleContent,
860
+ "```",
861
+ "",
862
+ `Docs: ${sdkEntry.platforms?.[targetPlatform]?.docs?.["user-guide"] || "N/A"}`
863
+ ].filter(Boolean).join("\n")
864
+ }]
865
+ };
866
+ }
867
+
868
+ if (effectiveEdition === "core") {
869
+ const sdkEntry = registry.sdks["dcv-core"];
870
+ return {
871
+ content: [{
872
+ type: "text",
873
+ text: [
874
+ "# Quick Start: DCV Core",
875
+ "",
876
+ `**SDK Version:** ${sdkEntry.version}`,
877
+ "",
878
+ "DCV core docs aggregate architecture, parameters, and cross-product workflows.",
879
+ `Docs: ${sdkEntry.platforms?.core?.docs?.introduction || "https://www.dynamsoft.com/capture-vision/docs/core/"}`
880
+ ].join("\n")
881
+ }]
882
+ };
883
+ }
884
+ }
885
+
886
+ if (normalizedProduct === "dbr" && normalizedEdition === "server") {
887
+ const sdkEntry = registry.sdks["dbr-server"];
888
+ const scenarioLower = (scenario || "").toLowerCase();
889
+ const sampleName = scenarioLower.includes("video") ? "video_decoding" : "read_an_image";
890
+ const samplePath = getDbrServerSamplePath("python", sampleName);
891
+
892
+ if (!existsSync(samplePath)) {
893
+ return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName}.` }] };
894
+ }
895
+
896
+ const content = readCodeFile(samplePath);
897
+
898
+ return {
899
+ content: [{
900
+ type: "text",
901
+ text: [
902
+ "# Quick Start: DBR Server (Python)",
903
+ "",
904
+ `**SDK Version:** ${sdkEntry.version}`,
905
+ `**Trial License:** \`${registry.trial_license}\``,
906
+ "",
907
+ "## Install",
908
+ "```bash",
909
+ sdkEntry.platforms.python.installation.pip,
910
+ "```",
911
+ "",
912
+ `## ${sampleName}.py`,
913
+ "```python",
914
+ content,
915
+ "```",
916
+ "",
917
+ `Docs: ${sdkEntry.platforms.python.docs["user-guide"]}`
918
+ ].join("\n")
919
+ }]
920
+ };
921
+ }
922
+
923
+ if (normalizedProduct === "dbr" && normalizedEdition === "web") {
924
+ const sdkEntry = registry.sdks["dbr-web"];
925
+ const scenarioLower = (scenario || "").toLowerCase();
926
+ const sampleName = scenarioLower.includes("image") ? "read-an-image" : "hello-world";
927
+ const samplePath = getWebSamplePath("root", sampleName);
928
+
929
+ if (!samplePath || !existsSync(samplePath)) {
930
+ return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName}.` }] };
931
+ }
932
+
933
+ const content = readCodeFile(samplePath);
934
+
935
+ return {
936
+ content: [{
937
+ type: "text",
938
+ text: [
939
+ "# Quick Start: DBR Web",
940
+ "",
941
+ `**SDK Version:** ${sdkEntry.version}`,
942
+ `**Trial License:** \`${registry.trial_license}\``,
943
+ "",
944
+ "## Option 1: CDN",
945
+ "```html",
946
+ `<script src="${sdkEntry.platforms.web.installation.cdn}"></script>`,
947
+ "```",
948
+ "",
949
+ "## Option 2: NPM",
950
+ "```bash",
951
+ sdkEntry.platforms.web.installation.npm,
952
+ "```",
953
+ "",
954
+ `## ${sampleName}.html`,
955
+ "```html",
956
+ content,
957
+ "```",
958
+ "",
959
+ `Docs: ${sdkEntry.platforms.web.docs["user-guide"]}`
960
+ ].join("\n")
961
+ }]
962
+ };
963
+ }
964
+
965
+ if (normalizedProduct === "dbr" && normalizedEdition === "mobile") {
966
+ const sdkEntry = registry.sdks["dbr-mobile"];
967
+ const targetPlatform = normalizedPlatform || "android";
968
+ const level = normalizeApiLevel(api_level || scenario);
969
+ const scenarioLower = (scenario || "").toLowerCase();
970
+
971
+ let sampleName = "ScanSingleBarcode";
972
+ if (scenarioLower.includes("multiple") || scenarioLower.includes("batch")) sampleName = "ScanMultipleBarcodes";
973
+ else if (scenarioLower.includes("image") || scenarioLower.includes("file")) sampleName = "DecodeFromAnImage";
974
+
975
+ if (level === "low-level") {
976
+ if (sampleName === "ScanSingleBarcode" || sampleName === "ScanMultipleBarcodes") {
977
+ sampleName = "DecodeWithCameraEnhancer";
978
+ }
979
+ }
980
+
981
+ const samplePath = getMobileSamplePath(targetPlatform, level, sampleName);
982
+ if (!existsSync(samplePath)) {
983
+ return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName}.` }] };
984
+ }
985
+
986
+ const mainFile = getMainCodeFile(targetPlatform, samplePath);
987
+ if (!mainFile) {
988
+ return { isError: true, content: [{ type: "text", text: "Could not find main code file." }] };
989
+ }
990
+
991
+ const content = readCodeFile(mainFile.path);
992
+ const langExt = mainFile.filename.split(".").pop();
993
+
994
+ let deps = "";
995
+ if (targetPlatform === "android") {
996
+ deps = `
997
+ ## Dependencies
998
+
999
+ **Project build.gradle**
1000
+ \`\`\`groovy
1001
+ allprojects {
1002
+ repositories {
1003
+ google()
1004
+ mavenCentral()
1005
+ maven { url "${registry.maven_url}" }
1006
+ }
1007
+ }
1008
+ \`\`\`
1009
+
1010
+ **App build.gradle**
1011
+ \`\`\`groovy
1012
+ dependencies {
1013
+ implementation 'com.dynamsoft:barcodereaderbundle:${sdkEntry.version}'
1014
+ }
1015
+ \`\`\`
1016
+
1017
+ **AndroidManifest.xml**
1018
+ \`\`\`xml
1019
+ <uses-permission android:name="android.permission.CAMERA" />
1020
+ \`\`\``;
1021
+ } else {
1022
+ deps = `
1023
+ ## Dependencies
1024
+
1025
+ **Podfile**
1026
+ \`\`\`ruby
1027
+ platform :ios, '11.0'
1028
+ use_frameworks!
1029
+
1030
+ target 'YourApp' do
1031
+ pod 'DynamsoftBarcodeReaderBundle'
1032
+ end
1033
+ \`\`\`
1034
+
1035
+ **Info.plist**
1036
+ \`\`\`xml
1037
+ <key>NSCameraUsageDescription</key>
1038
+ <string>Camera access for barcode scanning</string>
1039
+ \`\`\``;
1040
+ }
1041
+
1042
+ const output = [
1043
+ "# Quick Start: DBR Mobile",
1044
+ "",
1045
+ `**SDK Version:** ${sdkEntry.version}`,
1046
+ `**API Level:** ${level}`,
1047
+ `**Trial License:** \`${registry.trial_license}\``,
1048
+ "",
1049
+ deps,
1050
+ "",
1051
+ `## ${mainFile.filename}`,
1052
+ "```" + langExt,
1053
+ content,
1054
+ "```",
1055
+ "",
1056
+ `Docs: ${sdkEntry.platforms[targetPlatform]?.docs[level]?.["user-guide"] || "N/A"}`
1057
+ ];
1058
+
1059
+ return { content: [{ type: "text", text: output.join("\n") }] };
1060
+ }
1061
+
1062
+ if (normalizedProduct === "dwt") {
1063
+ const sdkEntry = registry.sdks["dwt"];
1064
+ const samplePath = getDwtSamplePath("scan", "basic-scan");
1065
+
1066
+ if (!samplePath || !existsSync(samplePath)) {
1067
+ return { isError: true, content: [{ type: "text", text: "Sample not found: basic-scan." }] };
1068
+ }
1069
+
1070
+ const content = readCodeFile(samplePath);
1071
+
1072
+ return {
1073
+ content: [{
1074
+ type: "text",
1075
+ text: [
1076
+ "# Quick Start: Dynamic Web TWAIN",
1077
+ "",
1078
+ `**SDK Version:** ${sdkEntry.version}`,
1079
+ `**Trial License:** \`${registry.trial_license}\``,
1080
+ "",
1081
+ "## Option 1: CDN",
1082
+ "```html",
1083
+ `<script src="${sdkEntry.platforms.web.installation.cdn}"></script>`,
1084
+ "```",
1085
+ "",
1086
+ "## Option 2: NPM",
1087
+ "```bash",
1088
+ sdkEntry.platforms.web.installation.npm,
1089
+ "```",
1090
+ "",
1091
+ "## basic-scan.html",
1092
+ "```html",
1093
+ content,
1094
+ "```",
1095
+ "",
1096
+ `Docs: ${sdkEntry.platforms.web.docs["user-guide"]}`
1097
+ ].join("\n")
1098
+ }]
1099
+ };
1100
+ }
1101
+
1102
+ if (normalizedProduct === "ddv") {
1103
+ const sdkEntry = registry.sdks["ddv"];
1104
+ const hint = `${scenario || ""} ${language || ""}`.toLowerCase();
1105
+ let sampleName = "hello-world";
1106
+
1107
+ if (hint.includes("react")) sampleName = "react-vite";
1108
+ else if (hint.includes("vue")) sampleName = "vue";
1109
+ else if (hint.includes("angular")) sampleName = "angular";
1110
+ else if (hint.includes("next")) sampleName = "next";
1111
+
1112
+ const samplePath = getDdvSamplePath(sampleName);
1113
+ if (!samplePath || !existsSync(samplePath)) {
1114
+ return { isError: true, content: [{ type: "text", text: `Sample not found: ${sampleName}.` }] };
1115
+ }
1116
+
1117
+ let sampleContent = "";
1118
+ let fence = "text";
1119
+ const stat = statSync(samplePath);
1120
+ if (stat.isDirectory()) {
1121
+ const readmePath = join(samplePath, "README.md");
1122
+ if (existsSync(readmePath)) {
1123
+ sampleContent = readCodeFile(readmePath);
1124
+ fence = "markdown";
1125
+ } else {
1126
+ const codeFiles = findCodeFilesInSample(samplePath);
1127
+ if (codeFiles.length > 0) {
1128
+ const preferredNames = [
1129
+ "main.tsx",
1130
+ "main.jsx",
1131
+ "main.ts",
1132
+ "main.js",
1133
+ "App.tsx",
1134
+ "App.jsx",
1135
+ "App.vue"
1136
+ ];
1137
+ const preferred = codeFiles.find((file) => preferredNames.includes(file.filename)) || codeFiles[0];
1138
+ sampleContent = readCodeFile(preferred.path);
1139
+ fence = preferred.extension ? preferred.extension.replace(".", "") : "text";
1140
+ } else {
1141
+ sampleContent = "Sample found, but no code files detected.";
1142
+ }
1143
+ }
1144
+ } else {
1145
+ sampleContent = readCodeFile(samplePath);
1146
+ fence = extname(samplePath).replace(".", "") || "text";
1147
+ }
1148
+
1149
+ return {
1150
+ content: [{
1151
+ type: "text",
1152
+ text: [
1153
+ "# Quick Start: Dynamsoft Document Viewer",
1154
+ "",
1155
+ `**SDK Version:** ${sdkEntry.version}`,
1156
+ `**Trial License:** \`${registry.trial_license}\``,
1157
+ "",
1158
+ "## Option 1: CDN",
1159
+ "```html",
1160
+ `<script src="${sdkEntry.platforms.web.installation.cdn}"></script>`,
1161
+ "```",
1162
+ "",
1163
+ "## Option 2: NPM",
1164
+ "```bash",
1165
+ sdkEntry.platforms.web.installation.npm,
1166
+ "```",
1167
+ "",
1168
+ `## ${sampleName}`,
1169
+ "```" + fence,
1170
+ sampleContent,
1171
+ "```",
1172
+ "",
1173
+ `Docs: ${sdkEntry.platforms.web.docs["user-guide"]}`
1174
+ ].join("\n")
1175
+ }]
1176
+ };
1177
+ }
1178
+
1179
+ return {
1180
+ isError: true,
1181
+ content: [{ type: "text", text: "Unsupported product/edition for quickstart." }]
1182
+ };
1183
+ }
1184
+ );
1185
+
1186
+ // ============================================================================
1187
+ // TOOL: generate_project
1188
+ // ============================================================================
1189
+
1190
+ server.registerTool(
1191
+ "generate_project",
1192
+ {
1193
+ title: "Generate Project",
1194
+ description: "Generate a project structure from a sample and return files inline (no zip/download).",
1195
+ inputSchema: {
1196
+ product: z.string().describe("Product: dcv, dbr, dwt, or ddv"),
1197
+ edition: z.string().optional().describe("Edition: mobile, web, server/desktop"),
1198
+ platform: z.string().optional().describe("Platform: android, ios, maui, react-native, flutter, js, python, cpp, java, dotnet, nodejs, angular, blazor, capacitor, electron, es6, native-ts, next, nuxt, pwa, react, requirejs, svelte, vue, webview"),
1199
+ version: z.string().optional().describe("Version constraint"),
1200
+ sample_id: z.string().optional().describe("Sample identifier (name or path)"),
1201
+ resource_uri: z.string().optional().describe("Resource URI returned by search"),
1202
+ api_level: z.string().optional().describe("API level: high-level or low-level (mobile only)")
1203
+ }
1204
+ },
1205
+ async ({ product, edition, platform, version, sample_id, resource_uri, api_level }) => {
1206
+ const normalizedProduct = normalizeProduct(product);
1207
+ const normalizedPlatform = normalizePlatform(platform);
1208
+ const normalizedEdition = normalizeEdition(edition, normalizedPlatform, normalizedProduct);
1209
+
1210
+ const policy = ensureLatestMajor({
1211
+ product: normalizedProduct,
1212
+ version,
1213
+ query: sample_id,
1214
+ edition: normalizedEdition,
1215
+ platform: normalizedPlatform
1216
+ });
1217
+
1218
+ if (!policy.ok) {
1219
+ return { isError: true, content: [{ type: "text", text: policy.message }] };
1220
+ }
1221
+
1222
+ let sampleInfo = null;
1223
+ if (resource_uri) {
1224
+ const parsed = parseResourceUri(resource_uri);
1225
+ if (!parsed) {
1226
+ return {
1227
+ isError: true,
1228
+ content: [{
1229
+ type: "text",
1230
+ text: "resource_uri must be a sample://... URI. Use search or list_samples to get a valid sample URI."
1231
+ }]
1232
+ };
1233
+ }
1234
+ if (parsed.scheme !== "sample") {
1235
+ return {
1236
+ isError: true,
1237
+ content: [{
1238
+ type: "text",
1239
+ text: "resource_uri must use the sample:// scheme. For doc:// URIs, use resources/read instead."
1240
+ }]
1241
+ };
1242
+ }
1243
+ sampleInfo = parseSampleUri(resource_uri);
1244
+ if (!sampleInfo) {
1245
+ return {
1246
+ isError: true,
1247
+ content: [{
1248
+ type: "text",
1249
+ text: "Invalid sample URI format. Use search or list_samples to obtain a valid sample:// URI."
1250
+ }]
1251
+ };
1252
+ }
1253
+ }
1254
+
1255
+ let samplePath = null;
1256
+ let sampleLabel = "";
1257
+ let sampleQuery = "";
1258
+
1259
+ if (sampleInfo) {
1260
+ sampleLabel = sampleInfo.sampleName || resource_uri;
1261
+ sampleQuery = sampleInfo.sampleName || sample_id || "";
1262
+ if (sampleInfo.product === "dbr" && sampleInfo.edition === "mobile") {
1263
+ samplePath = getMobileSamplePath(sampleInfo.platform, sampleInfo.level, sampleInfo.sampleName);
1264
+ } else if (sampleInfo.product === "dbr" && sampleInfo.edition === "web") {
1265
+ samplePath = getWebSamplePath(sampleInfo.category, sampleInfo.sampleName);
1266
+ } else if (sampleInfo.product === "dbr" && (sampleInfo.edition === "python" || sampleInfo.edition === "server")) {
1267
+ samplePath = getDbrServerSamplePath(sampleInfo.platform, sampleInfo.sampleName);
1268
+ } else if (sampleInfo.product === "dcv" && sampleInfo.edition === "mobile") {
1269
+ samplePath = getDcvMobileSamplePath(sampleInfo.platform, sampleInfo.sampleName);
1270
+ } else if (sampleInfo.product === "dcv" && sampleInfo.edition === "server") {
1271
+ samplePath = getDcvServerSamplePath(sampleInfo.platform, sampleInfo.sampleName);
1272
+ } else if (sampleInfo.product === "dcv" && sampleInfo.edition === "web") {
1273
+ samplePath = getDcvWebSamplePath(sampleInfo.sampleName);
1274
+ } else if (sampleInfo.product === "dwt") {
1275
+ samplePath = getDwtSamplePath(sampleInfo.category, sampleInfo.sampleName);
1276
+ } else if (sampleInfo.product === "ddv") {
1277
+ samplePath = getDdvSamplePath(sampleInfo.sampleName);
1278
+ }
1279
+ } else if (sample_id) {
1280
+ if (!normalizedProduct || !normalizedEdition) {
1281
+ return {
1282
+ isError: true,
1283
+ content: [{
1284
+ type: "text",
1285
+ text: "Specify product/edition or provide resource_uri. Use list_samples or get_index to discover valid scopes."
1286
+ }]
1287
+ };
1288
+ }
1289
+
1290
+ const level = normalizeApiLevel(api_level);
1291
+ const sampleName = normalizeSampleName(sample_id);
1292
+ sampleLabel = sampleName;
1293
+ sampleQuery = sampleName;
1294
+
1295
+ if (normalizedProduct === "dbr" && normalizedEdition === "mobile") {
1296
+ const targetPlatform = normalizedPlatform || "android";
1297
+ const primaryPath = getMobileSamplePath(targetPlatform, level, sampleName);
1298
+ const altLevel = level === "high-level" ? "low-level" : "high-level";
1299
+ const alternatePath = getMobileSamplePath(targetPlatform, altLevel, sampleName);
1300
+ samplePath = existsSync(primaryPath) ? primaryPath : (existsSync(alternatePath) ? alternatePath : null);
1301
+ } else if (normalizedProduct === "dcv" && normalizedEdition === "mobile") {
1302
+ const platformCandidates = normalizedPlatform
1303
+ ? [normalizedPlatform]
1304
+ : ["android", "ios", "react-native", "flutter", "maui", "spm"];
1305
+ for (const platformCandidate of platformCandidates) {
1306
+ const candidate = getDcvMobileSamplePath(platformCandidate, sampleName);
1307
+ if (candidate && existsSync(candidate)) {
1308
+ samplePath = candidate;
1309
+ break;
1310
+ }
1311
+ }
1312
+ } else if (normalizedProduct === "dcv" && normalizedEdition === "web") {
1313
+ samplePath = getDcvWebSamplePath(sampleName);
1314
+ } else if (normalizedProduct === "dcv" && normalizedEdition === "server") {
1315
+ samplePath = getDcvServerSamplePath(normalizedPlatform || "python", sampleName);
1316
+ } else if (normalizedProduct === "dbr" && normalizedEdition === "web") {
1317
+ samplePath = getWebSamplePath(undefined, sampleName);
1318
+ } else if (normalizedProduct === "dbr" && normalizedEdition === "server") {
1319
+ samplePath = getDbrServerSamplePath(normalizedPlatform || "python", sampleName);
1320
+ } else if (normalizedProduct === "dwt") {
1321
+ const categories = discoverDwtSamples();
1322
+ let foundCategory = "";
1323
+ for (const [category, samples] of Object.entries(categories)) {
1324
+ if (samples.includes(sampleName)) {
1325
+ foundCategory = category;
1326
+ break;
1327
+ }
1328
+ }
1329
+ samplePath = foundCategory ? getDwtSamplePath(foundCategory, sampleName) : null;
1330
+ } else if (normalizedProduct === "ddv") {
1331
+ samplePath = getDdvSamplePath(sampleName);
1332
+ }
1333
+ } else {
1334
+ return { isError: true, content: [{ type: "text", text: "Provide sample_id or resource_uri." }] };
1335
+ }
1336
+
1337
+ if (!samplePath || !existsSync(samplePath)) {
1338
+ const suggestions = await getSampleSuggestions({
1339
+ query: sampleQuery,
1340
+ product: normalizedProduct,
1341
+ edition: normalizedEdition,
1342
+ platform: normalizedPlatform,
1343
+ limit: 5
1344
+ });
1345
+
1346
+ const content = [{
1347
+ type: "text",
1348
+ text: [
1349
+ `Sample not found for "${sampleLabel}".`,
1350
+ suggestions.length ? "Related samples:" : "No related samples found. Try search or get_index."
1351
+ ].join("\n")
1352
+ }];
1353
+
1354
+ for (const entry of suggestions) {
1355
+ const versionLabel = entry.version ? `v${entry.version}` : "n/a";
1356
+ const scopeLabel = formatScopeLabel(entry);
1357
+ const sampleId = entry.type === "sample" ? getSampleIdFromUri(entry.uri) : "";
1358
+ const sampleHint = sampleId ? ` | sample_id: ${sampleId}` : "";
1359
+ content.push({
1360
+ type: "resource_link",
1361
+ uri: entry.uri,
1362
+ name: entry.title,
1363
+ description: `${entry.type.toUpperCase()} | ${scopeLabel} | ${versionLabel} - ${entry.summary}${sampleHint}`,
1364
+ mimeType: entry.mimeType,
1365
+ annotations: {
1366
+ audience: ["assistant"],
1367
+ priority: 0.6
1368
+ }
1369
+ });
1370
+ }
1371
+
1372
+ if (suggestions.length) {
1373
+ const plainLines = suggestions.map((entry, index) => {
1374
+ const sampleId = entry.type === "sample" ? getSampleIdFromUri(entry.uri) : "";
1375
+ const sampleNote = sampleId ? ` sample_id=${sampleId}` : "";
1376
+ return `- ${index + 1}. ${entry.uri}${sampleNote}`;
1377
+ });
1378
+ content.push({
1379
+ type: "text",
1380
+ text: ["Plain URIs (copy/paste):", ...plainLines].join("\n")
1381
+ });
1382
+ }
1383
+
1384
+ return { isError: true, content };
1385
+ }
1386
+
1387
+ const textExtensions = [
1388
+ ".java", ".kt", ".swift", ".m", ".h", ".xml", ".gradle", ".properties",
1389
+ ".pro", ".json", ".plist", ".storyboard", ".xib", ".gitignore", ".md",
1390
+ ".js", ".jsx", ".ts", ".tsx", ".vue", ".cjs", ".html", ".css"
1391
+ ];
1392
+
1393
+ const files = [];
1394
+ const stat = statSync(samplePath);
1395
+ const rootDir = stat.isDirectory() ? samplePath : dirname(samplePath);
1396
+
1397
+ function addFile(fullPath) {
1398
+ const ext = "." + fullPath.split(".").pop();
1399
+ const baseName = fullPath.split(/[\\/]/).pop();
1400
+ if (!textExtensions.includes(ext) && !["gradlew", "Podfile"].includes(baseName)) {
1401
+ return;
1402
+ }
1403
+ try {
1404
+ const content = readFileSync(fullPath, "utf-8");
1405
+ const normalized = content.replace(/\r\n/g, "\n");
1406
+ files.push({
1407
+ path: relative(rootDir, fullPath),
1408
+ content: normalized,
1409
+ ext: ext.replace(".", "")
1410
+ });
1411
+ } catch (e) {
1412
+ // Ignore binary or unreadable files
1413
+ }
1414
+ }
1415
+
1416
+ function walk(dir) {
1417
+ const entries = readdirSync(dir);
1418
+ for (const entry of entries) {
1419
+ if (["build", ".gradle", ".idea", ".git", "node_modules", "Pods", "DerivedData", "__pycache__"].includes(entry)) {
1420
+ continue;
1421
+ }
1422
+ const fullPath = join(dir, entry);
1423
+ const entryStat = statSync(fullPath);
1424
+ if (entryStat.isDirectory()) {
1425
+ walk(fullPath);
1426
+ } else {
1427
+ addFile(fullPath);
1428
+ }
1429
+ }
1430
+ }
1431
+
1432
+ if (stat.isDirectory()) {
1433
+ walk(samplePath);
1434
+ } else {
1435
+ addFile(samplePath);
1436
+ }
1437
+
1438
+ const validFiles = files.filter((f) => f.content.length < 50000);
1439
+
1440
+ const output = [
1441
+ `# Project Generation: ${sampleLabel}`,
1442
+ "",
1443
+ "This output contains the file structure for the project.",
1444
+ "Note: This tool returns files inline and does not create a downloadable zip.",
1445
+ ""
1446
+ ];
1447
+
1448
+ for (const file of validFiles) {
1449
+ output.push(`## ${file.path}`);
1450
+ output.push("```" + (file.ext || "text"));
1451
+ output.push(file.content);
1452
+ output.push("```");
1453
+ output.push("");
1454
+ }
1455
+
1456
+ return { content: [{ type: "text", text: output.join("\n") }] };
1457
+ }
1458
+ );
1459
+ // ============================================================================
1460
+ // MCP Resources (tool-discovered, lazy-read)
1461
+ // ============================================================================
1462
+
1463
+ server.server.registerCapabilities({
1464
+ resources: {
1465
+ listChanged: false,
1466
+ subscribe: true
1467
+ }
1468
+ });
1469
+
1470
+ server.server.setRequestHandler(ListResourcesRequestSchema, async () => {
1471
+ // Only surface a small, pinned set to avoid bloating the context window.
1472
+ const resources = getPinnedResources().map((r) => ({
1473
+ uri: r.uri,
1474
+ name: r.title,
1475
+ description: r.summary,
1476
+ mimeType: r.mimeType
1477
+ }));
1478
+ return { resources };
1479
+ });
1480
+
1481
+ server.server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
1482
+ const parsed = parseResourceUri(request.params.uri);
1483
+ if (parsed && ["dcv", "dbr", "dwt", "ddv"].includes(parsed.product)) {
1484
+ const policy = ensureLatestMajor({
1485
+ product: parsed.product,
1486
+ version: parsed.version,
1487
+ edition: parsed.edition,
1488
+ platform: parsed.platform
1489
+ });
1490
+ if (!policy.ok) {
1491
+ throw new Error(policy.message);
1492
+ }
1493
+ }
1494
+ const resource = await readResourceContent(request.params.uri);
1495
+ if (!resource) {
1496
+ throw new Error(`Resource not found: ${request.params.uri}`);
1497
+ }
1498
+ return { contents: [resource] };
1499
+ });
1500
+
1501
+ server.server.setRequestHandler(SubscribeRequestSchema, async () => ({}));
1502
+ server.server.setRequestHandler(UnsubscribeRequestSchema, async () => ({}));
1503
+
1504
+ // ============================================================================
1505
+ // Start Server
1506
+ // ============================================================================
1507
+
1508
+ const transport = new StdioServerTransport();
1509
+ await server.connect(transport);
1510
+
1511
+ if (ragConfig.prewarm) {
1512
+ if (ragConfig.prewarmBlock) {
1513
+ await prewarmRagIndex();
1514
+ } else {
1515
+ void prewarmRagIndex();
1516
+ }
1517
+ }
1518
+