bantou 0.1.1 → 0.2.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 (515) hide show
  1. package/.output/nitro.json +13 -0
  2. package/.output/public/_nuxt/BmGsA4i2.js +1 -0
  3. package/.output/public/_nuxt/D_G6gzEa.js +1 -0
  4. package/.output/public/_nuxt/builds/latest.json +1 -0
  5. package/.output/public/_nuxt/builds/meta/1a8fc623-6671-445b-bdd3-c3d073520a3a.json +1 -0
  6. package/.output/public/_nuxt/entry.CZSvzYhH.css +1 -0
  7. package/.output/public/_nuxt/error-404.C3wqHTJz.css +1 -0
  8. package/.output/public/_nuxt/error-500.D6rBzoDj.css +1 -0
  9. package/.output/public/_nuxt/pdFQkwM_.js +4 -0
  10. package/.output/server/chunks/_/error-500.mjs +20 -0
  11. package/.output/server/chunks/_/error-500.mjs.map +1 -0
  12. package/.output/server/chunks/nitro/nitro.mjs +5870 -0
  13. package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  14. package/.output/server/chunks/routes/mcp.mjs +22 -0
  15. package/.output/server/chunks/routes/mcp.mjs.map +1 -0
  16. package/.output/server/chunks/routes/renderer.mjs +462 -0
  17. package/.output/server/chunks/routes/renderer.mjs.map +1 -0
  18. package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  19. package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  20. package/.output/server/chunks/virtual/precomputed.mjs +4 -0
  21. package/.output/server/chunks/virtual/precomputed.mjs.map +1 -0
  22. package/.output/server/index.mjs +18 -0
  23. package/.output/server/index.mjs.map +1 -0
  24. package/.output/server/node_modules/@babel/parser/lib/index.js +14657 -0
  25. package/.output/server/node_modules/@babel/parser/package.json +50 -0
  26. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js +64 -0
  27. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js +16 -0
  28. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js +32 -0
  29. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js +246 -0
  30. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/package.json +1 -0
  31. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +41 -0
  32. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +429 -0
  33. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +971 -0
  34. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/requestBody.js +58 -0
  35. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.js +13 -0
  36. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js +961 -0
  37. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +228 -0
  38. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +51 -0
  39. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.js +57 -0
  40. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +1137 -0
  41. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +92 -0
  42. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/uriTemplate.js +239 -0
  43. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +2065 -0
  44. package/.output/server/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +87 -0
  45. package/.output/server/node_modules/@modelcontextprotocol/sdk/package.json +165 -0
  46. package/.output/server/node_modules/@parcel/watcher-wasm/index.mjs +349 -0
  47. package/.output/server/node_modules/@parcel/watcher-wasm/package.json +44 -0
  48. package/.output/server/node_modules/@parcel/watcher-wasm/watcher.wasm +0 -0
  49. package/.output/server/node_modules/@parcel/watcher-wasm/wrapper.js +88 -0
  50. package/.output/server/node_modules/@unagents/messenger-broker/dist/index.mjs +12 -0
  51. package/.output/server/node_modules/@unagents/messenger-broker/dist/shared/messenger-broker.B8W77sqB.mjs +1177 -0
  52. package/.output/server/node_modules/@unagents/messenger-broker/package.json +37 -0
  53. package/.output/server/node_modules/@unagents/messenger-client/dist/index.mjs +9 -0
  54. package/.output/server/node_modules/@unagents/messenger-client/dist/shared/messenger-client.CfQVmH_Z.mjs +975 -0
  55. package/.output/server/node_modules/@unagents/messenger-client/dist/shared/messenger-client.CoDKzubj.mjs +1000 -0
  56. package/.output/server/node_modules/@unagents/messenger-client/package.json +37 -0
  57. package/.output/server/node_modules/@unagents/messenger-protocol/dist/index.mjs +103 -0
  58. package/.output/server/node_modules/@unagents/messenger-protocol/package.json +29 -0
  59. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6802 -0
  60. package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  61. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +729 -0
  62. package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  63. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1420 -0
  64. package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  65. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1933 -0
  66. package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  67. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +7085 -0
  68. package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  69. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1917 -0
  70. package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  71. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +951 -0
  72. package/.output/server/node_modules/@vue/server-renderer/package.json +53 -0
  73. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +655 -0
  74. package/.output/server/node_modules/@vue/shared/package.json +47 -0
  75. package/.output/server/node_modules/ajv/dist/ajv.js +50 -0
  76. package/.output/server/node_modules/ajv/dist/compile/codegen/code.js +156 -0
  77. package/.output/server/node_modules/ajv/dist/compile/codegen/index.js +697 -0
  78. package/.output/server/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  79. package/.output/server/node_modules/ajv/dist/compile/errors.js +123 -0
  80. package/.output/server/node_modules/ajv/dist/compile/index.js +242 -0
  81. package/.output/server/node_modules/ajv/dist/compile/names.js +28 -0
  82. package/.output/server/node_modules/ajv/dist/compile/ref_error.js +12 -0
  83. package/.output/server/node_modules/ajv/dist/compile/resolve.js +155 -0
  84. package/.output/server/node_modules/ajv/dist/compile/rules.js +26 -0
  85. package/.output/server/node_modules/ajv/dist/compile/util.js +178 -0
  86. package/.output/server/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
  87. package/.output/server/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  88. package/.output/server/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
  89. package/.output/server/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  90. package/.output/server/node_modules/ajv/dist/compile/validate/index.js +520 -0
  91. package/.output/server/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
  92. package/.output/server/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
  93. package/.output/server/node_modules/ajv/dist/core.js +618 -0
  94. package/.output/server/node_modules/ajv/dist/refs/data.json +13 -0
  95. package/.output/server/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
  96. package/.output/server/node_modules/ajv/dist/runtime/equal.js +7 -0
  97. package/.output/server/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
  98. package/.output/server/node_modules/ajv/dist/runtime/uri.js +6 -0
  99. package/.output/server/node_modules/ajv/dist/runtime/validation_error.js +11 -0
  100. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
  101. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
  102. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
  103. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
  104. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
  105. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
  106. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  107. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
  108. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
  109. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
  110. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
  111. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
  112. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
  113. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
  114. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  115. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
  116. package/.output/server/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
  117. package/.output/server/node_modules/ajv/dist/vocabularies/code.js +131 -0
  118. package/.output/server/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
  119. package/.output/server/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
  120. package/.output/server/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
  121. package/.output/server/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
  122. package/.output/server/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
  123. package/.output/server/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
  124. package/.output/server/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
  125. package/.output/server/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
  126. package/.output/server/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
  127. package/.output/server/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
  128. package/.output/server/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
  129. package/.output/server/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
  130. package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
  131. package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
  132. package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
  133. package/.output/server/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
  134. package/.output/server/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
  135. package/.output/server/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
  136. package/.output/server/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
  137. package/.output/server/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
  138. package/.output/server/node_modules/ajv/package.json +126 -0
  139. package/.output/server/node_modules/ajv-formats/dist/formats.js +208 -0
  140. package/.output/server/node_modules/ajv-formats/dist/index.js +37 -0
  141. package/.output/server/node_modules/ajv-formats/dist/limit.js +69 -0
  142. package/.output/server/node_modules/ajv-formats/package.json +74 -0
  143. package/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  144. package/.output/server/node_modules/consola/dist/core.mjs +512 -0
  145. package/.output/server/node_modules/consola/dist/index.mjs +651 -0
  146. package/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  147. package/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  148. package/.output/server/node_modules/consola/dist/utils.mjs +54 -0
  149. package/.output/server/node_modules/consola/package.json +136 -0
  150. package/.output/server/node_modules/content-type/index.js +225 -0
  151. package/.output/server/node_modules/content-type/package.json +42 -0
  152. package/.output/server/node_modules/cookie-es/dist/index.mjs +268 -0
  153. package/.output/server/node_modules/cookie-es/package.json +46 -0
  154. package/.output/server/node_modules/crossws/dist/_chunks/_request.mjs +83 -0
  155. package/.output/server/node_modules/crossws/dist/_chunks/adapter.mjs +234 -0
  156. package/.output/server/node_modules/crossws/dist/_chunks/error.mjs +7 -0
  157. package/.output/server/node_modules/crossws/dist/_chunks/libs/ws.mjs +6 -0
  158. package/.output/server/node_modules/crossws/dist/_chunks/node.mjs +220 -0
  159. package/.output/server/node_modules/crossws/dist/_chunks/peer.mjs +208 -0
  160. package/.output/server/node_modules/crossws/dist/adapters/node.mjs +1 -0
  161. package/.output/server/node_modules/crossws/package.json +115 -0
  162. package/.output/server/node_modules/defu/dist/defu.mjs +69 -0
  163. package/.output/server/node_modules/defu/package.json +48 -0
  164. package/.output/server/node_modules/destr/dist/index.mjs +72 -0
  165. package/.output/server/node_modules/destr/package.json +47 -0
  166. package/.output/server/node_modules/devalue/index.js +17 -0
  167. package/.output/server/node_modules/devalue/package.json +39 -0
  168. package/.output/server/node_modules/devalue/src/base64.js +60 -0
  169. package/.output/server/node_modules/devalue/src/constants.js +12 -0
  170. package/.output/server/node_modules/devalue/src/operations.js +221 -0
  171. package/.output/server/node_modules/devalue/src/parse.js +279 -0
  172. package/.output/server/node_modules/devalue/src/stringify.js +433 -0
  173. package/.output/server/node_modules/devalue/src/uneval.js +698 -0
  174. package/.output/server/node_modules/devalue/src/utils.js +190 -0
  175. package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  176. package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  177. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  178. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  179. package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  180. package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  181. package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  182. package/.output/server/node_modules/entities/package.json +120 -0
  183. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  184. package/.output/server/node_modules/estree-walker/package.json +37 -0
  185. package/.output/server/node_modules/fast-deep-equal/index.js +46 -0
  186. package/.output/server/node_modules/fast-deep-equal/package.json +61 -0
  187. package/.output/server/node_modules/fast-uri/index.js +711 -0
  188. package/.output/server/node_modules/fast-uri/lib/schemes.js +272 -0
  189. package/.output/server/node_modules/fast-uri/lib/utils.js +799 -0
  190. package/.output/server/node_modules/fast-uri/package.json +68 -0
  191. package/.output/server/node_modules/get-port-please/dist/index.mjs +430 -0
  192. package/.output/server/node_modules/get-port-please/package.json +39 -0
  193. package/.output/server/node_modules/h3/dist/index.mjs +2498 -0
  194. package/.output/server/node_modules/h3/package.json +75 -0
  195. package/.output/server/node_modules/hookable/dist/index.mjs +257 -0
  196. package/.output/server/node_modules/hookable/package.json +54 -0
  197. package/.output/server/node_modules/http-shutdown/index.js +85 -0
  198. package/.output/server/node_modules/http-shutdown/package.json +32 -0
  199. package/.output/server/node_modules/iron-webcrypto/dist/index.js +298 -0
  200. package/.output/server/node_modules/iron-webcrypto/package.json +72 -0
  201. package/.output/server/node_modules/is-extglob/index.js +20 -0
  202. package/.output/server/node_modules/is-extglob/package.json +69 -0
  203. package/.output/server/node_modules/is-glob/index.js +150 -0
  204. package/.output/server/node_modules/is-glob/package.json +81 -0
  205. package/.output/server/node_modules/jiti/dist/jiti.cjs +1 -0
  206. package/.output/server/node_modules/jiti/lib/jiti.mjs +29 -0
  207. package/.output/server/node_modules/jiti/package.json +146 -0
  208. package/.output/server/node_modules/json-schema-traverse/index.js +93 -0
  209. package/.output/server/node_modules/json-schema-traverse/package.json +43 -0
  210. package/.output/server/node_modules/listhen/dist/chunks/xdg-open.mjs +1069 -0
  211. package/.output/server/node_modules/listhen/dist/index.mjs +19 -0
  212. package/.output/server/node_modules/listhen/dist/shared/listhen.tqe5I1Rl.mjs +1040 -0
  213. package/.output/server/node_modules/listhen/package.json +84 -0
  214. package/.output/server/node_modules/napi-wasm/index.mjs +1371 -0
  215. package/.output/server/node_modules/napi-wasm/package.json +33 -0
  216. package/.output/server/node_modules/node-forge/lib/aes.js +1091 -0
  217. package/.output/server/node_modules/node-forge/lib/aesCipherSuites.js +282 -0
  218. package/.output/server/node_modules/node-forge/lib/asn1-validator.js +91 -0
  219. package/.output/server/node_modules/node-forge/lib/asn1.js +1522 -0
  220. package/.output/server/node_modules/node-forge/lib/baseN.js +186 -0
  221. package/.output/server/node_modules/node-forge/lib/cipher.js +230 -0
  222. package/.output/server/node_modules/node-forge/lib/cipherModes.js +1027 -0
  223. package/.output/server/node_modules/node-forge/lib/des.js +496 -0
  224. package/.output/server/node_modules/node-forge/lib/ed25519.js +1091 -0
  225. package/.output/server/node_modules/node-forge/lib/forge.js +13 -0
  226. package/.output/server/node_modules/node-forge/lib/hmac.js +146 -0
  227. package/.output/server/node_modules/node-forge/lib/index.js +33 -0
  228. package/.output/server/node_modules/node-forge/lib/jsbn.js +1294 -0
  229. package/.output/server/node_modules/node-forge/lib/kem.js +168 -0
  230. package/.output/server/node_modules/node-forge/lib/log.js +319 -0
  231. package/.output/server/node_modules/node-forge/lib/md.all.js +13 -0
  232. package/.output/server/node_modules/node-forge/lib/md.js +11 -0
  233. package/.output/server/node_modules/node-forge/lib/md5.js +289 -0
  234. package/.output/server/node_modules/node-forge/lib/mgf.js +12 -0
  235. package/.output/server/node_modules/node-forge/lib/mgf1.js +57 -0
  236. package/.output/server/node_modules/node-forge/lib/oids.js +180 -0
  237. package/.output/server/node_modules/node-forge/lib/pbe.js +1029 -0
  238. package/.output/server/node_modules/node-forge/lib/pbkdf2.js +211 -0
  239. package/.output/server/node_modules/node-forge/lib/pem.js +413 -0
  240. package/.output/server/node_modules/node-forge/lib/pkcs1.js +276 -0
  241. package/.output/server/node_modules/node-forge/lib/pkcs12.js +1081 -0
  242. package/.output/server/node_modules/node-forge/lib/pkcs7.js +1260 -0
  243. package/.output/server/node_modules/node-forge/lib/pkcs7asn1.js +410 -0
  244. package/.output/server/node_modules/node-forge/lib/pki.js +102 -0
  245. package/.output/server/node_modules/node-forge/lib/prime.js +297 -0
  246. package/.output/server/node_modules/node-forge/lib/prng.js +419 -0
  247. package/.output/server/node_modules/node-forge/lib/pss.js +241 -0
  248. package/.output/server/node_modules/node-forge/lib/random.js +191 -0
  249. package/.output/server/node_modules/node-forge/lib/rc2.js +410 -0
  250. package/.output/server/node_modules/node-forge/lib/rsa.js +2014 -0
  251. package/.output/server/node_modules/node-forge/lib/sha1.js +319 -0
  252. package/.output/server/node_modules/node-forge/lib/sha256.js +327 -0
  253. package/.output/server/node_modules/node-forge/lib/sha512.js +561 -0
  254. package/.output/server/node_modules/node-forge/lib/ssh.js +236 -0
  255. package/.output/server/node_modules/node-forge/lib/tls.js +4334 -0
  256. package/.output/server/node_modules/node-forge/lib/util.js +2652 -0
  257. package/.output/server/node_modules/node-forge/lib/x509.js +3257 -0
  258. package/.output/server/node_modules/node-forge/package.json +123 -0
  259. package/.output/server/node_modules/node-mock-http/dist/_polyfill/buffer/node.mjs +1 -0
  260. package/.output/server/node_modules/node-mock-http/dist/_polyfill/events/node.mjs +1 -0
  261. package/.output/server/node_modules/node-mock-http/dist/index.mjs +1 -0
  262. package/.output/server/node_modules/node-mock-http/package.json +63 -0
  263. package/.output/server/node_modules/nostics/dist/formatters/ansi.mjs +19 -0
  264. package/.output/server/node_modules/nostics/dist/index.mjs +194 -0
  265. package/.output/server/node_modules/nostics/package.json +126 -0
  266. package/.output/server/node_modules/pathe/dist/index.mjs +19 -0
  267. package/.output/server/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs +249 -0
  268. package/.output/server/node_modules/pathe/package.json +61 -0
  269. package/.output/server/node_modules/picomatch/index.js +17 -0
  270. package/.output/server/node_modules/picomatch/lib/constants.js +184 -0
  271. package/.output/server/node_modules/picomatch/lib/parse.js +1425 -0
  272. package/.output/server/node_modules/picomatch/lib/picomatch.js +361 -0
  273. package/.output/server/node_modules/picomatch/lib/scan.js +403 -0
  274. package/.output/server/node_modules/picomatch/lib/utils.js +72 -0
  275. package/.output/server/node_modules/picomatch/package.json +83 -0
  276. package/.output/server/node_modules/radix3/dist/index.mjs +262 -0
  277. package/.output/server/node_modules/radix3/package.json +52 -0
  278. package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  279. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  280. package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  281. package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  282. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  283. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +141 -0
  284. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1236 -0
  285. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +446 -0
  286. package/.output/server/node_modules/source-map-js/lib/source-node.js +420 -0
  287. package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  288. package/.output/server/node_modules/source-map-js/package.json +71 -0
  289. package/.output/server/node_modules/source-map-js/source-map.js +8 -0
  290. package/.output/server/node_modules/std-env/dist/index.mjs +1 -0
  291. package/.output/server/node_modules/std-env/package.json +43 -0
  292. package/.output/server/node_modules/tinyclip/dist/index.js +143 -0
  293. package/.output/server/node_modules/tinyclip/package.json +48 -0
  294. package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  295. package/.output/server/node_modules/ufo/package.json +48 -0
  296. package/.output/server/node_modules/uncrypto/dist/crypto.node.mjs +16 -0
  297. package/.output/server/node_modules/uncrypto/package.json +60 -0
  298. package/.output/server/node_modules/unhead/dist/client.mjs +22 -0
  299. package/.output/server/node_modules/unhead/dist/legacy.mjs +33 -0
  300. package/.output/server/node_modules/unhead/dist/minify.mjs +183 -0
  301. package/.output/server/node_modules/unhead/dist/parser.mjs +518 -0
  302. package/.output/server/node_modules/unhead/dist/plugins.mjs +782 -0
  303. package/.output/server/node_modules/unhead/dist/server.mjs +99 -0
  304. package/.output/server/node_modules/unhead/dist/shared/unhead.BEmVMkeA.mjs +673 -0
  305. package/.output/server/node_modules/unhead/dist/shared/unhead.Bf_fPVYA.mjs +6 -0
  306. package/.output/server/node_modules/unhead/dist/shared/unhead.Bm4Y6XQI.mjs +17 -0
  307. package/.output/server/node_modules/unhead/dist/shared/unhead.C5Bksi2B.mjs +49 -0
  308. package/.output/server/node_modules/unhead/dist/shared/unhead.CGPOfp5O.mjs +32 -0
  309. package/.output/server/node_modules/unhead/dist/shared/unhead.CHEy9ana.mjs +7 -0
  310. package/.output/server/node_modules/unhead/dist/shared/unhead.C_7zwq8E.mjs +11 -0
  311. package/.output/server/node_modules/unhead/dist/shared/unhead.CaeaMM5q.mjs +19 -0
  312. package/.output/server/node_modules/unhead/dist/shared/unhead.D7HkBzZn.mjs +59 -0
  313. package/.output/server/node_modules/unhead/dist/shared/unhead.D9VfQWNo.mjs +240 -0
  314. package/.output/server/node_modules/unhead/dist/shared/unhead.DD4N5B4k.mjs +224 -0
  315. package/.output/server/node_modules/unhead/dist/shared/unhead.DGl9jcjg.mjs +196 -0
  316. package/.output/server/node_modules/unhead/dist/shared/unhead.DJuZwX9c.mjs +400 -0
  317. package/.output/server/node_modules/unhead/dist/shared/unhead.DkxnqlHC.mjs +264 -0
  318. package/.output/server/node_modules/unhead/dist/shared/unhead.DspMpm6y.mjs +48 -0
  319. package/.output/server/node_modules/unhead/dist/shared/unhead.o8j9utSy.mjs +208 -0
  320. package/.output/server/node_modules/unhead/dist/stream/client.mjs +33 -0
  321. package/.output/server/node_modules/unhead/dist/stream/iife.mjs +2 -0
  322. package/.output/server/node_modules/unhead/dist/stream/server.mjs +446 -0
  323. package/.output/server/node_modules/unhead/dist/utils.mjs +7 -0
  324. package/.output/server/node_modules/unhead/package.json +179 -0
  325. package/.output/server/node_modules/untun/dist/_chunks/cloudflared.mjs +179 -0
  326. package/.output/server/node_modules/untun/dist/_chunks/log.mjs +27 -0
  327. package/.output/server/node_modules/untun/dist/index.mjs +47 -0
  328. package/.output/server/node_modules/untun/package.json +44 -0
  329. package/.output/server/node_modules/uqr/dist/index.mjs +739 -0
  330. package/.output/server/node_modules/uqr/package.json +69 -0
  331. package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  332. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  333. package/.output/server/node_modules/vue/index.js +7 -0
  334. package/.output/server/node_modules/vue/index.mjs +1 -0
  335. package/.output/server/node_modules/vue/package.json +112 -0
  336. package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  337. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +687 -0
  338. package/.output/server/node_modules/vue-bundle-renderer/package.json +66 -0
  339. package/.output/server/node_modules/zod/index.js +7 -0
  340. package/.output/server/node_modules/zod/package.json +147 -0
  341. package/.output/server/node_modules/zod/v3/ZodError.js +143 -0
  342. package/.output/server/node_modules/zod/v3/errors.js +9 -0
  343. package/.output/server/node_modules/zod/v3/external.js +6 -0
  344. package/.output/server/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  345. package/.output/server/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  346. package/.output/server/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  347. package/.output/server/node_modules/zod/v3/helpers/util.js +133 -0
  348. package/.output/server/node_modules/zod/v3/index.js +4 -0
  349. package/.output/server/node_modules/zod/v3/locales/en.js +109 -0
  350. package/.output/server/node_modules/zod/v3/package.json +7 -0
  351. package/.output/server/node_modules/zod/v3/types.js +3697 -0
  352. package/.output/server/node_modules/zod/v4/classic/checks.js +1 -0
  353. package/.output/server/node_modules/zod/v4/classic/coerce.js +17 -0
  354. package/.output/server/node_modules/zod/v4/classic/compat.js +31 -0
  355. package/.output/server/node_modules/zod/v4/classic/deep-partial.js +13 -0
  356. package/.output/server/node_modules/zod/v4/classic/errors.js +57 -0
  357. package/.output/server/node_modules/zod/v4/classic/external.js +17 -0
  358. package/.output/server/node_modules/zod/v4/classic/from-json-schema.js +881 -0
  359. package/.output/server/node_modules/zod/v4/classic/in-out.js +36 -0
  360. package/.output/server/node_modules/zod/v4/classic/index.js +4 -0
  361. package/.output/server/node_modules/zod/v4/classic/iso.js +15 -0
  362. package/.output/server/node_modules/zod/v4/classic/package.json +7 -0
  363. package/.output/server/node_modules/zod/v4/classic/parse.js +16 -0
  364. package/.output/server/node_modules/zod/v4/classic/schemas.js +1535 -0
  365. package/.output/server/node_modules/zod/v4/core/api.js +1107 -0
  366. package/.output/server/node_modules/zod/v4/core/checks.js +516 -0
  367. package/.output/server/node_modules/zod/v4/core/compile.js +1866 -0
  368. package/.output/server/node_modules/zod/v4/core/core.js +141 -0
  369. package/.output/server/node_modules/zod/v4/core/doc.js +38 -0
  370. package/.output/server/node_modules/zod/v4/core/errors.js +267 -0
  371. package/.output/server/node_modules/zod/v4/core/index.js +19 -0
  372. package/.output/server/node_modules/zod/v4/core/json-schema-generator.js +99 -0
  373. package/.output/server/node_modules/zod/v4/core/json-schema-processors.js +843 -0
  374. package/.output/server/node_modules/zod/v4/core/json-schema.js +1 -0
  375. package/.output/server/node_modules/zod/v4/core/memoizer.js +311 -0
  376. package/.output/server/node_modules/zod/v4/core/package.json +7 -0
  377. package/.output/server/node_modules/zod/v4/core/parse.js +175 -0
  378. package/.output/server/node_modules/zod/v4/core/regexes.js +156 -0
  379. package/.output/server/node_modules/zod/v4/core/registries.js +51 -0
  380. package/.output/server/node_modules/zod/v4/core/schemas.js +2636 -0
  381. package/.output/server/node_modules/zod/v4/core/to-json-schema.js +651 -0
  382. package/.output/server/node_modules/zod/v4/core/util.js +873 -0
  383. package/.output/server/node_modules/zod/v4/core/versions.js +5 -0
  384. package/.output/server/node_modules/zod/v4/core/visit.js +169 -0
  385. package/.output/server/node_modules/zod/v4/index.js +4 -0
  386. package/.output/server/node_modules/zod/v4/locales/ar.js +111 -0
  387. package/.output/server/node_modules/zod/v4/locales/az.js +110 -0
  388. package/.output/server/node_modules/zod/v4/locales/be.js +168 -0
  389. package/.output/server/node_modules/zod/v4/locales/bg.js +125 -0
  390. package/.output/server/node_modules/zod/v4/locales/bn.js +113 -0
  391. package/.output/server/node_modules/zod/v4/locales/ca.js +112 -0
  392. package/.output/server/node_modules/zod/v4/locales/ckb.js +133 -0
  393. package/.output/server/node_modules/zod/v4/locales/cs.js +116 -0
  394. package/.output/server/node_modules/zod/v4/locales/da.js +120 -0
  395. package/.output/server/node_modules/zod/v4/locales/de.js +113 -0
  396. package/.output/server/node_modules/zod/v4/locales/el.js +112 -0
  397. package/.output/server/node_modules/zod/v4/locales/en.js +125 -0
  398. package/.output/server/node_modules/zod/v4/locales/eo.js +114 -0
  399. package/.output/server/node_modules/zod/v4/locales/es.js +136 -0
  400. package/.output/server/node_modules/zod/v4/locales/fa.js +119 -0
  401. package/.output/server/node_modules/zod/v4/locales/fi.js +117 -0
  402. package/.output/server/node_modules/zod/v4/locales/fr-CA.js +112 -0
  403. package/.output/server/node_modules/zod/v4/locales/fr.js +129 -0
  404. package/.output/server/node_modules/zod/v4/locales/gu.js +113 -0
  405. package/.output/server/node_modules/zod/v4/locales/he.js +221 -0
  406. package/.output/server/node_modules/zod/v4/locales/hi.js +111 -0
  407. package/.output/server/node_modules/zod/v4/locales/hr.js +126 -0
  408. package/.output/server/node_modules/zod/v4/locales/hu.js +113 -0
  409. package/.output/server/node_modules/zod/v4/locales/hy.js +158 -0
  410. package/.output/server/node_modules/zod/v4/locales/id.js +111 -0
  411. package/.output/server/node_modules/zod/v4/locales/index.js +63 -0
  412. package/.output/server/node_modules/zod/v4/locales/is.js +114 -0
  413. package/.output/server/node_modules/zod/v4/locales/it.js +113 -0
  414. package/.output/server/node_modules/zod/v4/locales/ja.js +112 -0
  415. package/.output/server/node_modules/zod/v4/locales/ka.js +117 -0
  416. package/.output/server/node_modules/zod/v4/locales/kh.js +5 -0
  417. package/.output/server/node_modules/zod/v4/locales/km.js +115 -0
  418. package/.output/server/node_modules/zod/v4/locales/kn.js +116 -0
  419. package/.output/server/node_modules/zod/v4/locales/ko.js +116 -0
  420. package/.output/server/node_modules/zod/v4/locales/lt.js +207 -0
  421. package/.output/server/node_modules/zod/v4/locales/mk.js +114 -0
  422. package/.output/server/node_modules/zod/v4/locales/ms.js +112 -0
  423. package/.output/server/node_modules/zod/v4/locales/ne.js +111 -0
  424. package/.output/server/node_modules/zod/v4/locales/nl.js +115 -0
  425. package/.output/server/node_modules/zod/v4/locales/nn.js +113 -0
  426. package/.output/server/node_modules/zod/v4/locales/no.js +113 -0
  427. package/.output/server/node_modules/zod/v4/locales/ota.js +114 -0
  428. package/.output/server/node_modules/zod/v4/locales/package.json +7 -0
  429. package/.output/server/node_modules/zod/v4/locales/pl.js +114 -0
  430. package/.output/server/node_modules/zod/v4/locales/ps.js +119 -0
  431. package/.output/server/node_modules/zod/v4/locales/pt-BR.js +143 -0
  432. package/.output/server/node_modules/zod/v4/locales/pt.js +142 -0
  433. package/.output/server/node_modules/zod/v4/locales/ro.js +122 -0
  434. package/.output/server/node_modules/zod/v4/locales/ru.js +168 -0
  435. package/.output/server/node_modules/zod/v4/locales/sk.js +116 -0
  436. package/.output/server/node_modules/zod/v4/locales/sl.js +114 -0
  437. package/.output/server/node_modules/zod/v4/locales/sv.js +115 -0
  438. package/.output/server/node_modules/zod/v4/locales/ta.js +115 -0
  439. package/.output/server/node_modules/zod/v4/locales/tg.js +117 -0
  440. package/.output/server/node_modules/zod/v4/locales/th.js +115 -0
  441. package/.output/server/node_modules/zod/v4/locales/tk.js +107 -0
  442. package/.output/server/node_modules/zod/v4/locales/tr.js +110 -0
  443. package/.output/server/node_modules/zod/v4/locales/ua.js +5 -0
  444. package/.output/server/node_modules/zod/v4/locales/uk.js +113 -0
  445. package/.output/server/node_modules/zod/v4/locales/ur.js +115 -0
  446. package/.output/server/node_modules/zod/v4/locales/uz.js +113 -0
  447. package/.output/server/node_modules/zod/v4/locales/vi.js +113 -0
  448. package/.output/server/node_modules/zod/v4/locales/yo.js +112 -0
  449. package/.output/server/node_modules/zod/v4/locales/zh-CN.js +114 -0
  450. package/.output/server/node_modules/zod/v4/locales/zh-TW.js +112 -0
  451. package/.output/server/node_modules/zod/v4/mini/checks.js +1 -0
  452. package/.output/server/node_modules/zod/v4/mini/coerce.js +22 -0
  453. package/.output/server/node_modules/zod/v4/mini/deep-partial.js +13 -0
  454. package/.output/server/node_modules/zod/v4/mini/external.js +16 -0
  455. package/.output/server/node_modules/zod/v4/mini/in-out.js +36 -0
  456. package/.output/server/node_modules/zod/v4/mini/iso.js +34 -0
  457. package/.output/server/node_modules/zod/v4/mini/package.json +7 -0
  458. package/.output/server/node_modules/zod/v4/mini/parse.js +1 -0
  459. package/.output/server/node_modules/zod/v4/mini/schemas.js +1002 -0
  460. package/.output/server/node_modules/zod/v4/package.json +7 -0
  461. package/.output/server/node_modules/zod/v4-mini/index.js +3 -0
  462. package/.output/server/node_modules/zod/v4-mini/package.json +7 -0
  463. package/.output/server/node_modules/zod-to-json-schema/dist/esm/Options.js +46 -0
  464. package/.output/server/node_modules/zod-to-json-schema/dist/esm/Refs.js +22 -0
  465. package/.output/server/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +14 -0
  466. package/.output/server/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +8 -0
  467. package/.output/server/node_modules/zod-to-json-schema/dist/esm/index.js +40 -0
  468. package/.output/server/node_modules/zod-to-json-schema/dist/esm/package.json +1 -0
  469. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parseDef.js +62 -0
  470. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parseTypes.js +1 -0
  471. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +17 -0
  472. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +26 -0
  473. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +49 -0
  474. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +5 -0
  475. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +4 -0
  476. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +4 -0
  477. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +46 -0
  478. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +7 -0
  479. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +7 -0
  480. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +6 -0
  481. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +52 -0
  482. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +21 -0
  483. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +26 -0
  484. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +16 -0
  485. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +11 -0
  486. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +10 -0
  487. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +33 -0
  488. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +52 -0
  489. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +72 -0
  490. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +21 -0
  491. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +20 -0
  492. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +4 -0
  493. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +4 -0
  494. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +61 -0
  495. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +20 -0
  496. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +352 -0
  497. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +32 -0
  498. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +6 -0
  499. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +80 -0
  500. package/.output/server/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +4 -0
  501. package/.output/server/node_modules/zod-to-json-schema/dist/esm/selectParser.js +105 -0
  502. package/.output/server/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +87 -0
  503. package/.output/server/node_modules/zod-to-json-schema/package.json +85 -0
  504. package/.output/server/package.json +64 -0
  505. package/README.md +226 -23
  506. package/bin/bantou.mjs +33 -0
  507. package/package.json +18 -8
  508. package/protocol/PROTOCOL.md +26 -0
  509. package/protocol/protocol.json +92 -0
  510. package/dist/cap.js +0 -7
  511. package/dist/cli.js +0 -27
  512. package/dist/config.js +0 -23
  513. package/dist/daemon.js +0 -23
  514. package/dist/session.js +0 -7
  515. package/dist/workspace.js +0 -8
@@ -0,0 +1,297 @@
1
+ /**
2
+ * Prime number generation API.
3
+ *
4
+ * @author Dave Longley
5
+ *
6
+ * Copyright (c) 2014 Digital Bazaar, Inc.
7
+ */
8
+ var forge = require('./forge');
9
+ require('./util');
10
+ require('./jsbn');
11
+ require('./random');
12
+
13
+ (function() {
14
+
15
+ // forge.prime already defined
16
+ if(forge.prime) {
17
+ module.exports = forge.prime;
18
+ return;
19
+ }
20
+
21
+ /* PRIME API */
22
+ var prime = module.exports = forge.prime = forge.prime || {};
23
+
24
+ var BigInteger = forge.jsbn.BigInteger;
25
+
26
+ // primes are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29
27
+ var GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];
28
+ var THIRTY = new BigInteger(null);
29
+ THIRTY.fromInt(30);
30
+ var op_or = function(x, y) {return x|y;};
31
+
32
+ /**
33
+ * Generates a random probable prime with the given number of bits.
34
+ *
35
+ * Alternative algorithms can be specified by name as a string or as an
36
+ * object with custom options like so:
37
+ *
38
+ * {
39
+ * name: 'PRIMEINC',
40
+ * options: {
41
+ * maxBlockTime: <the maximum amount of time to block the main
42
+ * thread before allowing I/O other JS to run>,
43
+ * millerRabinTests: <the number of miller-rabin tests to run>,
44
+ * workerScript: <the worker script URL>,
45
+ * workers: <the number of web workers (if supported) to use,
46
+ * -1 to use estimated cores minus one>.
47
+ * workLoad: the size of the work load, ie: number of possible prime
48
+ * numbers for each web worker to check per work assignment,
49
+ * (default: 100).
50
+ * }
51
+ * }
52
+ *
53
+ * @param bits the number of bits for the prime number.
54
+ * @param options the options to use.
55
+ * [algorithm] the algorithm to use (default: 'PRIMEINC').
56
+ * [prng] a custom crypto-secure pseudo-random number generator to use,
57
+ * that must define "getBytesSync".
58
+ *
59
+ * @return callback(err, num) called once the operation completes.
60
+ */
61
+ prime.generateProbablePrime = function(bits, options, callback) {
62
+ if(typeof options === 'function') {
63
+ callback = options;
64
+ options = {};
65
+ }
66
+ options = options || {};
67
+
68
+ // default to PRIMEINC algorithm
69
+ var algorithm = options.algorithm || 'PRIMEINC';
70
+ if(typeof algorithm === 'string') {
71
+ algorithm = {name: algorithm};
72
+ }
73
+ algorithm.options = algorithm.options || {};
74
+
75
+ // create prng with api that matches BigInteger secure random
76
+ var prng = options.prng || forge.random;
77
+ var rng = {
78
+ // x is an array to fill with bytes
79
+ nextBytes: function(x) {
80
+ var b = prng.getBytesSync(x.length);
81
+ for(var i = 0; i < x.length; ++i) {
82
+ x[i] = b.charCodeAt(i);
83
+ }
84
+ }
85
+ };
86
+
87
+ if(algorithm.name === 'PRIMEINC') {
88
+ return primeincFindPrime(bits, rng, algorithm.options, callback);
89
+ }
90
+
91
+ throw new Error('Invalid prime generation algorithm: ' + algorithm.name);
92
+ };
93
+
94
+ function primeincFindPrime(bits, rng, options, callback) {
95
+ if('workers' in options) {
96
+ return primeincFindPrimeWithWorkers(bits, rng, options, callback);
97
+ }
98
+ return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);
99
+ }
100
+
101
+ function primeincFindPrimeWithoutWorkers(bits, rng, options, callback) {
102
+ // initialize random number
103
+ var num = generateRandom(bits, rng);
104
+
105
+ /* Note: All primes are of the form 30k+i for i < 30 and gcd(30, i)=1. The
106
+ number we are given is always aligned at 30k + 1. Each time the number is
107
+ determined not to be prime we add to get to the next 'i', eg: if the number
108
+ was at 30k + 1 we add 6. */
109
+ var deltaIdx = 0;
110
+
111
+ // get required number of MR tests
112
+ var mrTests = getMillerRabinTests(num.bitLength());
113
+ if('millerRabinTests' in options) {
114
+ mrTests = options.millerRabinTests;
115
+ }
116
+
117
+ // find prime nearest to 'num' for maxBlockTime ms
118
+ // 10 ms gives 5ms of leeway for other calculations before dropping
119
+ // below 60fps (1000/60 == 16.67), but in reality, the number will
120
+ // likely be higher due to an 'atomic' big int modPow
121
+ var maxBlockTime = 10;
122
+ if('maxBlockTime' in options) {
123
+ maxBlockTime = options.maxBlockTime;
124
+ }
125
+
126
+ _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);
127
+ }
128
+
129
+ function _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback) {
130
+ var start = +new Date();
131
+ do {
132
+ // overflow, regenerate random number
133
+ if(num.bitLength() > bits) {
134
+ num = generateRandom(bits, rng);
135
+ }
136
+ // do primality test
137
+ if(num.isProbablePrime(mrTests)) {
138
+ return callback(null, num);
139
+ }
140
+ // get next potential prime
141
+ num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);
142
+ } while(maxBlockTime < 0 || (+new Date() - start < maxBlockTime));
143
+
144
+ // keep trying later
145
+ forge.util.setImmediate(function() {
146
+ _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);
147
+ });
148
+ }
149
+
150
+ // NOTE: This algorithm is indeterminate in nature because workers
151
+ // run in parallel looking at different segments of numbers. Even if this
152
+ // algorithm is run twice with the same input from a predictable RNG, it
153
+ // may produce different outputs.
154
+ function primeincFindPrimeWithWorkers(bits, rng, options, callback) {
155
+ // web workers unavailable
156
+ if(typeof Worker === 'undefined') {
157
+ return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);
158
+ }
159
+
160
+ // initialize random number
161
+ var num = generateRandom(bits, rng);
162
+
163
+ // use web workers to generate keys
164
+ var numWorkers = options.workers;
165
+ var workLoad = options.workLoad || 100;
166
+ var range = workLoad * 30 / 8;
167
+ var workerScript = options.workerScript || 'forge/prime.worker.js';
168
+ if(numWorkers === -1) {
169
+ return forge.util.estimateCores(function(err, cores) {
170
+ if(err) {
171
+ // default to 2
172
+ cores = 2;
173
+ }
174
+ numWorkers = cores - 1;
175
+ generate();
176
+ });
177
+ }
178
+ generate();
179
+
180
+ function generate() {
181
+ // require at least 1 worker
182
+ numWorkers = Math.max(1, numWorkers);
183
+
184
+ // TODO: consider optimizing by starting workers outside getPrime() ...
185
+ // note that in order to clean up they will have to be made internally
186
+ // asynchronous which may actually be slower
187
+
188
+ // start workers immediately
189
+ var workers = [];
190
+ for(var i = 0; i < numWorkers; ++i) {
191
+ // FIXME: fix path or use blob URLs
192
+ workers[i] = new Worker(workerScript);
193
+ }
194
+ var running = numWorkers;
195
+
196
+ // listen for requests from workers and assign ranges to find prime
197
+ for(var i = 0; i < numWorkers; ++i) {
198
+ workers[i].addEventListener('message', workerMessage);
199
+ }
200
+
201
+ /* Note: The distribution of random numbers is unknown. Therefore, each
202
+ web worker is continuously allocated a range of numbers to check for a
203
+ random number until one is found.
204
+
205
+ Every 30 numbers will be checked just 8 times, because prime numbers
206
+ have the form:
207
+
208
+ 30k+i, for i < 30 and gcd(30, i)=1 (there are 8 values of i for this)
209
+
210
+ Therefore, if we want a web worker to run N checks before asking for
211
+ a new range of numbers, each range must contain N*30/8 numbers.
212
+
213
+ For 100 checks (workLoad), this is a range of 375. */
214
+
215
+ var found = false;
216
+ function workerMessage(e) {
217
+ // ignore message, prime already found
218
+ if(found) {
219
+ return;
220
+ }
221
+
222
+ --running;
223
+ var data = e.data;
224
+ if(data.found) {
225
+ // terminate all workers
226
+ for(var i = 0; i < workers.length; ++i) {
227
+ workers[i].terminate();
228
+ }
229
+ found = true;
230
+ return callback(null, new BigInteger(data.prime, 16));
231
+ }
232
+
233
+ // overflow, regenerate random number
234
+ if(num.bitLength() > bits) {
235
+ num = generateRandom(bits, rng);
236
+ }
237
+
238
+ // assign new range to check
239
+ var hex = num.toString(16);
240
+
241
+ // start prime search
242
+ e.target.postMessage({
243
+ hex: hex,
244
+ workLoad: workLoad
245
+ });
246
+
247
+ num.dAddOffset(range, 0);
248
+ }
249
+ }
250
+ }
251
+
252
+ /**
253
+ * Generates a random number using the given number of bits and RNG.
254
+ *
255
+ * @param bits the number of bits for the number.
256
+ * @param rng the random number generator to use.
257
+ *
258
+ * @return the random number.
259
+ */
260
+ function generateRandom(bits, rng) {
261
+ var num = new BigInteger(bits, rng);
262
+ // force MSB set
263
+ var bits1 = bits - 1;
264
+ if(!num.testBit(bits1)) {
265
+ num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1), op_or, num);
266
+ }
267
+ // align number on 30k+1 boundary
268
+ num.dAddOffset(31 - num.mod(THIRTY).byteValue(), 0);
269
+ return num;
270
+ }
271
+
272
+ /**
273
+ * Returns the required number of Miller-Rabin tests to generate a
274
+ * prime with an error probability of (1/2)^80.
275
+ *
276
+ * See Handbook of Applied Cryptography Chapter 4, Table 4.4.
277
+ *
278
+ * @param bits the bit size.
279
+ *
280
+ * @return the required number of iterations.
281
+ */
282
+ function getMillerRabinTests(bits) {
283
+ if(bits <= 100) return 27;
284
+ if(bits <= 150) return 18;
285
+ if(bits <= 200) return 15;
286
+ if(bits <= 250) return 12;
287
+ if(bits <= 300) return 9;
288
+ if(bits <= 350) return 8;
289
+ if(bits <= 400) return 7;
290
+ if(bits <= 500) return 6;
291
+ if(bits <= 600) return 5;
292
+ if(bits <= 800) return 4;
293
+ if(bits <= 1250) return 3;
294
+ return 2;
295
+ }
296
+
297
+ })();
@@ -0,0 +1,419 @@
1
+ /**
2
+ * A javascript implementation of a cryptographically-secure
3
+ * Pseudo Random Number Generator (PRNG). The Fortuna algorithm is followed
4
+ * here though the use of SHA-256 is not enforced; when generating an
5
+ * a PRNG context, the hashing algorithm and block cipher used for
6
+ * the generator are specified via a plugin.
7
+ *
8
+ * @author Dave Longley
9
+ *
10
+ * Copyright (c) 2010-2014 Digital Bazaar, Inc.
11
+ */
12
+ var forge = require('./forge');
13
+ require('./util');
14
+
15
+ var _crypto = null;
16
+ if(forge.util.isNodejs && !forge.options.usePureJavaScript &&
17
+ !process.versions['node-webkit']) {
18
+ _crypto = require('crypto');
19
+ }
20
+
21
+ /* PRNG API */
22
+ var prng = module.exports = forge.prng = forge.prng || {};
23
+
24
+ /**
25
+ * Creates a new PRNG context.
26
+ *
27
+ * A PRNG plugin must be passed in that will provide:
28
+ *
29
+ * 1. A function that initializes the key and seed of a PRNG context. It
30
+ * will be given a 16 byte key and a 16 byte seed. Any key expansion
31
+ * or transformation of the seed from a byte string into an array of
32
+ * integers (or similar) should be performed.
33
+ * 2. The cryptographic function used by the generator. It takes a key and
34
+ * a seed.
35
+ * 3. A seed increment function. It takes the seed and returns seed + 1.
36
+ * 4. An api to create a message digest.
37
+ *
38
+ * For an example, see random.js.
39
+ *
40
+ * @param plugin the PRNG plugin to use.
41
+ */
42
+ prng.create = function(plugin) {
43
+ var ctx = {
44
+ plugin: plugin,
45
+ key: null,
46
+ seed: null,
47
+ time: null,
48
+ // number of reseeds so far
49
+ reseeds: 0,
50
+ // amount of data generated so far
51
+ generated: 0,
52
+ // no initial key bytes
53
+ keyBytes: ''
54
+ };
55
+
56
+ // create 32 entropy pools (each is a message digest)
57
+ var md = plugin.md;
58
+ var pools = new Array(32);
59
+ for(var i = 0; i < 32; ++i) {
60
+ pools[i] = md.create();
61
+ }
62
+ ctx.pools = pools;
63
+
64
+ // entropy pools are written to cyclically, starting at index 0
65
+ ctx.pool = 0;
66
+
67
+ /**
68
+ * Generates random bytes. The bytes may be generated synchronously or
69
+ * asynchronously. Web workers must use the asynchronous interface or
70
+ * else the behavior is undefined.
71
+ *
72
+ * @param count the number of random bytes to generate.
73
+ * @param [callback(err, bytes)] called once the operation completes.
74
+ *
75
+ * @return count random bytes as a string.
76
+ */
77
+ ctx.generate = function(count, callback) {
78
+ // do synchronously
79
+ if(!callback) {
80
+ return ctx.generateSync(count);
81
+ }
82
+
83
+ // simple generator using counter-based CBC
84
+ var cipher = ctx.plugin.cipher;
85
+ var increment = ctx.plugin.increment;
86
+ var formatKey = ctx.plugin.formatKey;
87
+ var formatSeed = ctx.plugin.formatSeed;
88
+ var b = forge.util.createBuffer();
89
+
90
+ // paranoid deviation from Fortuna:
91
+ // reset key for every request to protect previously
92
+ // generated random bytes should the key be discovered;
93
+ // there is no 100ms based reseeding because of this
94
+ // forced reseed for every `generate` call
95
+ ctx.key = null;
96
+
97
+ generate();
98
+
99
+ function generate(err) {
100
+ if(err) {
101
+ return callback(err);
102
+ }
103
+
104
+ // sufficient bytes generated
105
+ if(b.length() >= count) {
106
+ return callback(null, b.getBytes(count));
107
+ }
108
+
109
+ // if amount of data generated is greater than 1 MiB, trigger reseed
110
+ if(ctx.generated > 0xfffff) {
111
+ ctx.key = null;
112
+ }
113
+
114
+ if(ctx.key === null) {
115
+ // prevent stack overflow
116
+ return forge.util.nextTick(function() {
117
+ _reseed(generate);
118
+ });
119
+ }
120
+
121
+ // generate the random bytes
122
+ var bytes = cipher(ctx.key, ctx.seed);
123
+ ctx.generated += bytes.length;
124
+ b.putBytes(bytes);
125
+
126
+ // generate bytes for a new key and seed
127
+ ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));
128
+ ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));
129
+
130
+ forge.util.setImmediate(generate);
131
+ }
132
+ };
133
+
134
+ /**
135
+ * Generates random bytes synchronously.
136
+ *
137
+ * @param count the number of random bytes to generate.
138
+ *
139
+ * @return count random bytes as a string.
140
+ */
141
+ ctx.generateSync = function(count) {
142
+ // simple generator using counter-based CBC
143
+ var cipher = ctx.plugin.cipher;
144
+ var increment = ctx.plugin.increment;
145
+ var formatKey = ctx.plugin.formatKey;
146
+ var formatSeed = ctx.plugin.formatSeed;
147
+
148
+ // paranoid deviation from Fortuna:
149
+ // reset key for every request to protect previously
150
+ // generated random bytes should the key be discovered;
151
+ // there is no 100ms based reseeding because of this
152
+ // forced reseed for every `generateSync` call
153
+ ctx.key = null;
154
+
155
+ var b = forge.util.createBuffer();
156
+ while(b.length() < count) {
157
+ // if amount of data generated is greater than 1 MiB, trigger reseed
158
+ if(ctx.generated > 0xfffff) {
159
+ ctx.key = null;
160
+ }
161
+
162
+ if(ctx.key === null) {
163
+ _reseedSync();
164
+ }
165
+
166
+ // generate the random bytes
167
+ var bytes = cipher(ctx.key, ctx.seed);
168
+ ctx.generated += bytes.length;
169
+ b.putBytes(bytes);
170
+
171
+ // generate bytes for a new key and seed
172
+ ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));
173
+ ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));
174
+ }
175
+
176
+ return b.getBytes(count);
177
+ };
178
+
179
+ /**
180
+ * Private function that asynchronously reseeds a generator.
181
+ *
182
+ * @param callback(err) called once the operation completes.
183
+ */
184
+ function _reseed(callback) {
185
+ if(ctx.pools[0].messageLength >= 32) {
186
+ _seed();
187
+ return callback();
188
+ }
189
+ // not enough seed data...
190
+ var needed = (32 - ctx.pools[0].messageLength) << 5;
191
+ ctx.seedFile(needed, function(err, bytes) {
192
+ if(err) {
193
+ return callback(err);
194
+ }
195
+ ctx.collect(bytes);
196
+ _seed();
197
+ callback();
198
+ });
199
+ }
200
+
201
+ /**
202
+ * Private function that synchronously reseeds a generator.
203
+ */
204
+ function _reseedSync() {
205
+ if(ctx.pools[0].messageLength >= 32) {
206
+ return _seed();
207
+ }
208
+ // not enough seed data...
209
+ var needed = (32 - ctx.pools[0].messageLength) << 5;
210
+ ctx.collect(ctx.seedFileSync(needed));
211
+ _seed();
212
+ }
213
+
214
+ /**
215
+ * Private function that seeds a generator once enough bytes are available.
216
+ */
217
+ function _seed() {
218
+ // update reseed count
219
+ ctx.reseeds = (ctx.reseeds === 0xffffffff) ? 0 : ctx.reseeds + 1;
220
+
221
+ // goal is to update `key` via:
222
+ // key = hash(key + s)
223
+ // where 's' is all collected entropy from selected pools, then...
224
+
225
+ // create a plugin-based message digest
226
+ var md = ctx.plugin.md.create();
227
+
228
+ // consume current key bytes
229
+ md.update(ctx.keyBytes);
230
+
231
+ // digest the entropy of pools whose index k meet the
232
+ // condition 'n mod 2^k == 0' where n is the number of reseeds
233
+ var _2powK = 1;
234
+ for(var k = 0; k < 32; ++k) {
235
+ if(ctx.reseeds % _2powK === 0) {
236
+ md.update(ctx.pools[k].digest().getBytes());
237
+ ctx.pools[k].start();
238
+ }
239
+ _2powK = _2powK << 1;
240
+ }
241
+
242
+ // get digest for key bytes
243
+ ctx.keyBytes = md.digest().getBytes();
244
+
245
+ // paranoid deviation from Fortuna:
246
+ // update `seed` via `seed = hash(key)`
247
+ // instead of initializing to zero once and only
248
+ // ever incrementing it
249
+ md.start();
250
+ md.update(ctx.keyBytes);
251
+ var seedBytes = md.digest().getBytes();
252
+
253
+ // update state
254
+ ctx.key = ctx.plugin.formatKey(ctx.keyBytes);
255
+ ctx.seed = ctx.plugin.formatSeed(seedBytes);
256
+ ctx.generated = 0;
257
+ }
258
+
259
+ /**
260
+ * The built-in default seedFile. This seedFile is used when entropy
261
+ * is needed immediately.
262
+ *
263
+ * @param needed the number of bytes that are needed.
264
+ *
265
+ * @return the random bytes.
266
+ */
267
+ function defaultSeedFile(needed) {
268
+ // use window.crypto.getRandomValues strong source of entropy if available
269
+ var getRandomValues = null;
270
+ var globalScope = forge.util.globalScope;
271
+ var _crypto = globalScope.crypto || globalScope.msCrypto;
272
+ if(_crypto && _crypto.getRandomValues) {
273
+ getRandomValues = function(arr) {
274
+ return _crypto.getRandomValues(arr);
275
+ };
276
+ }
277
+
278
+ var b = forge.util.createBuffer();
279
+ if(getRandomValues) {
280
+ while(b.length() < needed) {
281
+ // max byte length is 65536 before QuotaExceededError is thrown
282
+ // http://www.w3.org/TR/WebCryptoAPI/#RandomSource-method-getRandomValues
283
+ var count = Math.max(1, Math.min(needed - b.length(), 65536) / 4);
284
+ var entropy = new Uint32Array(Math.floor(count));
285
+ try {
286
+ getRandomValues(entropy);
287
+ for(var i = 0; i < entropy.length; ++i) {
288
+ b.putInt32(entropy[i]);
289
+ }
290
+ } catch(e) {
291
+ /* only ignore QuotaExceededError */
292
+ if(!(typeof QuotaExceededError !== 'undefined' &&
293
+ e instanceof QuotaExceededError)) {
294
+ throw e;
295
+ }
296
+ }
297
+ }
298
+ }
299
+
300
+ // be sad and add some weak random data
301
+ if(b.length() < needed) {
302
+ /* Draws from Park-Miller "minimal standard" 31 bit PRNG,
303
+ implemented with David G. Carta's optimization: with 32 bit math
304
+ and without division (Public Domain). */
305
+ var hi, lo, next;
306
+ var seed = Math.floor(Math.random() * 0x010000);
307
+ while(b.length() < needed) {
308
+ lo = 16807 * (seed & 0xFFFF);
309
+ hi = 16807 * (seed >> 16);
310
+ lo += (hi & 0x7FFF) << 16;
311
+ lo += hi >> 15;
312
+ lo = (lo & 0x7FFFFFFF) + (lo >> 31);
313
+ seed = lo & 0xFFFFFFFF;
314
+
315
+ // consume lower 3 bytes of seed
316
+ for(var i = 0; i < 3; ++i) {
317
+ // throw in more pseudo random
318
+ next = seed >>> (i << 3);
319
+ next ^= Math.floor(Math.random() * 0x0100);
320
+ b.putByte(next & 0xFF);
321
+ }
322
+ }
323
+ }
324
+
325
+ return b.getBytes(needed);
326
+ }
327
+ // initialize seed file APIs
328
+ if(_crypto) {
329
+ // use nodejs async API
330
+ ctx.seedFile = function(needed, callback) {
331
+ _crypto.randomBytes(needed, function(err, bytes) {
332
+ if(err) {
333
+ return callback(err);
334
+ }
335
+ callback(null, bytes.toString());
336
+ });
337
+ };
338
+ // use nodejs sync API
339
+ ctx.seedFileSync = function(needed) {
340
+ return _crypto.randomBytes(needed).toString();
341
+ };
342
+ } else {
343
+ ctx.seedFile = function(needed, callback) {
344
+ try {
345
+ callback(null, defaultSeedFile(needed));
346
+ } catch(e) {
347
+ callback(e);
348
+ }
349
+ };
350
+ ctx.seedFileSync = defaultSeedFile;
351
+ }
352
+
353
+ /**
354
+ * Adds entropy to a prng ctx's accumulator.
355
+ *
356
+ * @param bytes the bytes of entropy as a string.
357
+ */
358
+ ctx.collect = function(bytes) {
359
+ // iterate over pools distributing entropy cyclically
360
+ var count = bytes.length;
361
+ for(var i = 0; i < count; ++i) {
362
+ ctx.pools[ctx.pool].update(bytes.substr(i, 1));
363
+ ctx.pool = (ctx.pool === 31) ? 0 : ctx.pool + 1;
364
+ }
365
+ };
366
+
367
+ /**
368
+ * Collects an integer of n bits.
369
+ *
370
+ * @param i the integer entropy.
371
+ * @param n the number of bits in the integer.
372
+ */
373
+ ctx.collectInt = function(i, n) {
374
+ var bytes = '';
375
+ for(var x = 0; x < n; x += 8) {
376
+ bytes += String.fromCharCode((i >> x) & 0xFF);
377
+ }
378
+ ctx.collect(bytes);
379
+ };
380
+
381
+ /**
382
+ * Registers a Web Worker to receive immediate entropy from the main thread.
383
+ * This method is required until Web Workers can access the native crypto
384
+ * API. This method should be called twice for each created worker, once in
385
+ * the main thread, and once in the worker itself.
386
+ *
387
+ * @param worker the worker to register.
388
+ */
389
+ ctx.registerWorker = function(worker) {
390
+ // worker receives random bytes
391
+ if(worker === self) {
392
+ ctx.seedFile = function(needed, callback) {
393
+ function listener(e) {
394
+ var data = e.data;
395
+ if(data.forge && data.forge.prng) {
396
+ self.removeEventListener('message', listener);
397
+ callback(data.forge.prng.err, data.forge.prng.bytes);
398
+ }
399
+ }
400
+ self.addEventListener('message', listener);
401
+ self.postMessage({forge: {prng: {needed: needed}}});
402
+ };
403
+ } else {
404
+ // main thread sends random bytes upon request
405
+ var listener = function(e) {
406
+ var data = e.data;
407
+ if(data.forge && data.forge.prng) {
408
+ ctx.seedFile(data.forge.prng.needed, function(err, bytes) {
409
+ worker.postMessage({forge: {prng: {err: err, bytes: bytes}}});
410
+ });
411
+ }
412
+ };
413
+ // TODO: do we need to remove the event listener when the worker dies?
414
+ worker.addEventListener('message', listener);
415
+ }
416
+ };
417
+
418
+ return ctx;
419
+ };