@psnext/slingcli 2.4.20260526-1 → 2.4.20260527-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/bin/sling.js +4 -1
  2. package/node_modules/@aws-sdk/core/package.json +2 -2
  3. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  4. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js +12 -6
  5. package/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js +12 -6
  6. package/node_modules/@aws-sdk/credential-provider-http/package.json +3 -2
  7. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  8. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  9. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  10. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  11. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +3 -3
  12. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  13. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  14. package/node_modules/@aws-sdk/middleware-websocket/package.json +2 -2
  15. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
  16. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
  17. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
  18. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
  19. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
  20. package/node_modules/@aws-sdk/nested-clients/package.json +3 -3
  21. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +1 -2
  22. package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
  23. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +18 -24
  24. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  25. package/node_modules/@earendil-works/pi-ai/dist/cli.js +14 -0
  26. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +88 -107
  27. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +2 -1
  28. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +8 -22
  29. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +1 -1
  30. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.js +1 -1
  31. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +47 -30
  32. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +1 -1
  33. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +1 -1
  34. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js +55 -0
  35. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +45 -69
  36. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js +1 -0
  37. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +5 -2
  38. package/node_modules/@earendil-works/pi-ai/package.json +4 -3
  39. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js +2 -3
  40. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js +18 -12
  41. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.js +2 -1
  42. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js +3 -2
  43. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +8 -2
  44. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +2 -1
  45. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +18 -24
  46. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/index.js +8 -6
  47. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/template.js +6 -3
  48. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js +12 -29
  49. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +5 -1
  50. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js +52 -22
  51. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +63 -36
  52. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.js +6 -20
  53. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js +38 -31
  54. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js +9 -4
  55. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +32 -24
  56. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +6 -13
  57. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.js +8 -22
  58. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +54 -53
  59. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.js +8 -1
  60. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +44 -81
  61. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js +27 -12
  62. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js +2 -3
  63. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js +3 -3
  64. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js +5 -5
  65. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/output-accumulator.js +9 -3
  66. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js +39 -21
  67. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +9 -8
  68. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/truncate.js +12 -2
  69. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js +20 -35
  70. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +5 -6
  71. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.js +1 -1
  72. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js +14 -5
  73. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +29 -4
  74. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js +1 -1
  75. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +4 -4
  76. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js +37 -28
  77. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +64 -7
  78. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +15 -3
  79. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js +14 -8
  80. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js +124 -0
  81. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js +31 -0
  82. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js +75 -115
  83. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.js +33 -7
  84. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +13 -26
  85. package/node_modules/@earendil-works/pi-coding-agent/package.json +6 -6
  86. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +40 -55
  87. package/node_modules/@earendil-works/pi-tui/dist/components/input.js +2 -2
  88. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +12 -2
  89. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +53 -0
  90. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -1
  91. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +38 -16
  92. package/node_modules/@earendil-works/pi-tui/dist/utils.js +19 -12
  93. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  94. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  95. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  96. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  97. package/node_modules/@earendil-works/pi-tui/package.json +3 -5
  98. package/node_modules/@smithy/core/dist-cjs/index.js +3 -4
  99. package/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +3 -11
  100. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.browser.js +2 -2
  101. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.js +2 -2
  102. package/node_modules/@smithy/core/dist-cjs/submodules/config/index.native.js +2 -2
  103. package/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.browser.js +9 -40
  104. package/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js +9 -40
  105. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +12 -142
  106. package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +7 -9
  107. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +2 -2
  108. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +2 -2
  109. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +2 -2
  110. package/node_modules/@smithy/core/dist-cjs/submodules/transport/index.js +184 -0
  111. package/node_modules/@smithy/core/dist-es/index.js +6 -6
  112. package/node_modules/@smithy/core/dist-es/submodules/client/index.js +2 -2
  113. package/node_modules/@smithy/core/dist-es/submodules/config/config-resolver/regionConfig/checkRegion.js +1 -1
  114. package/node_modules/@smithy/core/dist-es/submodules/endpoints/index.browser.js +2 -2
  115. package/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js +2 -2
  116. package/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/adaptors/toEndpointV1.js +1 -1
  117. package/node_modules/@smithy/core/dist-es/submodules/endpoints/middleware-endpoint/resolveEndpointConfig.js +1 -1
  118. package/node_modules/@smithy/core/dist-es/submodules/endpoints/util-endpoints/lib/index.js +1 -1
  119. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +1 -1
  120. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +1 -2
  121. package/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js +1 -1
  122. package/node_modules/@smithy/core/dist-es/submodules/protocols/index.js +5 -5
  123. package/node_modules/@smithy/core/dist-es/submodules/protocols/middleware-content-length/contentLengthMiddleware.js +1 -1
  124. package/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js +1 -1
  125. package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js +3 -4
  126. package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js +1 -2
  127. package/node_modules/@smithy/core/dist-es/submodules/serde/middleware-serde/deserializerMiddleware.js +1 -1
  128. package/node_modules/@smithy/core/dist-es/submodules/transport/index.js +9 -0
  129. package/node_modules/@smithy/core/dist-es/submodules/{protocols/url-parser → transport}/parseUrl.js +1 -1
  130. package/node_modules/@smithy/core/dist-es/submodules/{endpoints → transport}/toEndpointV1.js +1 -1
  131. package/node_modules/@smithy/core/dist-types/index.d.ts +10 -6
  132. package/node_modules/@smithy/core/dist-types/submodules/client/index.d.ts +2 -2
  133. package/node_modules/@smithy/core/dist-types/submodules/endpoints/index.browser.d.ts +2 -2
  134. package/node_modules/@smithy/core/dist-types/submodules/endpoints/index.d.ts +2 -2
  135. package/node_modules/@smithy/core/dist-types/submodules/endpoints/middleware-endpoint/adaptors/toEndpointV1.d.ts +2 -2
  136. package/node_modules/@smithy/core/dist-types/submodules/endpoints/util-endpoints/lib/index.d.ts +1 -1
  137. package/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts +1 -1
  138. package/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts +5 -5
  139. package/node_modules/@smithy/core/dist-types/submodules/protocols/protocol-http/httpHandler.d.ts +1 -2
  140. package/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts +1 -1
  141. package/node_modules/@smithy/core/dist-types/submodules/transport/index.d.ts +9 -0
  142. package/node_modules/@smithy/core/package.json +19 -10
  143. package/node_modules/@smithy/core/transport.d.ts +5 -0
  144. package/node_modules/@smithy/core/transport.js +5 -0
  145. package/node_modules/@smithy/credential-provider-imds/package.json +2 -2
  146. package/node_modules/@smithy/fetch-http-handler/package.json +2 -2
  147. package/node_modules/@smithy/node-http-handler/package.json +2 -2
  148. package/node_modules/@smithy/signature-v4/package.json +2 -2
  149. package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts +2 -2
  150. package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts.map +1 -1
  151. package/node_modules/lru-cache/dist/commonjs/browser/index.js.map +1 -1
  152. package/node_modules/lru-cache/dist/commonjs/browser/index.min.js.map +1 -1
  153. package/node_modules/lru-cache/dist/commonjs/index.d.ts +2 -2
  154. package/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -1
  155. package/node_modules/lru-cache/dist/commonjs/index.js.map +1 -1
  156. package/node_modules/lru-cache/dist/commonjs/index.min.js.map +1 -1
  157. package/node_modules/lru-cache/dist/commonjs/node/index.d.ts +2 -2
  158. package/node_modules/lru-cache/dist/commonjs/node/index.d.ts.map +1 -1
  159. package/node_modules/lru-cache/dist/commonjs/node/index.js.map +1 -1
  160. package/node_modules/lru-cache/dist/commonjs/node/index.min.js.map +1 -1
  161. package/node_modules/lru-cache/dist/esm/browser/index.d.ts +2 -2
  162. package/node_modules/lru-cache/dist/esm/browser/index.d.ts.map +1 -1
  163. package/node_modules/lru-cache/dist/esm/browser/index.js.map +1 -1
  164. package/node_modules/lru-cache/dist/esm/browser/index.min.js.map +1 -1
  165. package/node_modules/lru-cache/dist/esm/index.d.ts +2 -2
  166. package/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -1
  167. package/node_modules/lru-cache/dist/esm/index.js.map +1 -1
  168. package/node_modules/lru-cache/dist/esm/index.min.js.map +1 -1
  169. package/node_modules/lru-cache/dist/esm/node/index.d.ts +2 -2
  170. package/node_modules/lru-cache/dist/esm/node/index.d.ts.map +1 -1
  171. package/node_modules/lru-cache/dist/esm/node/index.js.map +1 -1
  172. package/node_modules/lru-cache/dist/esm/node/index.min.js.map +1 -1
  173. package/node_modules/lru-cache/package.json +1 -1
  174. package/package.json +6 -6
  175. package/slingshot/index.js +246 -244
  176. package/node_modules/@smithy/core/dist-cjs/getSmithyContext.js +0 -6
  177. package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js +0 -21
  178. package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js +0 -21
  179. package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js +0 -46
  180. package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/index.js +0 -6
  181. package/node_modules/@smithy/core/dist-cjs/middleware-http-auth-scheme/resolveAuthOptions.js +0 -24
  182. package/node_modules/@smithy/core/dist-cjs/middleware-http-signing/getHttpSigningMiddleware.js +0 -19
  183. package/node_modules/@smithy/core/dist-cjs/middleware-http-signing/httpSigningMiddleware.js +0 -27
  184. package/node_modules/@smithy/core/dist-cjs/middleware-http-signing/index.js +0 -5
  185. package/node_modules/@smithy/core/dist-cjs/normalizeProvider.js +0 -10
  186. package/node_modules/@smithy/core/dist-cjs/pagination/createPaginator.js +0 -44
  187. package/node_modules/@smithy/core/dist-cjs/request-builder/requestBuilder.js +0 -5
  188. package/node_modules/@smithy/core/dist-cjs/setFeature.js +0 -14
  189. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/DefaultIdentityProviderConfig.js +0 -18
  190. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js +0 -38
  191. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js +0 -15
  192. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/index.js +0 -6
  193. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/httpAuthSchemes/noAuth.js +0 -9
  194. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/index.js +0 -6
  195. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/memoizeIdentityProvider.js +0 -61
  196. package/node_modules/@smithy/core/dist-es/request-builder/requestBuilder.js +0 -1
  197. package/node_modules/@smithy/core/dist-es/submodules/client/util-middleware/getSmithyContext.js +0 -2
  198. package/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/TestVectors.fixture.js +0 -146
  199. package/node_modules/@smithy/core/dist-es/submodules/event-streams/eventstream-codec/vectorTypes.fixture.js +0 -1
  200. package/node_modules/@smithy/core/dist-types/request-builder/requestBuilder.d.ts +0 -6
  201. package/node_modules/@smithy/core/dist-types/submodules/client/util-middleware/getSmithyContext.d.ts +0 -5
  202. package/node_modules/@smithy/core/dist-types/submodules/event-streams/eventstream-codec/TestVectors.fixture.d.ts +0 -2
  203. package/node_modules/@smithy/core/dist-types/submodules/event-streams/eventstream-codec/vectorTypes.fixture.d.ts +0 -12
  204. package/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/index.js +0 -2
  205. package/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/index.d.ts +0 -8
  206. package/node_modules/@smithy/signature-v4/dist-es/suite.fixture.js +0 -399
  207. package/node_modules/@smithy/signature-v4/dist-types/suite.fixture.d.ts +0 -14
  208. package/node_modules/koffi/CHANGELOG.md +0 -1093
  209. package/node_modules/koffi/LICENSE.txt +0 -22
  210. package/node_modules/koffi/README.md +0 -43
  211. package/node_modules/koffi/build/koffi/darwin_arm64/koffi.node +0 -0
  212. package/node_modules/koffi/build/koffi/darwin_x64/koffi.node +0 -0
  213. package/node_modules/koffi/build/koffi/freebsd_arm64/koffi.node +0 -0
  214. package/node_modules/koffi/build/koffi/freebsd_ia32/koffi.node +0 -0
  215. package/node_modules/koffi/build/koffi/freebsd_x64/koffi.node +0 -0
  216. package/node_modules/koffi/build/koffi/linux_arm64/koffi.node +0 -0
  217. package/node_modules/koffi/build/koffi/linux_armhf/koffi.node +0 -0
  218. package/node_modules/koffi/build/koffi/linux_ia32/koffi.node +0 -0
  219. package/node_modules/koffi/build/koffi/linux_loong64/koffi.node +0 -0
  220. package/node_modules/koffi/build/koffi/linux_riscv64d/koffi.node +0 -0
  221. package/node_modules/koffi/build/koffi/linux_x64/koffi.node +0 -0
  222. package/node_modules/koffi/build/koffi/musl_arm64/koffi.node +0 -0
  223. package/node_modules/koffi/build/koffi/musl_x64/koffi.node +0 -0
  224. package/node_modules/koffi/build/koffi/openbsd_ia32/koffi.node +0 -0
  225. package/node_modules/koffi/build/koffi/openbsd_x64/koffi.node +0 -0
  226. package/node_modules/koffi/build/koffi/win32_arm64/koffi.exp +0 -0
  227. package/node_modules/koffi/build/koffi/win32_arm64/koffi.lib +0 -0
  228. package/node_modules/koffi/build/koffi/win32_arm64/koffi.node +0 -0
  229. package/node_modules/koffi/build/koffi/win32_ia32/koffi.exp +0 -0
  230. package/node_modules/koffi/build/koffi/win32_ia32/koffi.lib +0 -0
  231. package/node_modules/koffi/build/koffi/win32_ia32/koffi.node +0 -0
  232. package/node_modules/koffi/build/koffi/win32_x64/koffi.exp +0 -0
  233. package/node_modules/koffi/build/koffi/win32_x64/koffi.lib +0 -0
  234. package/node_modules/koffi/build/koffi/win32_x64/koffi.node +0 -0
  235. package/node_modules/koffi/doc/benchmarks.md +0 -126
  236. package/node_modules/koffi/doc/callbacks.md +0 -210
  237. package/node_modules/koffi/doc/contribute.md +0 -148
  238. package/node_modules/koffi/doc/functions.md +0 -250
  239. package/node_modules/koffi/doc/index.md +0 -61
  240. package/node_modules/koffi/doc/input.md +0 -471
  241. package/node_modules/koffi/doc/migration.md +0 -159
  242. package/node_modules/koffi/doc/misc.md +0 -180
  243. package/node_modules/koffi/doc/output.md +0 -305
  244. package/node_modules/koffi/doc/packaging.md +0 -88
  245. package/node_modules/koffi/doc/platforms.md +0 -36
  246. package/node_modules/koffi/doc/pointers.md +0 -328
  247. package/node_modules/koffi/doc/start.md +0 -118
  248. package/node_modules/koffi/doc/unions.md +0 -186
  249. package/node_modules/koffi/doc/variables.md +0 -102
  250. package/node_modules/koffi/index.d.ts +0 -288
  251. package/node_modules/koffi/index.js +0 -634
  252. package/node_modules/koffi/indirect.js +0 -533
  253. package/node_modules/koffi/lib/native/base/base.cc +0 -11015
  254. package/node_modules/koffi/lib/native/base/base.hh +0 -6003
  255. package/node_modules/koffi/lib/native/base/crc.inc +0 -2214
  256. package/node_modules/koffi/lib/native/base/crc_gen.py +0 -72
  257. package/node_modules/koffi/lib/native/base/mimetypes.inc +0 -1248
  258. package/node_modules/koffi/lib/native/base/mimetypes_gen.py +0 -58
  259. package/node_modules/koffi/lib/native/base/tower.cc +0 -821
  260. package/node_modules/koffi/lib/native/base/tower.hh +0 -81
  261. package/node_modules/koffi/lib/native/base/unicode.inc +0 -408
  262. package/node_modules/koffi/lib/native/base/unicode_gen.py +0 -152
  263. package/node_modules/koffi/package.json +0 -38
  264. package/node_modules/koffi/src/cnoke/LICENSE.txt +0 -22
  265. package/node_modules/koffi/src/cnoke/README.md +0 -99
  266. package/node_modules/koffi/src/cnoke/assets/FindCNoke.cmake +0 -127
  267. package/node_modules/koffi/src/cnoke/assets/toolchains.json +0 -126
  268. package/node_modules/koffi/src/cnoke/assets/win_delay_hook.c +0 -36
  269. package/node_modules/koffi/src/cnoke/cnoke.js +0 -170
  270. package/node_modules/koffi/src/cnoke/package.json +0 -24
  271. package/node_modules/koffi/src/cnoke/src/builder.js +0 -511
  272. package/node_modules/koffi/src/cnoke/src/index.js +0 -10
  273. package/node_modules/koffi/src/cnoke/src/tools.js +0 -407
  274. package/node_modules/koffi/src/koffi/CMakeLists.txt +0 -182
  275. package/node_modules/koffi/src/koffi/src/abi_arm32.cc +0 -1018
  276. package/node_modules/koffi/src/koffi/src/abi_arm32_asm.S +0 -169
  277. package/node_modules/koffi/src/koffi/src/abi_arm64.cc +0 -1295
  278. package/node_modules/koffi/src/koffi/src/abi_arm64_asm.S +0 -195
  279. package/node_modules/koffi/src/koffi/src/abi_arm64_asm.asm +0 -174
  280. package/node_modules/koffi/src/koffi/src/abi_loong64.cc +0 -5
  281. package/node_modules/koffi/src/koffi/src/abi_loong64_asm.S +0 -204
  282. package/node_modules/koffi/src/koffi/src/abi_riscv64.cc +0 -915
  283. package/node_modules/koffi/src/koffi/src/abi_riscv64_asm.S +0 -203
  284. package/node_modules/koffi/src/koffi/src/abi_x64_sysv.cc +0 -939
  285. package/node_modules/koffi/src/koffi/src/abi_x64_sysv_asm.S +0 -231
  286. package/node_modules/koffi/src/koffi/src/abi_x64_win.cc +0 -715
  287. package/node_modules/koffi/src/koffi/src/abi_x64_win_asm.S +0 -166
  288. package/node_modules/koffi/src/koffi/src/abi_x64_win_asm.asm +0 -192
  289. package/node_modules/koffi/src/koffi/src/abi_x86.cc +0 -860
  290. package/node_modules/koffi/src/koffi/src/abi_x86_asm.S +0 -193
  291. package/node_modules/koffi/src/koffi/src/abi_x86_asm.asm +0 -177
  292. package/node_modules/koffi/src/koffi/src/call.cc +0 -1326
  293. package/node_modules/koffi/src/koffi/src/call.hh +0 -179
  294. package/node_modules/koffi/src/koffi/src/errno.inc +0 -462
  295. package/node_modules/koffi/src/koffi/src/ffi.cc +0 -2702
  296. package/node_modules/koffi/src/koffi/src/ffi.hh +0 -354
  297. package/node_modules/koffi/src/koffi/src/init.js +0 -105
  298. package/node_modules/koffi/src/koffi/src/parser.cc +0 -220
  299. package/node_modules/koffi/src/koffi/src/parser.hh +0 -54
  300. package/node_modules/koffi/src/koffi/src/util.cc +0 -1807
  301. package/node_modules/koffi/src/koffi/src/util.hh +0 -221
  302. package/node_modules/koffi/src/koffi/src/uv.cc +0 -193
  303. package/node_modules/koffi/src/koffi/src/uv.def +0 -10
  304. package/node_modules/koffi/src/koffi/src/uv.hh +0 -40
  305. package/node_modules/koffi/src/koffi/src/win32.cc +0 -198
  306. package/node_modules/koffi/src/koffi/src/win32.hh +0 -119
  307. package/node_modules/koffi/src/koffi/tools/write_trampolines.js +0 -77
  308. package/node_modules/koffi/vendor/node-addon-api/LICENSE.md +0 -9
  309. package/node_modules/koffi/vendor/node-addon-api/README.md +0 -95
  310. package/node_modules/koffi/vendor/node-addon-api/napi-inl.deprecated.h +0 -186
  311. package/node_modules/koffi/vendor/node-addon-api/napi-inl.h +0 -7033
  312. package/node_modules/koffi/vendor/node-addon-api/napi.h +0 -3309
  313. package/node_modules/koffi/vendor/node-api-headers/LICENSE +0 -21
  314. package/node_modules/koffi/vendor/node-api-headers/README.md +0 -95
  315. package/node_modules/koffi/vendor/node-api-headers/def/js_native_api.def +0 -125
  316. package/node_modules/koffi/vendor/node-api-headers/def/node_api.def +0 -157
  317. package/node_modules/koffi/vendor/node-api-headers/include/js_native_api.h +0 -591
  318. package/node_modules/koffi/vendor/node-api-headers/include/js_native_api_types.h +0 -210
  319. package/node_modules/koffi/vendor/node-api-headers/include/node_api.h +0 -265
  320. package/node_modules/koffi/vendor/node-api-headers/include/node_api_types.h +0 -58
  321. package/node_modules/koffi/vendor/node-api-headers/include/uv/aix.h +0 -32
  322. package/node_modules/koffi/vendor/node-api-headers/include/uv/bsd.h +0 -34
  323. package/node_modules/koffi/vendor/node-api-headers/include/uv/darwin.h +0 -61
  324. package/node_modules/koffi/vendor/node-api-headers/include/uv/errno.h +0 -483
  325. package/node_modules/koffi/vendor/node-api-headers/include/uv/linux.h +0 -34
  326. package/node_modules/koffi/vendor/node-api-headers/include/uv/os390.h +0 -33
  327. package/node_modules/koffi/vendor/node-api-headers/include/uv/posix.h +0 -31
  328. package/node_modules/koffi/vendor/node-api-headers/include/uv/sunos.h +0 -44
  329. package/node_modules/koffi/vendor/node-api-headers/include/uv/threadpool.h +0 -37
  330. package/node_modules/koffi/vendor/node-api-headers/include/uv/tree.h +0 -521
  331. package/node_modules/koffi/vendor/node-api-headers/include/uv/unix.h +0 -512
  332. package/node_modules/koffi/vendor/node-api-headers/include/uv/version.h +0 -43
  333. package/node_modules/koffi/vendor/node-api-headers/include/uv/win.h +0 -698
  334. package/node_modules/koffi/vendor/node-api-headers/include/uv.h +0 -1990
  335. /package/node_modules/@smithy/core/dist-es/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/getHttpAuthSchemeEndpointRuleSetPlugin.js +0 -0
  336. /package/node_modules/@smithy/core/dist-es/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/getHttpAuthSchemePlugin.js +0 -0
  337. /package/node_modules/@smithy/core/dist-es/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/httpAuthSchemeMiddleware.js +0 -0
  338. /package/node_modules/@smithy/core/dist-es/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/index.js +0 -0
  339. /package/node_modules/@smithy/core/dist-es/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/resolveAuthOptions.js +0 -0
  340. /package/node_modules/@smithy/core/dist-es/{middleware-http-signing → legacy-root-exports/middleware-http-signing}/getHttpSigningMiddleware.js +0 -0
  341. /package/node_modules/@smithy/core/dist-es/{middleware-http-signing → legacy-root-exports/middleware-http-signing}/httpSigningMiddleware.js +0 -0
  342. /package/node_modules/@smithy/core/dist-es/{middleware-http-signing → legacy-root-exports/middleware-http-signing}/index.js +0 -0
  343. /package/node_modules/@smithy/core/dist-es/{pagination → legacy-root-exports/pagination}/createPaginator.js +0 -0
  344. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/DefaultIdentityProviderConfig.js +0 -0
  345. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/httpApiKeyAuth.js +0 -0
  346. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/httpBearerAuth.js +0 -0
  347. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/index.js +0 -0
  348. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/noAuth.js +0 -0
  349. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/index.js +0 -0
  350. /package/node_modules/@smithy/core/dist-es/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/memoizeIdentityProvider.js +0 -0
  351. /package/node_modules/@smithy/core/dist-es/{getSmithyContext.js → submodules/transport/getSmithyContext.js} +0 -0
  352. /package/node_modules/@smithy/core/dist-es/submodules/{protocols/protocol-http → transport}/httpRequest.js +0 -0
  353. /package/node_modules/@smithy/core/dist-es/submodules/{protocols/protocol-http → transport}/httpResponse.js +0 -0
  354. /package/node_modules/@smithy/core/dist-es/submodules/{endpoints/util-endpoints/lib → transport}/isValidHostLabel.js +0 -0
  355. /package/node_modules/@smithy/core/dist-es/submodules/{protocols/protocol-http → transport}/isValidHostname.js +0 -0
  356. /package/node_modules/@smithy/core/dist-es/submodules/{client/util-middleware → transport}/normalizeProvider.js +0 -0
  357. /package/node_modules/@smithy/core/dist-es/submodules/{protocols/querystring-parser → transport}/parseQueryString.js +0 -0
  358. /package/node_modules/@smithy/core/dist-types/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts +0 -0
  359. /package/node_modules/@smithy/core/dist-types/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/getHttpAuthSchemePlugin.d.ts +0 -0
  360. /package/node_modules/@smithy/core/dist-types/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/httpAuthSchemeMiddleware.d.ts +0 -0
  361. /package/node_modules/@smithy/core/dist-types/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/index.d.ts +0 -0
  362. /package/node_modules/@smithy/core/dist-types/{middleware-http-auth-scheme → legacy-root-exports/middleware-http-auth-scheme}/resolveAuthOptions.d.ts +0 -0
  363. /package/node_modules/@smithy/core/dist-types/{middleware-http-signing → legacy-root-exports/middleware-http-signing}/getHttpSigningMiddleware.d.ts +0 -0
  364. /package/node_modules/@smithy/core/dist-types/{middleware-http-signing → legacy-root-exports/middleware-http-signing}/httpSigningMiddleware.d.ts +0 -0
  365. /package/node_modules/@smithy/core/dist-types/{middleware-http-signing → legacy-root-exports/middleware-http-signing}/index.d.ts +0 -0
  366. /package/node_modules/@smithy/core/dist-types/{pagination → legacy-root-exports/pagination}/createPaginator.d.ts +0 -0
  367. /package/node_modules/@smithy/core/dist-types/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/DefaultIdentityProviderConfig.d.ts +0 -0
  368. /package/node_modules/@smithy/core/dist-types/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/httpApiKeyAuth.d.ts +0 -0
  369. /package/node_modules/@smithy/core/dist-types/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/httpBearerAuth.d.ts +0 -0
  370. /package/node_modules/@smithy/core/dist-types/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/index.d.ts +0 -0
  371. /package/node_modules/@smithy/core/dist-types/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/httpAuthSchemes/noAuth.d.ts +0 -0
  372. /package/node_modules/@smithy/core/dist-types/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/index.d.ts +0 -0
  373. /package/node_modules/@smithy/core/dist-types/{util-identity-and-auth → legacy-root-exports/util-identity-and-auth}/memoizeIdentityProvider.d.ts +0 -0
  374. /package/node_modules/@smithy/core/dist-types/{getSmithyContext.d.ts → submodules/transport/getSmithyContext.d.ts} +0 -0
  375. /package/node_modules/@smithy/core/dist-types/submodules/{protocols/protocol-http → transport}/httpRequest.d.ts +0 -0
  376. /package/node_modules/@smithy/core/dist-types/submodules/{protocols/protocol-http → transport}/httpResponse.d.ts +0 -0
  377. /package/node_modules/@smithy/core/dist-types/submodules/{endpoints/util-endpoints/lib → transport}/isValidHostLabel.d.ts +0 -0
  378. /package/node_modules/@smithy/core/dist-types/submodules/{protocols/protocol-http → transport}/isValidHostname.d.ts +0 -0
  379. /package/node_modules/@smithy/core/dist-types/submodules/{client/util-middleware → transport}/normalizeProvider.d.ts +0 -0
  380. /package/node_modules/@smithy/core/dist-types/submodules/{protocols/querystring-parser → transport}/parseQueryString.d.ts +0 -0
  381. /package/node_modules/@smithy/core/dist-types/submodules/{protocols/url-parser → transport}/parseUrl.d.ts +0 -0
  382. /package/node_modules/@smithy/core/dist-types/submodules/{endpoints → transport}/toEndpointV1.d.ts +0 -0
@@ -1,715 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- // SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
3
-
4
- #if defined(_WIN32) && (defined(__x86_64__) || defined(_M_AMD64))
5
-
6
- #include "lib/native/base/base.hh"
7
- #include "ffi.hh"
8
- #include "call.hh"
9
- #include "util.hh"
10
- #include "win32.hh"
11
-
12
- #include <napi.h>
13
-
14
- namespace K {
15
-
16
- struct BackRegisters {
17
- uint64_t rax;
18
- double xmm0;
19
- };
20
-
21
- extern "C" uint64_t ForwardCallG(const void *func, uint8_t *sp, uint8_t **out_old_sp);
22
- extern "C" float ForwardCallF(const void *func, uint8_t *sp, uint8_t **out_old_sp);
23
- extern "C" double ForwardCallD(const void *func, uint8_t *sp, uint8_t **out_old_sp);
24
- extern "C" uint64_t ForwardCallXG(const void *func, uint8_t *sp, uint8_t **out_old_sp);
25
- extern "C" float ForwardCallXF(const void *func, uint8_t *sp, uint8_t **out_old_sp);
26
- extern "C" double ForwardCallXD(const void *func, uint8_t *sp, uint8_t **out_old_sp);
27
-
28
- bool AnalyseFunction(Napi::Env, InstanceData *, FunctionInfo *func)
29
- {
30
- func->ret.regular = IsRegularSize(func->ret.type->size, 8);
31
-
32
- for (ParameterInfo &param: func->parameters) {
33
- param.regular = IsRegularSize(param.type->size, 8);
34
- func->forward_fp |= IsFloat(param.type);
35
- }
36
-
37
- func->args_size = AlignLen(8 * std::max((Size)4, func->parameters.len + !func->ret.regular), 16);
38
-
39
- return true;
40
- }
41
-
42
- bool CallData::Prepare(const FunctionInfo *func, const Napi::CallbackInfo &info)
43
- {
44
- uint64_t *args_ptr = nullptr;
45
-
46
- // Pass return value in register or through memory
47
- if (!AllocStack(func->args_size, 16, &args_ptr)) [[unlikely]]
48
- return false;
49
- if (!func->ret.regular) {
50
- return_ptr = AllocHeap(func->ret.type->size, 16);
51
- *(uint8_t **)(args_ptr++) = return_ptr;
52
- }
53
-
54
- #define PUSH_INTEGER(CType) \
55
- do { \
56
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] { \
57
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value)); \
58
- return false; \
59
- } \
60
- \
61
- CType v = GetNumber<CType>(value); \
62
- *(args_ptr++) = (uint64_t)v; \
63
- } while (false)
64
- #define PUSH_INTEGER_SWAP(CType) \
65
- do { \
66
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] { \
67
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value)); \
68
- return false; \
69
- } \
70
- \
71
- CType v = GetNumber<CType>(value); \
72
- *(args_ptr++) = (uint64_t)ReverseBytes(v); \
73
- } while (false)
74
-
75
- // Push arguments
76
- for (Size i = 0; i < func->parameters.len; i++) {
77
- const ParameterInfo &param = func->parameters[i];
78
- K_ASSERT(param.directions >= 1 && param.directions <= 3);
79
-
80
- Napi::Value value = info[param.offset];
81
-
82
- switch (param.type->primitive) {
83
- case PrimitiveKind::Void: { K_UNREACHABLE(); } break;
84
-
85
- case PrimitiveKind::Bool: {
86
- if (!value.IsBoolean()) [[unlikely]] {
87
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected boolean", GetValueType(instance, value));
88
- return false;
89
- }
90
-
91
- bool b = value.As<Napi::Boolean>();
92
-
93
- *(bool *)(args_ptr++) = b;
94
- } break;
95
- case PrimitiveKind::Int8: { PUSH_INTEGER(int8_t); } break;
96
- case PrimitiveKind::UInt8: { PUSH_INTEGER(uint8_t); } break;
97
- case PrimitiveKind::Int16: { PUSH_INTEGER(int16_t); } break;
98
- case PrimitiveKind::Int16S: { PUSH_INTEGER_SWAP(int16_t); } break;
99
- case PrimitiveKind::UInt16: { PUSH_INTEGER(uint16_t); } break;
100
- case PrimitiveKind::UInt16S: { PUSH_INTEGER_SWAP(uint16_t); } break;
101
- case PrimitiveKind::Int32: { PUSH_INTEGER(int32_t); } break;
102
- case PrimitiveKind::Int32S: { PUSH_INTEGER_SWAP(int32_t); } break;
103
- case PrimitiveKind::UInt32: { PUSH_INTEGER(uint32_t); } break;
104
- case PrimitiveKind::UInt32S: { PUSH_INTEGER_SWAP(uint32_t); } break;
105
- case PrimitiveKind::Int64: { PUSH_INTEGER(int64_t); } break;
106
- case PrimitiveKind::Int64S: { PUSH_INTEGER_SWAP(int64_t); } break;
107
- case PrimitiveKind::UInt64: { PUSH_INTEGER(uint64_t); } break;
108
- case PrimitiveKind::UInt64S: { PUSH_INTEGER_SWAP(uint64_t); } break;
109
- case PrimitiveKind::String: {
110
- const char *str;
111
- if (!PushString(value, param.directions, &str)) [[unlikely]]
112
- return false;
113
-
114
- *(const char **)(args_ptr++) = str;
115
- } break;
116
- case PrimitiveKind::String16: {
117
- const char16_t *str16;
118
- if (!PushString16(value, param.directions, &str16)) [[unlikely]]
119
- return false;
120
-
121
- *(const char16_t **)(args_ptr++) = str16;
122
- } break;
123
- case PrimitiveKind::String32: {
124
- const char32_t *str32;
125
- if (!PushString32(value, param.directions, &str32)) [[unlikely]]
126
- return false;
127
-
128
- *(const char32_t **)(args_ptr++) = str32;
129
- } break;
130
- case PrimitiveKind::Pointer: {
131
- void *ptr;
132
- if (!PushPointer(value, param.type, param.directions, &ptr)) [[unlikely]]
133
- return false;
134
-
135
- *(void **)(args_ptr++) = ptr;
136
- } break;
137
- case PrimitiveKind::Record:
138
- case PrimitiveKind::Union: {
139
- if (!IsObject(value)) [[unlikely]] {
140
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected object", GetValueType(instance, value));
141
- return false;
142
- }
143
-
144
- uint8_t *ptr;
145
- if (param.regular) {
146
- ptr = (uint8_t *)(args_ptr++);
147
- } else {
148
- ptr = AllocHeap(param.type->size, 16);
149
- *(uint8_t **)(args_ptr++) = ptr;
150
- }
151
-
152
- Napi::Object obj = value.As<Napi::Object>();
153
- if (!PushObject(obj, param.type, ptr))
154
- return false;
155
- } break;
156
- case PrimitiveKind::Array: { K_UNREACHABLE(); } break;
157
- case PrimitiveKind::Float32: {
158
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
159
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
160
- return false;
161
- }
162
-
163
- float f = GetNumber<float>(value);
164
-
165
- memset((uint8_t *)args_ptr + 4, 0, 4);
166
- *(float *)(args_ptr++) = f;
167
- } break;
168
- case PrimitiveKind::Float64: {
169
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
170
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
171
- return false;
172
- }
173
-
174
- double d = GetNumber<double>(value);
175
- *(double *)(args_ptr++) = d;
176
- } break;
177
- case PrimitiveKind::Callback: {
178
- void *ptr;
179
- if (!PushCallback(value, param.type, &ptr)) [[unlikely]]
180
- return false;
181
-
182
- *(void **)(args_ptr++) = ptr;
183
- } break;
184
-
185
- case PrimitiveKind::Prototype: { K_UNREACHABLE(); } break;
186
- }
187
- }
188
-
189
- #undef PUSH_INTEGER_SWAP
190
- #undef PUSH_INTEGER
191
-
192
- new_sp = mem->stack.end();
193
-
194
- return true;
195
- }
196
-
197
- void CallData::Execute(const FunctionInfo *func, void *native)
198
- {
199
- TEB *teb = GetTEB();
200
-
201
- // Restore previous stack limits at the end
202
- K_DEFER_C(exception_list = teb->ExceptionList,
203
- base = teb->StackBase,
204
- limit = teb->StackLimit,
205
- dealloc = teb->DeallocationStack,
206
- guaranteed = teb->GuaranteedStackBytes,
207
- stfs = teb->SameTebFlags) {
208
- teb->ExceptionList = exception_list;
209
- teb->StackBase = base;
210
- teb->StackLimit = limit;
211
- teb->DeallocationStack = dealloc;
212
- teb->GuaranteedStackBytes = guaranteed;
213
- teb->SameTebFlags = stfs;
214
-
215
- instance->last_error = teb->LastErrorValue;
216
- };
217
-
218
- // Adjust stack limits so SEH works correctly
219
- teb->ExceptionList = (void *)-1; // EXCEPTION_CHAIN_END
220
- teb->StackBase = mem->stack0.end();
221
- teb->StackLimit = mem->stack0.ptr;
222
- teb->DeallocationStack = mem->stack0.ptr;
223
- teb->GuaranteedStackBytes = 0;
224
- teb->SameTebFlags &= ~0x200;
225
-
226
- teb->LastErrorValue = instance->last_error;
227
-
228
- #define PERFORM_CALL(Suffix) \
229
- ([&]() { \
230
- auto ret = (func->forward_fp ? ForwardCallX ## Suffix(native, new_sp, &old_sp) \
231
- : ForwardCall ## Suffix(native, new_sp, &old_sp)); \
232
- return ret; \
233
- })()
234
-
235
- switch (func->ret.type->primitive) {
236
- case PrimitiveKind::Void:
237
- case PrimitiveKind::Bool:
238
- case PrimitiveKind::Int8:
239
- case PrimitiveKind::UInt8:
240
- case PrimitiveKind::Int16:
241
- case PrimitiveKind::Int16S:
242
- case PrimitiveKind::UInt16:
243
- case PrimitiveKind::UInt16S:
244
- case PrimitiveKind::Int32:
245
- case PrimitiveKind::Int32S:
246
- case PrimitiveKind::UInt32:
247
- case PrimitiveKind::UInt32S:
248
- case PrimitiveKind::Int64:
249
- case PrimitiveKind::Int64S:
250
- case PrimitiveKind::UInt64:
251
- case PrimitiveKind::UInt64S:
252
- case PrimitiveKind::String:
253
- case PrimitiveKind::String16:
254
- case PrimitiveKind::String32:
255
- case PrimitiveKind::Pointer:
256
- case PrimitiveKind::Record:
257
- case PrimitiveKind::Union:
258
- case PrimitiveKind::Callback: { result.u64 = PERFORM_CALL(G); } break;
259
- case PrimitiveKind::Array: { K_UNREACHABLE(); } break;
260
- case PrimitiveKind::Float32: { result.f = PERFORM_CALL(F); } break;
261
- case PrimitiveKind::Float64: { result.d = PERFORM_CALL(D); } break;
262
-
263
- case PrimitiveKind::Prototype: { K_UNREACHABLE(); } break;
264
- }
265
-
266
- #undef PERFORM_CALL
267
- }
268
-
269
- Napi::Value CallData::Complete(const FunctionInfo *func)
270
- {
271
- K_DEFER {
272
- PopOutArguments();
273
-
274
- if (func->ret.type->dispose) {
275
- func->ret.type->dispose(env, func->ret.type, result.ptr);
276
- }
277
- };
278
-
279
- switch (func->ret.type->primitive) {
280
- case PrimitiveKind::Void: return env.Undefined();
281
- case PrimitiveKind::Bool: return Napi::Boolean::New(env, result.u8 & 0x1);
282
- case PrimitiveKind::Int8: return Napi::Number::New(env, (double)result.i8);
283
- case PrimitiveKind::UInt8: return Napi::Number::New(env, (double)result.u8);
284
- case PrimitiveKind::Int16: return Napi::Number::New(env, (double)result.i16);
285
- case PrimitiveKind::Int16S: return Napi::Number::New(env, (double)ReverseBytes(result.i16));
286
- case PrimitiveKind::UInt16: return Napi::Number::New(env, (double)result.u16);
287
- case PrimitiveKind::UInt16S: return Napi::Number::New(env, (double)ReverseBytes(result.u16));
288
- case PrimitiveKind::Int32: return Napi::Number::New(env, (double)result.i32);
289
- case PrimitiveKind::Int32S: return Napi::Number::New(env, (double)ReverseBytes(result.i32));
290
- case PrimitiveKind::UInt32: return Napi::Number::New(env, (double)result.u32);
291
- case PrimitiveKind::UInt32S: return Napi::Number::New(env, (double)ReverseBytes(result.u32));
292
- case PrimitiveKind::Int64: return NewBigInt(env, result.i64);
293
- case PrimitiveKind::Int64S: return NewBigInt(env, ReverseBytes(result.i64));
294
- case PrimitiveKind::UInt64: return NewBigInt(env, result.u64);
295
- case PrimitiveKind::UInt64S: return NewBigInt(env, ReverseBytes(result.u64));
296
- case PrimitiveKind::String: return result.ptr ? Napi::String::New(env, (const char *)result.ptr) : env.Null();
297
- case PrimitiveKind::String16: return result.ptr ? Napi::String::New(env, (const char16_t *)result.ptr) : env.Null();
298
- case PrimitiveKind::String32: return result.ptr ? MakeStringFromUTF32(env, (const char32_t *)result.ptr) : env.Null();
299
- case PrimitiveKind::Pointer:
300
- case PrimitiveKind::Callback: {
301
- if (result.ptr) {
302
- Napi::External<void> external = Napi::External<void>::New(env, result.ptr);
303
- SetValueTag(external, func->ret.type->ref.marker);
304
-
305
- return external;
306
- } else {
307
- return env.Null();
308
- }
309
- } break;
310
- case PrimitiveKind::Record:
311
- case PrimitiveKind::Union: {
312
- const uint8_t *ptr = return_ptr ? (const uint8_t *)return_ptr
313
- : (const uint8_t *)&result.buf;
314
-
315
- Napi::Object obj = DecodeObject(env, ptr, func->ret.type);
316
- return obj;
317
- } break;
318
- case PrimitiveKind::Array: { K_UNREACHABLE(); } break;
319
- case PrimitiveKind::Float32: return Napi::Number::New(env, (double)result.f);
320
- case PrimitiveKind::Float64: return Napi::Number::New(env, result.d);
321
-
322
- case PrimitiveKind::Prototype: { K_UNREACHABLE(); } break;
323
- }
324
-
325
- K_UNREACHABLE();
326
- }
327
-
328
- void CallData::Relay(Size idx, uint8_t *sp)
329
- {
330
- const TrampolineInfo &trampoline = shared.trampolines[idx];
331
-
332
- uint8_t *own_sp = sp;
333
- uint8_t *caller_sp = sp + 128;
334
- BackRegisters *out_reg = (BackRegisters *)(sp + 64);
335
-
336
- const FunctionInfo *proto = trampoline.proto;
337
- Napi::Function func = trampoline.func.Value();
338
-
339
- uint64_t *gpr_ptr = (uint64_t *)own_sp;
340
- uint64_t *xmm_ptr = gpr_ptr + 4;
341
- uint64_t *args_ptr = (uint64_t *)caller_sp;
342
-
343
- uint8_t *return_ptr = !proto->ret.regular ? (uint8_t *)gpr_ptr[0] : nullptr;
344
-
345
- K_DEFER_N(err_guard) { memset(out_reg, 0, K_SIZE(*out_reg)); };
346
-
347
- LocalArray<napi_value, MaxParameters + 1> arguments;
348
-
349
- arguments.Append(!trampoline.recv.IsEmpty() ? trampoline.recv.Value() : env.Undefined());
350
-
351
- // Convert to JS arguments
352
- for (Size i = 0, j = !!return_ptr; i < proto->parameters.len; i++, j++) {
353
- const ParameterInfo &param = proto->parameters[i];
354
- K_ASSERT(param.directions >= 1 && param.directions <= 3);
355
-
356
- switch (param.type->primitive) {
357
- case PrimitiveKind::Void: { K_UNREACHABLE(); } break;
358
-
359
- case PrimitiveKind::Bool: {
360
- bool b = *(bool *)(j < 4 ? gpr_ptr + j : args_ptr);
361
- args_ptr += (j >= 4);
362
-
363
- Napi::Value arg = Napi::Boolean::New(env, b);
364
- arguments.Append(arg);
365
- } break;
366
- case PrimitiveKind::Int8: {
367
- double d = (double)*(int8_t *)(j < 4 ? gpr_ptr + j : args_ptr);
368
- args_ptr += (j >= 4);
369
-
370
- Napi::Value arg = Napi::Number::New(env, d);
371
- arguments.Append(arg);
372
- } break;
373
- case PrimitiveKind::UInt8: {
374
- double d = (double)*(uint8_t *)(j < 4 ? gpr_ptr + j : args_ptr);
375
- args_ptr += (j >= 4);
376
-
377
- Napi::Value arg = Napi::Number::New(env, d);
378
- arguments.Append(arg);
379
- } break;
380
- case PrimitiveKind::Int16: {
381
- double d = (double)*(int16_t *)(j < 4 ? gpr_ptr + j : args_ptr);
382
- args_ptr += (j >= 4);
383
-
384
- Napi::Value arg = Napi::Number::New(env, d);
385
- arguments.Append(arg);
386
- } break;
387
- case PrimitiveKind::Int16S: {
388
- int16_t v = *(int16_t *)(j < 4 ? gpr_ptr + j : args_ptr);
389
- double d = (double)ReverseBytes(v);
390
- args_ptr += (j >= 4);
391
-
392
- Napi::Value arg = Napi::Number::New(env, d);
393
- arguments.Append(arg);
394
- } break;
395
- case PrimitiveKind::UInt16: {
396
- double d = (double)*(uint16_t *)(j < 4 ? gpr_ptr + j : args_ptr);
397
- args_ptr += (j >= 4);
398
-
399
- Napi::Value arg = Napi::Number::New(env, d);
400
- arguments.Append(arg);
401
- } break;
402
- case PrimitiveKind::UInt16S: {
403
- uint16_t v = *(uint16_t *)(j < 4 ? gpr_ptr + j : args_ptr);
404
- double d = (double)ReverseBytes(v);
405
- args_ptr += (j >= 4);
406
-
407
- Napi::Value arg = Napi::Number::New(env, d);
408
- arguments.Append(arg);
409
- } break;
410
- case PrimitiveKind::Int32: {
411
- double d = (double)*(int32_t *)(j < 4 ? gpr_ptr + j : args_ptr);
412
- args_ptr += (j >= 4);
413
-
414
- Napi::Value arg = Napi::Number::New(env, d);
415
- arguments.Append(arg);
416
- } break;
417
- case PrimitiveKind::Int32S: {
418
- int32_t v = *(int32_t *)(j < 4 ? gpr_ptr + j : args_ptr);
419
- double d = (double)ReverseBytes(v);
420
- args_ptr += (j >= 4);
421
-
422
- Napi::Value arg = Napi::Number::New(env, d);
423
- arguments.Append(arg);
424
- } break;
425
- case PrimitiveKind::UInt32: {
426
- double d = (double)*(uint32_t *)(j < 4 ? gpr_ptr + j : args_ptr);
427
- args_ptr += (j >= 4);
428
-
429
- Napi::Value arg = Napi::Number::New(env, d);
430
- arguments.Append(arg);
431
- } break;
432
- case PrimitiveKind::UInt32S: {
433
- uint32_t v = *(uint32_t *)(j < 4 ? gpr_ptr + j : args_ptr);
434
- double d = (double)ReverseBytes(v);
435
- args_ptr += (j >= 4);
436
-
437
- Napi::Value arg = Napi::Number::New(env, d);
438
- arguments.Append(arg);
439
- } break;
440
- case PrimitiveKind::Int64: {
441
- int64_t v = *(int64_t *)(j < 4 ? gpr_ptr + j : args_ptr);
442
- args_ptr += (j >= 4);
443
-
444
- Napi::Value arg = NewBigInt(env, v);
445
- arguments.Append(arg);
446
- } break;
447
- case PrimitiveKind::Int64S: {
448
- int64_t v = *(int64_t *)(j < 4 ? gpr_ptr + j : args_ptr);
449
- args_ptr += (j >= 4);
450
-
451
- Napi::Value arg = NewBigInt(env, ReverseBytes(v));
452
- arguments.Append(arg);
453
- } break;
454
- case PrimitiveKind::UInt64: {
455
- uint64_t v = *(uint64_t *)(j < 4 ? gpr_ptr + j : args_ptr);
456
- args_ptr += (j >= 4);
457
-
458
- Napi::Value arg = NewBigInt(env, v);
459
- arguments.Append(arg);
460
- } break;
461
- case PrimitiveKind::UInt64S: {
462
- uint64_t v = *(uint64_t *)(j < 4 ? gpr_ptr + j : args_ptr);
463
- args_ptr += (j >= 4);
464
-
465
- Napi::Value arg = NewBigInt(env, ReverseBytes(v));
466
- arguments.Append(arg);
467
- } break;
468
- case PrimitiveKind::String: {
469
- const char *str = *(const char **)(j < 4 ? gpr_ptr + j : args_ptr);
470
- args_ptr += (j >= 4);
471
-
472
- Napi::Value arg = str ? Napi::String::New(env, str) : env.Null();
473
- arguments.Append(arg);
474
-
475
- if (param.type->dispose) {
476
- param.type->dispose(env, param.type, str);
477
- }
478
- } break;
479
- case PrimitiveKind::String16: {
480
- const char16_t *str16 = *(const char16_t **)(j < 4 ? gpr_ptr + j : args_ptr);
481
- args_ptr += (j >= 4);
482
-
483
- Napi::Value arg = str16 ? Napi::String::New(env, str16) : env.Null();
484
- arguments.Append(arg);
485
-
486
- if (param.type->dispose) {
487
- param.type->dispose(env, param.type, str16);
488
- }
489
- } break;
490
- case PrimitiveKind::String32: {
491
- const char32_t *str32 = *(const char32_t **)(j < 4 ? gpr_ptr + j : args_ptr);
492
- args_ptr += (j >= 4);
493
-
494
- Napi::Value arg = str32 ? MakeStringFromUTF32(env, str32) : env.Null();
495
- arguments.Append(arg);
496
- } break;
497
- case PrimitiveKind::Pointer:
498
- case PrimitiveKind::Callback: {
499
- void *ptr2 = *(void **)(j < 4 ? gpr_ptr + j : args_ptr);
500
- args_ptr += (j >= 4);
501
-
502
- if (ptr2) {
503
- Napi::External<void> external = Napi::External<void>::New(env, ptr2);
504
- SetValueTag(external, param.type->ref.marker);
505
-
506
- arguments.Append(external);
507
- } else {
508
- arguments.Append(env.Null());
509
- }
510
-
511
- if (param.type->dispose) {
512
- param.type->dispose(env, param.type, ptr2);
513
- }
514
- } break;
515
- case PrimitiveKind::Record:
516
- case PrimitiveKind::Union: {
517
- uint8_t *ptr;
518
- if (param.regular) {
519
- ptr = (uint8_t *)(j < 4 ? gpr_ptr + j : args_ptr);
520
- } else {
521
- ptr = *(uint8_t **)(j < 4 ? gpr_ptr + j : args_ptr);
522
- }
523
- args_ptr += (j >= 4);
524
-
525
- Napi::Object obj2 = DecodeObject(env, ptr, param.type);
526
- arguments.Append(obj2);
527
- } break;
528
- case PrimitiveKind::Array: { K_UNREACHABLE(); } break;
529
- case PrimitiveKind::Float32: {
530
- float f = *(float *)(j < 4 ? xmm_ptr + j : args_ptr);
531
- args_ptr += (j >= 4);
532
-
533
- Napi::Value arg = Napi::Number::New(env, (double)f);
534
- arguments.Append(arg);
535
- } break;
536
- case PrimitiveKind::Float64: {
537
- double d = *(double *)(j < 4 ? xmm_ptr + j : args_ptr);
538
- args_ptr += (j >= 4);
539
-
540
- Napi::Value arg = Napi::Number::New(env, d);
541
- arguments.Append(arg);
542
- } break;
543
-
544
- case PrimitiveKind::Prototype: { K_UNREACHABLE(); } break;
545
- }
546
- }
547
-
548
- const TypeInfo *type = proto->ret.type;
549
-
550
- // Make the call!
551
- Napi::Value value = func.Call(arguments[0], arguments.len - 1, arguments.data + 1);
552
-
553
- if (env.IsExceptionPending()) [[unlikely]]
554
- return;
555
-
556
- #define RETURN_INTEGER(CType) \
557
- do { \
558
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] { \
559
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value)); \
560
- return; \
561
- } \
562
- \
563
- CType v = GetNumber<CType>(value); \
564
- out_reg->rax = (uint64_t)v; \
565
- } while (false)
566
- #define RETURN_INTEGER_SWAP(CType) \
567
- do { \
568
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] { \
569
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value)); \
570
- return; \
571
- } \
572
- \
573
- CType v = GetNumber<CType>(value); \
574
- out_reg->rax = (uint64_t)ReverseBytes(v); \
575
- } while (false)
576
-
577
- switch (type->primitive) {
578
- case PrimitiveKind::Void: {} break;
579
- case PrimitiveKind::Bool: {
580
- if (!value.IsBoolean()) [[unlikely]] {
581
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected boolean", GetValueType(instance, value));
582
- return;
583
- }
584
-
585
- bool b = value.As<Napi::Boolean>();
586
- out_reg->rax = (uint64_t)b;
587
- } break;
588
- case PrimitiveKind::Int8: { RETURN_INTEGER(int8_t); } break;
589
- case PrimitiveKind::UInt8: { RETURN_INTEGER(uint8_t); } break;
590
- case PrimitiveKind::Int16: { RETURN_INTEGER(int16_t); } break;
591
- case PrimitiveKind::Int16S: { RETURN_INTEGER_SWAP(int16_t); } break;
592
- case PrimitiveKind::UInt16: { RETURN_INTEGER(uint16_t); } break;
593
- case PrimitiveKind::UInt16S: { RETURN_INTEGER_SWAP(uint16_t); } break;
594
- case PrimitiveKind::Int32: { RETURN_INTEGER(int32_t); } break;
595
- case PrimitiveKind::Int32S: { RETURN_INTEGER_SWAP(int32_t); } break;
596
- case PrimitiveKind::UInt32: { RETURN_INTEGER(uint32_t); } break;
597
- case PrimitiveKind::UInt32S: { RETURN_INTEGER_SWAP(uint32_t); } break;
598
- case PrimitiveKind::Int64: { RETURN_INTEGER(int64_t); } break;
599
- case PrimitiveKind::Int64S: { RETURN_INTEGER_SWAP(int64_t); } break;
600
- case PrimitiveKind::UInt64: { RETURN_INTEGER(uint64_t); } break;
601
- case PrimitiveKind::UInt64S: { RETURN_INTEGER_SWAP(uint64_t); } break;
602
- case PrimitiveKind::String: {
603
- const char *str;
604
- if (!PushString(value, 1, &str)) [[unlikely]]
605
- return;
606
-
607
- out_reg->rax = (uint64_t)str;
608
- } break;
609
- case PrimitiveKind::String16: {
610
- const char16_t *str16;
611
- if (!PushString16(value, 1, &str16)) [[unlikely]]
612
- return;
613
-
614
- out_reg->rax = (uint64_t)str16;
615
- } break;
616
- case PrimitiveKind::String32: {
617
- const char32_t *str32;
618
- if (!PushString32(value, 1, &str32)) [[unlikely]]
619
- return;
620
-
621
- out_reg->rax = (uint64_t)str32;
622
- } break;
623
- case PrimitiveKind::Pointer: {
624
- uint8_t *ptr;
625
-
626
- if (CheckValueTag(value, type->ref.marker)) {
627
- ptr = value.As<Napi::External<uint8_t>>().Data();
628
- } else if (IsObject(value) && (type->ref.type->primitive == PrimitiveKind::Record ||
629
- type->ref.type->primitive == PrimitiveKind::Union)) {
630
- Napi::Object obj = value.As<Napi::Object>();
631
-
632
- ptr = AllocHeap(type->ref.type->size, 16);
633
-
634
- if (!PushObject(obj, type->ref.type, ptr))
635
- return;
636
- } else if (IsNullOrUndefined(value)) {
637
- ptr = nullptr;
638
- } else {
639
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected %2", GetValueType(instance, value), type->name);
640
- return;
641
- }
642
-
643
- out_reg->rax = (uint64_t)ptr;
644
- } break;
645
- case PrimitiveKind::Record:
646
- case PrimitiveKind::Union: {
647
- if (!IsObject(value)) [[unlikely]] {
648
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected object", GetValueType(instance, value));
649
- return;
650
- }
651
-
652
- Napi::Object obj = value.As<Napi::Object>();
653
-
654
- if (return_ptr) {
655
- if (!PushObject(obj, type, return_ptr))
656
- return;
657
- out_reg->rax = (uint64_t)return_ptr;
658
- } else {
659
- PushObject(obj, type, (uint8_t *)&out_reg->rax);
660
- }
661
- } break;
662
- case PrimitiveKind::Array: { K_UNREACHABLE(); } break;
663
- case PrimitiveKind::Float32: {
664
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
665
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
666
- return;
667
- }
668
-
669
- float f = GetNumber<float>(value);
670
-
671
- memset((uint8_t *)&out_reg->xmm0 + 4, 0, 4);
672
- memcpy(&out_reg->xmm0, &f, 4);
673
- } break;
674
- case PrimitiveKind::Float64: {
675
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
676
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
677
- return;
678
- }
679
-
680
- double d = GetNumber<double>(value);
681
- out_reg->xmm0 = d;
682
- } break;
683
- case PrimitiveKind::Callback: {
684
- void *ptr;
685
-
686
- if (value.IsFunction()) {
687
- Napi::Function func2 = value.As<Napi::Function>();
688
-
689
- ptr = ReserveTrampoline(type->ref.proto, func2);
690
- if (!ptr) [[unlikely]]
691
- return;
692
- } else if (CheckValueTag(value, type->ref.marker)) {
693
- ptr = value.As<Napi::External<void>>().Data();
694
- } else if (IsNullOrUndefined(value)) {
695
- ptr = nullptr;
696
- } else {
697
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected %2", GetValueType(instance, value), type->name);
698
- return;
699
- }
700
-
701
- out_reg->rax = (uint64_t)ptr;
702
- } break;
703
-
704
- case PrimitiveKind::Prototype: { K_UNREACHABLE(); } break;
705
- }
706
-
707
- #undef RETURN_INTEGER_SWAP
708
- #undef RETURN_INTEGER
709
-
710
- err_guard.Disable();
711
- }
712
-
713
- }
714
-
715
- #endif