@pact-foundation/pact-core 13.4.1-beta.1 → 13.4.1-beta.10

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 (54) hide show
  1. package/binding.gyp +4 -8
  2. package/build/Makefile +352 -0
  3. package/build/binding.Makefile +6 -0
  4. package/build/copy_release_artifacts.target.mk +47 -0
  5. package/build/gyp-mac-tool +777 -0
  6. package/build/pact.target.mk +205 -0
  7. package/build/set_osx_install_name.target.mk +48 -0
  8. package/ffi/libpact_ffi.dylib +0 -0
  9. package/ffi/libpact_ffi.so +0 -0
  10. package/ffi/osxaarch64/libpact_ffi.dylib +0 -0
  11. package/ffi/pact.h +599 -108
  12. package/ffi/pact_ffi.dll +0 -0
  13. package/ffi/pact_ffi.dll.lib +0 -0
  14. package/native/consumer.cc +89 -33
  15. package/package.json +4 -7
  16. package/src/consumer/__testoutput__/foo-consumer-bar-provider.json +89 -0
  17. package/src/consumer/index.d.ts +1 -0
  18. package/src/consumer/index.js +43 -31
  19. package/src/consumer/index.js.map +1 -1
  20. package/src/consumer/types.d.ts +3 -0
  21. package/src/ffi/index.d.ts +4 -4
  22. package/src/ffi/index.js +6 -9
  23. package/src/ffi/index.js.map +1 -1
  24. package/src/ffi/internals/index.d.ts +0 -2
  25. package/src/ffi/internals/index.js +1 -11
  26. package/src/ffi/internals/index.js.map +1 -1
  27. package/src/ffi/internals/types.d.ts +2 -4
  28. package/src/ffi/types.d.ts +53 -0
  29. package/src/ffi/types.js +23 -1
  30. package/src/ffi/types.js.map +1 -1
  31. package/src/publisher.d.ts +1 -0
  32. package/src/publisher.js +11 -4
  33. package/src/publisher.js.map +1 -1
  34. package/src/verifier/nativeVerifier.js +12 -12
  35. package/src/verifier/nativeVerifier.js.map +1 -1
  36. package/src/verifier/types.d.ts +3 -0
  37. package/src/verifier/validateOptions.js +3 -1
  38. package/src/verifier/validateOptions.js.map +1 -1
  39. package/standalone/install.d.ts +1 -1
  40. package/standalone/install.js +1 -1
  41. package/ffi/libpact_ffi.so.gz +0 -0
  42. package/native/consumer.c +0 -210
  43. package/src/ffi/argumentMapper/index.d.ts +0 -2
  44. package/src/ffi/argumentMapper/index.js +0 -47
  45. package/src/ffi/argumentMapper/index.js.map +0 -1
  46. package/src/ffi/argumentMapper/types.d.ts +0 -8
  47. package/src/ffi/argumentMapper/types.js +0 -3
  48. package/src/ffi/argumentMapper/types.js.map +0 -1
  49. package/src/ffi/declarations.d.ts +0 -117
  50. package/src/ffi/declarations.js +0 -66
  51. package/src/ffi/declarations.js.map +0 -1
  52. package/src/verifier/arguments.d.ts +0 -13
  53. package/src/verifier/arguments.js +0 -89
  54. package/src/verifier/arguments.js.map +0 -1
package/ffi/pact_ffi.dll CHANGED
Binary file
Binary file
@@ -3,6 +3,58 @@
3
3
 
4
4
  using namespace Napi;
5
5
 
6
+ PactSpecification integerToSpecification(Napi::Env &env, uint32_t number) {
7
+ PactSpecification specification = PactSpecification::PactSpecification_V2;
8
+
9
+ switch(number) {
10
+ case 0:
11
+ specification = PactSpecification::PactSpecification_Unknown;
12
+ break;
13
+ case 1:
14
+ specification = PactSpecification::PactSpecification_V1;
15
+ break;
16
+ case 2:
17
+ specification = PactSpecification::PactSpecification_V1_1;
18
+ break;
19
+ case 3:
20
+ specification = PactSpecification::PactSpecification_V2;
21
+ break;
22
+ case 4:
23
+ specification = PactSpecification::PactSpecification_V3;
24
+ break;
25
+ case 5:
26
+ specification = PactSpecification::PactSpecification_V4;
27
+ break;
28
+ default:
29
+ std::string err = "Unable to parse pact specification: ";
30
+ err += number;
31
+
32
+ throw Napi::Error::New(env, err);
33
+ }
34
+
35
+ return specification;
36
+ }
37
+
38
+ InteractionPart integerToInteractionPart(Napi::Env &env, uint32_t number) {
39
+ InteractionPart part = InteractionPart::InteractionPart_Request;
40
+
41
+ switch(number) {
42
+ case 0:
43
+ part = InteractionPart::InteractionPart_Request;
44
+ break;
45
+ case 1:
46
+ part = InteractionPart::InteractionPart_Response;
47
+ break;
48
+ default:
49
+ std::string err = "Unable to parse pact interaction part: ";
50
+ err += number;
51
+
52
+ throw Napi::Error::New(env, err);
53
+ }
54
+
55
+ return part;
56
+ }
57
+
6
58
  /**
7
59
  * Fetch the in-memory logger buffer contents. This will only have any contents if the `buffer`
8
60
  * sink has been configured to log to. The contents will be allocated on the heap and will need
@@ -265,12 +317,12 @@ Napi::Value PactffiWritePactFile(const Napi::CallbackInfo& info) {
265
317
  }
266
318
 
267
319
  int32_t port = info[0].As<Napi::Number>().Int32Value();
268
- std::string dir = info[0].As<Napi::String>().Utf8Value();
269
- bool overwrite = info[0].As<Napi::Boolean>().Value();
320
+ std::string dir = info[1].As<Napi::String>().Utf8Value();
321
+ bool overwrite = info[2].As<Napi::Boolean>().Value();
270
322
 
271
- pactffi_write_pact_file(port, dir.c_str(), overwrite);
323
+ int32_t res = pactffi_write_pact_file(port, dir.c_str(), overwrite);
272
324
 
273
- return info.Env().Undefined();
325
+ return Number::New(env, res);
274
326
  }
275
327
 
276
328
  /**
@@ -455,7 +507,7 @@ Napi::Value PactffiGivenWithParam(const Napi::CallbackInfo& info) {
455
507
  InteractionHandle interaction = info[0].As<Napi::Number>().Uint32Value();
456
508
  std::string description = info[1].As<Napi::String>().Utf8Value();
457
509
  std::string name = info[2].As<Napi::String>().Utf8Value();
458
- std::string value = info[4].As<Napi::String>().Utf8Value();
510
+ std::string value = info[3].As<Napi::String>().Utf8Value();
459
511
 
460
512
  bool res = pactffi_given_with_param(interaction, description.c_str(), name.c_str(), value.c_str());
461
513
 
@@ -541,7 +593,7 @@ Napi::Value PactffiWithQueryParameter(const Napi::CallbackInfo& info) {
541
593
  InteractionHandle interaction = info[0].As<Napi::Number>().Uint32Value();
542
594
  std::string name = info[1].As<Napi::String>().Utf8Value();
543
595
  size_t index = info[2].As<Napi::Number>().Uint32Value();
544
- std::string value = info[2].As<Napi::String>().Utf8Value();
596
+ std::string value = info[3].As<Napi::String>().Utf8Value();
545
597
 
546
598
  bool res = pactffi_with_query_parameter(interaction, name.c_str(), index, value.c_str());
547
599
 
@@ -572,19 +624,20 @@ Napi::Value PactffiWithSpecification(const Napi::CallbackInfo& info) {
572
624
  }
573
625
 
574
626
  if (!info[1].IsNumber()) {
575
- throw Napi::Error::New(env, "PactffiWithSpecification(arg 1) expected a string");
627
+ throw Napi::Error::New(env, "PactffiWithSpecification(arg 1) expected a number");
576
628
  }
577
629
 
578
630
  PactHandle pact = info[0].As<Napi::Number>().Uint32Value();
579
- PactSpecification* specification = info[1].As<External<PactSpecification>>().Data();
580
- // Alternatively could just handle as ints (the rust code ensures the enum is layed out correctly) e.g.
581
- // uint32 specification = info[1].As<Napi::Number>().Uint32Value();
631
+ uint32_t specificationNumber = info[1].As<Napi::Number>().Uint32Value();
632
+ PactSpecification specification = integerToSpecification(env, specificationNumber);
582
633
 
583
- bool res = pactffi_with_specification(pact, *specification);
634
+ bool res = pactffi_with_specification(pact, specification);
584
635
 
585
636
  return Napi::Boolean::New(env, res);
586
637
  }
587
638
 
639
+
640
+
588
641
  /**
589
642
  * Sets the additional metadata on the Pact file. Common uses are to add the client library details such as the name and version
590
643
  * Returns false if the interaction or Pact can't be modified (i.e. the mock server for it has already started)
@@ -669,22 +722,22 @@ Napi::Value PactffiWithHeader(const Napi::CallbackInfo& info) {
669
722
  throw Napi::Error::New(env, "PactffiWithHeader(arg 2) expected a string");
670
723
  }
671
724
 
672
- if (!info[3].IsString()) {
673
- throw Napi::Error::New(env, "PactffiWithHeader(arg 3) expected a string");
725
+ if (!info[3].IsNumber()) {
726
+ throw Napi::Error::New(env, "PactffiWithHeader(arg 3) expected a number");
674
727
  }
675
728
 
676
729
  if (!info[4].IsString()) {
677
730
  throw Napi::Error::New(env, "PactffiWithHeader(arg 4) expected a string");
678
731
  }
679
732
 
680
- PactHandle pact = info[0].As<Napi::Number>().Uint32Value();
681
- InteractionPart* part = info[1].As<External<InteractionPart>>().Data();
682
- // uint32_t part = info[1].As<Napi::Number>().Uint32Value();
733
+ InteractionHandle interaction = info[0].As<Napi::Number>().Uint32Value();
734
+ uint32_t partNumber = info[1].As<Napi::Number>().Uint32Value();
735
+ InteractionPart part = integerToInteractionPart(env, partNumber);
683
736
  std::string name = info[2].As<Napi::String>().Utf8Value();
684
737
  size_t index = info[3].As<Napi::Number>().Uint32Value();
685
- std::string value = info[3].As<Napi::String>().Utf8Value();
738
+ std::string value = info[4].As<Napi::String>().Utf8Value();
686
739
 
687
- bool res = pactffi_with_header(pact, *part, name.c_str(), index, value.c_str());
740
+ bool res = pactffi_with_header(interaction, part, name.c_str(), index, value.c_str());
688
741
 
689
742
  return Napi::Boolean::New(env, res);
690
743
  }
@@ -729,13 +782,13 @@ Napi::Value PactffiWithBody(const Napi::CallbackInfo& info) {
729
782
  throw Napi::Error::New(env, "PactffiWithBody(arg 3) expected a string");
730
783
  }
731
784
 
732
- PactHandle pact = info[0].As<Napi::Number>().Uint32Value();
733
- InteractionPart* part = info[1].As<External<InteractionPart>>().Data();
734
- // uint32_t part = info[1].As<Napi::Number>().Uint32Value();
785
+ InteractionHandle interaction = info[0].As<Napi::Number>().Uint32Value();
786
+ uint32_t partNumber = info[1].As<Napi::Number>().Uint32Value();
787
+ InteractionPart part = integerToInteractionPart(env, partNumber);
735
788
  std::string contentType = info[2].As<Napi::String>().Utf8Value();
736
789
  std::string body = info[3].As<Napi::String>().Utf8Value();
737
790
 
738
- bool res = pactffi_with_body(pact, *part, contentType.c_str(), body.c_str());
791
+ bool res = pactffi_with_body(interaction, part, contentType.c_str(), body.c_str());
739
792
 
740
793
  return Napi::Boolean::New(env, res);
741
794
  }
@@ -787,14 +840,16 @@ Napi::Value PactffiWithBinaryFile(const Napi::CallbackInfo& info) {
787
840
  throw Napi::Error::New(env, "PactffiWithBinaryFile(arg 4) expected a number");
788
841
  }
789
842
 
790
- PactHandle pact = info[0].As<Napi::Number>().Uint32Value();
791
- InteractionPart* part = info[1].As<External<InteractionPart>>().Data();
843
+ InteractionHandle interaction = info[0].As<Napi::Number>().Uint32Value();
844
+ uint32_t partNumber = info[1].As<Napi::Number>().Uint32Value();
845
+ InteractionPart part = integerToInteractionPart(env, partNumber);
846
+
792
847
  // uint32_t part = info[1].As<Napi::Number>().Uint32Value();
793
848
  std::string contentType = info[2].As<Napi::String>().Utf8Value();
794
849
  Napi::Buffer<uint8_t> buffer = info[3].As<Napi::Buffer<uint8_t>>();
795
850
  size_t size = info[4].As<Napi::Number>().Uint32Value();
796
851
 
797
- bool res = pactffi_with_binary_file(pact, *part, contentType.c_str(), buffer.Data(), size);
852
+ bool res = pactffi_with_binary_file(interaction, part, contentType.c_str(), buffer.Data(), size);
798
853
 
799
854
  return Napi::Boolean::New(env, res);
800
855
  }
@@ -817,7 +872,7 @@ Napi::Value PactffiWithBinaryFile(const Napi::CallbackInfo& info) {
817
872
  * InteractionPart part,
818
873
  * const char *content_type,
819
874
  * const char *file,
820
- * const char *part_name);
875
+ * const char part_name);
821
876
  */
822
877
  Napi::Value PactffiWithMultipartFile(const Napi::CallbackInfo& info) {
823
878
  // return: bool
@@ -847,14 +902,15 @@ Napi::Value PactffiWithMultipartFile(const Napi::CallbackInfo& info) {
847
902
  throw Napi::Error::New(env, "PactffiWithMultipartFile(arg 4) expected a string");
848
903
  }
849
904
 
850
- PactHandle pact = info[0].As<Napi::Number>().Uint32Value();
851
- InteractionPart* part = info[1].As<External<InteractionPart>>().Data();
852
- // uint32_t part = info[1].As<Napi::Number>().Uint32Value();
905
+ InteractionHandle interaction = info[0].As<Napi::Number>().Uint32Value();
906
+ uint32_t partNumber = info[1].As<Napi::Number>().Uint32Value();
907
+ InteractionPart part = integerToInteractionPart(env, partNumber);
908
+
853
909
  std::string contentType = info[2].As<Napi::String>().Utf8Value();
854
910
  std::string file = info[3].As<Napi::String>().Utf8Value();
855
911
  std::string partName = info[4].As<Napi::String>().Utf8Value();
856
912
 
857
- StringResult res = pactffi_with_multipart_file(pact, *part, contentType.c_str(), file.c_str(), partName.c_str());
913
+ StringResult res = pactffi_with_multipart_file(interaction, part, contentType.c_str(), file.c_str(), partName.c_str());
858
914
 
859
915
  // TODO: this will also break the https://github.com/pact-foundation/pact-js-core/tree/feat/ffi-consumer/src/consumer branch
860
916
  // which expects a struct
@@ -886,8 +942,8 @@ Napi::Value PactffiResponseStatus(const Napi::CallbackInfo& info) {
886
942
  throw Napi::Error::New(env, "PactffiResponseStatus received < 2 arguments");
887
943
  }
888
944
 
889
- if (!info[0].IsString()) {
890
- throw Napi::Error::New(env, "PactffiResponseStatus(arg 0) expected a string");
945
+ if (!info[0].IsNumber()) {
946
+ throw Napi::Error::New(env, "PactffiResponseStatus(arg 0) expected a number");
891
947
  }
892
948
 
893
949
  if (!info[1].IsNumber()) {
@@ -895,7 +951,7 @@ Napi::Value PactffiResponseStatus(const Napi::CallbackInfo& info) {
895
951
  }
896
952
 
897
953
  InteractionHandle interaction = info[0].As<Napi::Number>().Uint32Value();
898
- unsigned short status = info[0].As<Napi::Number>().Uint32Value();
954
+ unsigned short status = info[1].As<Napi::Number>().Uint32Value();
899
955
 
900
956
  bool res = pactffi_response_status(interaction, status);
901
957
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pact-foundation/pact-core",
3
- "version": "13.4.1-beta.1",
3
+ "version": "13.4.1-beta.10",
4
4
  "description": "Core of @pact-foundation/pact. You almost certainly don't want to depend on this directly.",
5
5
  "main": "src/index.js",
6
6
  "homepage": "https://github.com/pact-foundation/pact-js-core#readme",
@@ -57,15 +57,12 @@
57
57
  "chalk": "4.1.2",
58
58
  "check-types": "7.3.0",
59
59
  "cross-spawn": "7.0.3",
60
- "ffi-napi": "^4.0.3",
61
60
  "mkdirp": "1.0.0",
62
61
  "needle": "2.8.0",
63
62
  "node-addon-api": "^4.2.0",
64
63
  "pino": "6.13.1",
65
64
  "pino-pretty": "^6.0.0",
66
65
  "promise-timeout": "1.3.0",
67
- "ref-napi": "^3.0.3",
68
- "ref-struct-di": "^1.1.1",
69
66
  "rimraf": "2.6.2",
70
67
  "underscore": "1.12.1",
71
68
  "unixify": "1.0.0"
@@ -81,7 +78,6 @@
81
78
  "@types/cross-spawn": "^6.0.1",
82
79
  "@types/decompress": "^4.2.3",
83
80
  "@types/express": "4.11.1",
84
- "@types/ffi-napi": "^2.4.3",
85
81
  "@types/jest": "^27.0.2",
86
82
  "@types/mkdirp": "^0.5.2",
87
83
  "@types/mocha": "9.0.0",
@@ -96,6 +92,7 @@
96
92
  "@types/url-join": "^4.0.0",
97
93
  "@typescript-eslint/eslint-plugin": "^5.2.0",
98
94
  "@typescript-eslint/parser": "^5.2.0",
95
+ "axios": "^0.24.0",
99
96
  "basic-auth": "2.0.0",
100
97
  "body-parser": "1.18.2",
101
98
  "chai": "4.1.2",
@@ -106,10 +103,10 @@
106
103
  "eslint": "^8.1.0",
107
104
  "eslint-config-prettier": "^8.3.0",
108
105
  "express": "4.16.2",
106
+ "form-data": "^4.0.0",
109
107
  "jest": "^27.3.1",
110
108
  "mocha": "^9.1.3",
111
109
  "nodemon": "^2.0.4",
112
- "prebuildify": "^5.0.0",
113
110
  "prettier": "^2.3.0",
114
111
  "sinon": "9.2.4",
115
112
  "snyk": "^1.747.0",
@@ -121,7 +118,7 @@
121
118
  "scripts": {
122
119
  "clean": "rimraf '{src,test,bin,standalone}/**/*.{js,map,d.ts}' 'package.zip' '.tmp' 'tmp'",
123
120
  "lint": "eslint . --ext .ts --config .eslintrc",
124
- "prebuild": "npm run clean",
121
+ "prebuild": "npm run clean && bash script/download-libs.sh",
125
122
  "build": "tsc",
126
123
  "prerelease": "npm run snyk-protect",
127
124
  "release": "standard-version",
@@ -0,0 +1,89 @@
1
+ {
2
+ "consumer": {
3
+ "name": "foo-consumer"
4
+ },
5
+ "interactions": [
6
+ {
7
+ "description": "a request to get a create with JSON data",
8
+ "providerStates": [
9
+ {
10
+ "name": "fido exists"
11
+ }
12
+ ],
13
+ "request": {
14
+ "headers": {
15
+ "x-special-header": "header"
16
+ },
17
+ "method": "POST",
18
+ "path": "/dogs/1234",
19
+ "query": {
20
+ "someParam": [
21
+ "someValue"
22
+ ]
23
+ }
24
+ },
25
+ "response": {
26
+ "body": {
27
+ "age": 23,
28
+ "alive": true,
29
+ "name": "fido"
30
+ },
31
+ "headers": {
32
+ "Content-Type": "application/json",
33
+ "x-special-response-header": "header"
34
+ },
35
+ "matchingRules": {
36
+ "body": {
37
+ "$.age": {
38
+ "combine": "AND",
39
+ "matchers": [
40
+ {
41
+ "match": "type"
42
+ }
43
+ ]
44
+ },
45
+ "$.alive": {
46
+ "combine": "AND",
47
+ "matchers": [
48
+ {
49
+ "match": "type"
50
+ }
51
+ ]
52
+ },
53
+ "$.id": {
54
+ "combine": "AND",
55
+ "matchers": [
56
+ {
57
+ "match": "type"
58
+ }
59
+ ]
60
+ },
61
+ "$.name": {
62
+ "combine": "AND",
63
+ "matchers": [
64
+ {
65
+ "match": "type"
66
+ }
67
+ ]
68
+ }
69
+ },
70
+ "header": {}
71
+ },
72
+ "status": 200
73
+ }
74
+ }
75
+ ],
76
+ "metadata": {
77
+ "pactRust": {
78
+ "ffi": "0.1.6",
79
+ "mockserver": "0.8.6",
80
+ "models": "0.2.6"
81
+ },
82
+ "pactSpecification": {
83
+ "version": "3.0.0"
84
+ }
85
+ },
86
+ "provider": {
87
+ "name": "bar-provider"
88
+ }
89
+ }
@@ -1,3 +1,4 @@
1
1
  import { FfiSpecificationVersion } from '../ffi/types';
2
2
  import { ConsumerPact } from './types';
3
3
  export declare const makeConsumerPact: (consumer: string, provider: string, version?: FfiSpecificationVersion, logLevel?: import("..").LogLevel) => ConsumerPact;
4
+ export * from './types';
@@ -10,30 +10,37 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
13
23
  Object.defineProperty(exports, "__esModule", { value: true });
14
24
  exports.makeConsumerPact = void 0;
15
- var ffi_1 = require("../ffi");
16
25
  var types_1 = require("../ffi/types");
17
26
  var logger_1 = require("../logger");
18
27
  var checkErrors_1 = require("./checkErrors");
19
- var handleStringResult = function (res) {
20
- if (res.tag !== 0) {
21
- logger_1.logErrorAndThrow("invalid multipart body specified: " + res.ok);
22
- }
23
- return true;
24
- };
28
+ var ffi_1 = require("../ffi");
25
29
  var makeConsumerPact = function (consumer, provider, version, logLevel) {
26
30
  if (version === void 0) { version = 3; }
27
31
  if (logLevel === void 0) { logLevel = logger_1.getLogLevel(); }
28
- var lib = ffi_1.getFfiLib(logLevel);
29
- var pactPtr = lib.pactffi_new_pact(consumer, provider);
30
- if (!lib.pactffi_with_specification(pactPtr, version)) {
32
+ var ffi = ffi_1.getFfiLib(logLevel);
33
+ if (logLevel) {
34
+ logger_1.setLogLevel(logLevel);
35
+ }
36
+ var pactPtr = ffi.pactffiNewPact(consumer, provider);
37
+ if (!ffi.pactffiWithSpecification(pactPtr, version)) {
31
38
  throw new Error("Unable to set core spec version. The pact FfiSpecificationVersion '" + version + "' may be invalid (note this is not the same as the pact spec version)");
32
39
  }
33
40
  return {
34
41
  createMockServer: function (address, requestedPort, tls) {
35
42
  if (tls === void 0) { tls = false; }
36
- var port = lib.pactffi_create_mock_server_for_pact(pactPtr, address + ":" + (requestedPort ? requestedPort : 0), tls);
43
+ var port = ffi.pactffiCreateMockServerForPact(pactPtr, address + ":" + (requestedPort ? requestedPort : 0), tls);
37
44
  var error = Object.keys(types_1.CREATE_MOCK_SERVER_ERRORS).find(function (key) { return types_1.CREATE_MOCK_SERVER_ERRORS[key] === port; });
38
45
  if (error) {
39
46
  if (error === 'ADDRESS_NOT_VALID') {
@@ -50,10 +57,10 @@ var makeConsumerPact = function (consumer, provider, version, logLevel) {
50
57
  return port;
51
58
  },
52
59
  mockServerMatchedSuccessfully: function (port) {
53
- return lib.pactffi_mock_server_matched(port);
60
+ return ffi.pactffiMockServerMatched(port);
54
61
  },
55
62
  mockServerMismatches: function (port) {
56
- var results = JSON.parse(lib.pactffi_mock_server_mismatches(port));
63
+ var results = JSON.parse(ffi.pactffiMockServerMismatches(port));
57
64
  return results.map(function (result) { return (__assign(__assign({}, result), ('mismatches' in result
58
65
  ? {
59
66
  mismatches: result.mismatches.map(function (m) {
@@ -63,11 +70,11 @@ var makeConsumerPact = function (consumer, provider, version, logLevel) {
63
70
  : {}))); });
64
71
  },
65
72
  cleanupMockServer: function (port) {
66
- return checkErrors_1.wrapWithCheck(function (port) { return lib.pactffi_cleanup_mock_server(port); }, 'cleanupMockServer')(port);
73
+ return checkErrors_1.wrapWithCheck(function (port) { return ffi.pactffiCleanupMockServer(port); }, 'cleanupMockServer')(port);
67
74
  },
68
75
  writePactFile: function (port, dir, merge) {
69
76
  if (merge === void 0) { merge = true; }
70
- var result = lib.pactffi_write_pact_file(port, dir, !merge);
77
+ var result = ffi.pactffiWritePactFile(port, dir, !merge);
71
78
  switch (result) {
72
79
  case types_1.FfiWritePactResponse.SUCCESS:
73
80
  return;
@@ -82,52 +89,57 @@ var makeConsumerPact = function (consumer, provider, version, logLevel) {
82
89
  }
83
90
  },
84
91
  addMetadata: function (namespace, name, value) {
85
- return lib.pactffi_with_pact_metadata(pactPtr, namespace, name, value);
92
+ return ffi.pactffiWithPactMetadata(pactPtr, namespace, name, value);
86
93
  },
87
94
  newInteraction: function (description) {
88
- var interactionPtr = lib.pactffi_new_interaction(pactPtr, description);
95
+ var interactionPtr = ffi.pactffiNewInteraction(pactPtr, description);
89
96
  return checkErrors_1.wrapAllWithCheck({
90
97
  uponReceiving: function (description) {
91
- return lib.pactffi_upon_receiving(interactionPtr, description);
98
+ return ffi.pactffiUponReceiving(interactionPtr, description);
92
99
  },
93
100
  given: function (state) {
94
- return lib.pactffi_given(interactionPtr, state);
101
+ return ffi.pactffiGiven(interactionPtr, state);
95
102
  },
96
103
  givenWithParam: function (state, name, value) {
97
- return lib.pactffi_given_with_param(interactionPtr, state, name, value);
104
+ return ffi.pactffiGivenWithParam(interactionPtr, state, name, value);
98
105
  },
99
106
  withRequest: function (method, path) {
100
- return lib.pactffi_with_request(interactionPtr, method, path);
107
+ return ffi.pactffiWithRequest(interactionPtr, method, path);
101
108
  },
102
109
  withQuery: function (name, index, value) {
103
- return lib.pactffi_with_query_parameter(interactionPtr, name, index, value);
110
+ return ffi.pactffiWithQueryParameter(interactionPtr, name, index, value);
104
111
  },
105
112
  withRequestHeader: function (name, index, value) {
106
- return lib.pactffi_with_header(interactionPtr, types_1.INTERACTION_PART_REQUEST, name, index, value);
113
+ return ffi.pactffiWithHeader(interactionPtr, types_1.INTERACTION_PART_REQUEST, name, index, value);
107
114
  },
108
115
  withRequestBody: function (body, contentType) {
109
- return lib.pactffi_with_body(interactionPtr, types_1.INTERACTION_PART_REQUEST, contentType, body);
116
+ return ffi.pactffiWithBody(interactionPtr, types_1.INTERACTION_PART_REQUEST, contentType, body);
117
+ },
118
+ withRequestBinaryBody: function (body, contentType) {
119
+ return ffi.pactffiWithBinaryFile(interactionPtr, types_1.INTERACTION_PART_REQUEST, contentType, body, body.length);
110
120
  },
111
121
  withRequestMultipartBody: function (contentType, filename, mimePartName) {
112
- var res = lib.pactffi_with_multipart_file(interactionPtr, types_1.INTERACTION_PART_REQUEST, contentType, filename, mimePartName);
113
- return handleStringResult(res);
122
+ return (ffi.pactffiWithMultipartFile(interactionPtr, types_1.INTERACTION_PART_REQUEST, contentType, filename, mimePartName) === undefined);
114
123
  },
115
124
  withResponseHeader: function (name, index, value) {
116
- return lib.pactffi_with_header(interactionPtr, types_1.INTERACTION_PART_RESPONSE, name, index, value);
125
+ return ffi.pactffiWithHeader(interactionPtr, types_1.INTERACTION_PART_RESPONSE, name, index, value);
117
126
  },
118
127
  withResponseBody: function (body, contentType) {
119
- return lib.pactffi_with_body(interactionPtr, types_1.INTERACTION_PART_RESPONSE, contentType, body);
128
+ return ffi.pactffiWithBody(interactionPtr, types_1.INTERACTION_PART_RESPONSE, contentType, body);
129
+ },
130
+ withResponseBinaryBody: function (body, contentType) {
131
+ return ffi.pactffiWithBinaryFile(interactionPtr, types_1.INTERACTION_PART_RESPONSE, contentType, body, body.length);
120
132
  },
121
133
  withResponseMultipartBody: function (contentType, filename, mimePartName) {
122
- var res = lib.pactffi_with_multipart_file(interactionPtr, types_1.INTERACTION_PART_RESPONSE, contentType, filename, mimePartName);
123
- return handleStringResult(res);
134
+ return (ffi.pactffiWithMultipartFile(interactionPtr, types_1.INTERACTION_PART_RESPONSE, contentType, filename, mimePartName) === undefined);
124
135
  },
125
136
  withStatus: function (status) {
126
- return lib.pactffi_response_status(interactionPtr, status);
137
+ return ffi.pactffiResponseStatus(interactionPtr, status);
127
138
  },
128
139
  });
129
140
  },
130
141
  };
131
142
  };
132
143
  exports.makeConsumerPact = makeConsumerPact;
144
+ __exportStar(require("./types"), exports);
133
145
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8BAAmC;AACnC,sCAMsB;AACtB,oCAA4E;AAC5E,6CAAgE;AAUhE,IAAM,kBAAkB,GAAG,UAAC,GAAQ;IAClC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE;QACjB,yBAAgB,CAAC,uCAAqC,GAAG,CAAC,EAAI,CAAC,CAAC;KACjE;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEK,IAAM,gBAAgB,GAAG,UAC9B,QAAgB,EAChB,QAAgB,EAChB,OAAoC,EACpC,QAAwB;IADxB,wBAAA,EAAA,WAAoC;IACpC,yBAAA,EAAA,WAAW,oBAAW,EAAE;IAExB,IAAM,GAAG,GAAG,eAAS,CAAC,QAAQ,CAAC,CAAC;IAEhC,IAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;QACrD,MAAM,IAAI,KAAK,CACb,wEAAsE,OAAO,0EAAuE,CACrJ,CAAC;KACH;IAED,OAAO;QACL,gBAAgB,EAAE,UAChB,OAAe,EACf,aAAsB,EACtB,GAAW;YAAX,oBAAA,EAAA,WAAW;YAEX,IAAM,IAAI,GAAG,GAAG,CAAC,mCAAmC,CAClD,OAAO,EACJ,OAAO,UAAI,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAE,EACjD,GAAG,CACJ,CAAC;YACF,IAAM,KAAK,GACT,MAAM,CAAC,IAAI,CAAC,iCAAyB,CAAC,CAAC,IAAI,CACzC,UAAC,GAAG,IAAK,OAAA,iCAAyB,CAAC,GAAG,CAAC,KAAK,IAAI,EAAvC,CAAuC,CACP,CAAC;YAC9C,IAAI,KAAK,EAAE;gBACT,IAAI,KAAK,KAAK,mBAAmB,EAAE;oBACjC,yBAAgB,CACd,qCAAmC,OAAO,sCAAmC,CAC9E,CAAC;iBACH;gBACD,IAAI,KAAK,KAAK,YAAY,EAAE;oBAC1B,yBAAgB,CACd,iEAAiE,CAClE,CAAC;iBACH;gBACD,yBAAgB,CACd,qFAAoF,KAAK,MAAG,CAC7F,CAAC;aACH;YACD,IAAI,IAAI,IAAI,CAAC,EAAE;gBACb,yBAAgB,CACd,qDAAmD,IAAI,MAAG,CAC3D,CAAC;aACH;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6BAA6B,EAAE,UAAC,IAAY;YAC1C,OAAO,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QACD,oBAAoB,EAAE,UAAC,IAAY;YACjC,IAAM,OAAO,GAAqB,IAAI,CAAC,KAAK,CAC1C,GAAG,CAAC,8BAA8B,CAAC,IAAI,CAAC,CACzC,CAAC;YACF,OAAO,OAAO,CAAC,GAAG,CAAC,UAAC,MAAsB,IAAK,OAAA,uBAC1C,MAAM,GACN,CAAC,YAAY,IAAI,MAAM;gBACxB,CAAC,CAAC;oBACE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,CAAoB;wBACrD,OAAA,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAzC,CAAyC,CAC1C;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC,EACP,EAT6C,CAS7C,CAAC,CAAC;QACN,CAAC;QACD,iBAAiB,EAAE,UAAC,IAAY;YAC9B,OAAO,2BAAa,CAClB,UAAC,IAAY,IAAc,OAAA,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAArC,CAAqC,EAChE,mBAAmB,CACpB,CAAC,IAAI,CAAC,CAAC;QACV,CAAC;QACD,aAAa,EAAE,UAAC,IAAY,EAAE,GAAW,EAAE,KAAY;YAAZ,sBAAA,EAAA,YAAY;YACrD,IAAM,MAAM,GAAG,GAAG,CAAC,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC9D,QAAQ,MAAM,EAAE;gBACd,KAAK,4BAAoB,CAAC,OAAO;oBAC/B,OAAO;gBACT,KAAK,4BAAoB,CAAC,yBAAyB;oBACjD,yBAAgB,CAAC,iDAAiD,CAAC,CAAC;gBACtE,KAAK,4BAAoB,CAAC,aAAa;oBACrC,yBAAgB,CACd,oDAAoD,CACrD,CAAC;gBACJ,KAAK,4BAAoB,CAAC,qBAAqB;oBAC7C,yBAAgB,CACd,2FAA2F,CAC5F,CAAC;gBACJ;oBACE,yBAAgB,CACd,mDAAiD,MAAM,kCAA+B,CACvF,CAAC;aACL;QACH,CAAC;QACD,WAAW,EAAE,UAAC,SAAiB,EAAE,IAAY,EAAE,KAAa;YAC1D,OAAO,GAAG,CAAC,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACzE,CAAC;QACD,cAAc,EAAE,UAAC,WAAmB;YAClC,IAAM,cAAc,GAAG,GAAG,CAAC,uBAAuB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACzE,OAAO,8BAAgB,CAAsB;gBAC3C,aAAa,EAAE,UAAC,WAAmB;oBACjC,OAAO,GAAG,CAAC,sBAAsB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gBACjE,CAAC;gBACD,KAAK,EAAE,UAAC,KAAa;oBACnB,OAAO,GAAG,CAAC,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;gBAClD,CAAC;gBACD,cAAc,EAAE,UAAC,KAAa,EAAE,IAAY,EAAE,KAAa;oBACzD,OAAO,GAAG,CAAC,wBAAwB,CACjC,cAAc,EACd,KAAK,EACL,IAAI,EACJ,KAAK,CACN,CAAC;gBACJ,CAAC;gBACD,WAAW,EAAE,UAAC,MAAc,EAAE,IAAY;oBACxC,OAAO,GAAG,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBAChE,CAAC;gBACD,SAAS,EAAE,UAAC,IAAY,EAAE,KAAa,EAAE,KAAa;oBACpD,OAAO,GAAG,CAAC,4BAA4B,CACrC,cAAc,EACd,IAAI,EACJ,KAAK,EACL,KAAK,CACN,CAAC;gBACJ,CAAC;gBACD,iBAAiB,EAAE,UAAC,IAAY,EAAE,KAAa,EAAE,KAAa;oBAC5D,OAAO,GAAG,CAAC,mBAAmB,CAC5B,cAAc,EACd,gCAAwB,EACxB,IAAI,EACJ,KAAK,EACL,KAAK,CACN,CAAC;gBACJ,CAAC;gBACD,eAAe,EAAE,UAAC,IAAY,EAAE,WAAmB;oBACjD,OAAO,GAAG,CAAC,iBAAiB,CAC1B,cAAc,EACd,gCAAwB,EACxB,WAAW,EACX,IAAI,CACL,CAAC;gBACJ,CAAC;gBAUD,wBAAwB,EAAE,UACxB,WAAmB,EACnB,QAAgB,EAChB,YAAoB;oBAEpB,IAAM,GAAG,GAAG,GAAG,CAAC,2BAA2B,CACzC,cAAc,EACd,gCAAwB,EACxB,WAAW,EACX,QAAQ,EACR,YAAY,CACb,CAAC;oBAEF,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACjC,CAAC;gBACD,kBAAkB,EAAE,UAAC,IAAY,EAAE,KAAa,EAAE,KAAa;oBAC7D,OAAO,GAAG,CAAC,mBAAmB,CAC5B,cAAc,EACd,iCAAyB,EACzB,IAAI,EACJ,KAAK,EACL,KAAK,CACN,CAAC;gBACJ,CAAC;gBACD,gBAAgB,EAAE,UAAC,IAAY,EAAE,WAAmB;oBAClD,OAAO,GAAG,CAAC,iBAAiB,CAC1B,cAAc,EACd,iCAAyB,EACzB,WAAW,EACX,IAAI,CACL,CAAC;gBACJ,CAAC;gBAUD,yBAAyB,EAAE,UACzB,WAAmB,EACnB,QAAgB,EAChB,YAAoB;oBAEpB,IAAM,GAAG,GAAG,GAAG,CAAC,2BAA2B,CACzC,cAAc,EACd,iCAAyB,EACzB,WAAW,EACX,QAAQ,EACR,YAAY,CACb,CAAC;oBAEF,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACjC,CAAC;gBACD,UAAU,EAAE,UAAC,MAAc;oBACzB,OAAO,GAAG,CAAC,uBAAuB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;gBAC7D,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAzNW,QAAA,gBAAgB,oBAyN3B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  export declare type MatchingResult = MatchingResultSuccess | MatchingResultRequestMismatch | MatchingResultRequestNotFound | MatchingResultMissingRequest;
2
3
  export declare type MatchingResultSuccess = {
3
4
  type: 'request-match';
@@ -90,9 +91,11 @@ export declare type ConsumerInteraction = {
90
91
  withStatus: (status: number) => boolean;
91
92
  withRequestHeader: (name: string, index: number, value: string) => boolean;
92
93
  withRequestBody: (body: string, contentType: string) => boolean;
94
+ withRequestBinaryBody: (body: Buffer, contentType: string) => boolean;
93
95
  withRequestMultipartBody: (contentType: string, filename: string, mimePartName: string) => boolean;
94
96
  withResponseHeader: (name: string, index: number, value: string) => boolean;
95
97
  withResponseBody: (body: string, contentType: string) => boolean;
98
+ withResponseBinaryBody: (body: Buffer, contentType: string) => boolean;
96
99
  withResponseMultipartBody: (contentType: string, filename: string, mimePartName: string) => boolean;
97
100
  };
98
101
  export declare type ConsumerPact = {
@@ -1,6 +1,6 @@
1
- import { FfiBinding } from './internals/types';
2
1
  import { LogLevel } from '../logger/types';
3
- import { FfiDeclarations } from './declarations';
4
- declare let ffi: Omit<FfiBinding<FfiDeclarations>, 'pactffi_init'>;
5
- export declare const getFfiLib: (logLevel?: LogLevel) => typeof ffi;
2
+ import { Ffi } from './types';
3
+ declare const ffiLib: Ffi;
4
+ export declare const PACT_FFI_VERSION = "0.1.6";
5
+ export declare const getFfiLib: (logLevel?: LogLevel) => typeof ffiLib;
6
6
  export {};
package/src/ffi/index.js CHANGED
@@ -1,20 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFfiLib = void 0;
4
- var internals_1 = require("./internals");
3
+ exports.getFfiLib = exports.PACT_FFI_VERSION = void 0;
5
4
  var logger_1 = require("../logger");
6
- var declarations_1 = require("./declarations");
7
- var LOG_ENV_VAR_NAME = 'PACT_LOG_LEVEL';
8
- var PACT_FFI_VERSION = '0.1.3';
5
+ var bindings = require("bindings");
6
+ var ffiLib = bindings('pact.node');
7
+ exports.PACT_FFI_VERSION = '0.1.6';
9
8
  var ffi;
10
9
  var ffiLogLevel;
11
10
  var initialiseFfi = function (logLevel) {
12
11
  logger_1.default.debug("Initalising native core at log level '" + logLevel + "'");
13
- process.env[LOG_ENV_VAR_NAME] = logLevel.toUpperCase();
14
12
  ffiLogLevel = logLevel;
15
- var lib = internals_1.createFfi(internals_1.libName('pact_ffi', "v" + PACT_FFI_VERSION), declarations_1.declarations);
16
- lib.pactffi_init(LOG_ENV_VAR_NAME);
17
- return lib;
13
+ ffiLib.pactffiInitWithLogLevel(logLevel);
14
+ return ffiLib;
18
15
  };
19
16
  var getFfiLib = function (logLevel) {
20
17
  if (logLevel === void 0) { logLevel = logger_1.DEFAULT_LOG_LEVEL; }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,yCAAiD;AAGjD,oCAAsD;AAEtD,+CAA+D;AAE/D,IAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAE1C,IAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,IAAI,GAAsD,CAAC;AAC3D,IAAI,WAAqB,CAAC;AAE1B,IAAM,aAAa,GAAG,UAAC,QAAkB;IACvC,gBAAM,CAAC,KAAK,CAAC,2CAAyC,QAAQ,MAAG,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACvD,WAAW,GAAG,QAAQ,CAAC;IACvB,IAAM,GAAG,GAAG,qBAAS,CACnB,mBAAO,CAAC,UAAU,EAAE,MAAI,gBAAkB,CAAC,EAC3C,2BAAY,CACb,CAAC;IACF,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEK,IAAM,SAAS,GAAG,UACvB,QAAsC;IAAtC,yBAAA,EAAA,WAAqB,0BAAiB;IAEtC,IAAI,CAAC,GAAG,EAAE;QACR,gBAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpD,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC/B;SAAM;QACL,gBAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACvE,IAAI,QAAQ,KAAK,WAAW,EAAE;YAC5B,gBAAM,CAAC,IAAI,CACT,qEAAmE,WAAW,MAAG,CAClF,CAAC;YACF,gBAAM,CAAC,IAAI,CAAC,kCAAgC,QAAQ,sBAAmB,CAAC,CAAC;SAC1E;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAhBW,QAAA,SAAS,aAgBpB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,oCAAsD;AAGtD,mCAAsC;AAEtC,IAAM,MAAM,GAAQ,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE7B,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAGxC,IAAI,GAAkB,CAAC;AACvB,IAAI,WAAqB,CAAC;AAI1B,IAAM,aAAa,GAAG,UAAC,QAAkB;IACvC,gBAAM,CAAC,KAAK,CAAC,2CAAyC,QAAQ,MAAG,CAAC,CAAC;IACnE,WAAW,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEK,IAAM,SAAS,GAAG,UACvB,QAAsC;IAAtC,yBAAA,EAAA,WAAqB,0BAAiB;IAGtC,IAAI,CAAC,GAAG,EAAE;QACR,gBAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpD,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC/B;SAAM;QACL,gBAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACvE,IAAI,QAAQ,KAAK,WAAW,EAAE;YAC5B,gBAAM,CAAC,IAAI,CACT,qEAAmE,WAAW,MAAG,CAClF,CAAC;YACF,gBAAM,CAAC,IAAI,CAAC,kCAAgC,QAAQ,sBAAmB,CAAC,CAAC;SAC1E;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAjBW,QAAA,SAAS,aAiBpB"}
@@ -1,4 +1,2 @@
1
1
  /// <reference types="node" />
2
- import { FfiBinding } from './types';
3
- export declare const createFfi: <T>(filename: string, description: T) => FfiBinding<T>;
4
2
  export declare const libName: (library: string, version: string, processArch?: string, processPlatform?: NodeJS.Platform) => string;