@antseed/node 0.2.151 → 0.2.153

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 (86) hide show
  1. package/dist/buyer-identity-context.d.ts +2 -0
  2. package/dist/buyer-identity-context.d.ts.map +1 -1
  3. package/dist/buyer-identity-context.js +1 -0
  4. package/dist/buyer-identity-context.js.map +1 -1
  5. package/dist/discovery/announcer.d.ts +2 -0
  6. package/dist/discovery/announcer.d.ts.map +1 -1
  7. package/dist/discovery/announcer.js +11 -9
  8. package/dist/discovery/announcer.js.map +1 -1
  9. package/dist/index.d.ts +10 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +5 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/metering/index.d.ts +1 -1
  14. package/dist/metering/index.d.ts.map +1 -1
  15. package/dist/metering/index.js.map +1 -1
  16. package/dist/metering/storage.d.ts +66 -6
  17. package/dist/metering/storage.d.ts.map +1 -1
  18. package/dist/metering/storage.js +112 -12
  19. package/dist/metering/storage.js.map +1 -1
  20. package/dist/node.d.ts +30 -0
  21. package/dist/node.d.ts.map +1 -1
  22. package/dist/node.js +93 -2
  23. package/dist/node.js.map +1 -1
  24. package/dist/p2p/identity.d.ts +7 -0
  25. package/dist/p2p/identity.d.ts.map +1 -1
  26. package/dist/p2p/identity.js +2 -2
  27. package/dist/p2p/identity.js.map +1 -1
  28. package/dist/payments/evm/ants-token-client.d.ts.map +1 -1
  29. package/dist/payments/evm/ants-token-client.js +3 -9
  30. package/dist/payments/evm/ants-token-client.js.map +1 -1
  31. package/dist/payments/evm/emissions-client.d.ts.map +1 -1
  32. package/dist/payments/evm/emissions-client.js +1 -3
  33. package/dist/payments/evm/emissions-client.js.map +1 -1
  34. package/dist/payments/evm/identity-client.d.ts.map +1 -1
  35. package/dist/payments/evm/identity-client.js +1 -3
  36. package/dist/payments/evm/identity-client.js.map +1 -1
  37. package/dist/payments/evm/seller-pools-client.d.ts +9 -0
  38. package/dist/payments/evm/seller-pools-client.d.ts.map +1 -1
  39. package/dist/payments/evm/seller-pools-client.js +23 -0
  40. package/dist/payments/evm/seller-pools-client.js.map +1 -1
  41. package/dist/payments/free-tier-delegation.d.ts +65 -0
  42. package/dist/payments/free-tier-delegation.d.ts.map +1 -0
  43. package/dist/payments/free-tier-delegation.js +145 -0
  44. package/dist/payments/free-tier-delegation.js.map +1 -0
  45. package/dist/payments/free-tier-program.d.ts +97 -0
  46. package/dist/payments/free-tier-program.d.ts.map +1 -0
  47. package/dist/payments/free-tier-program.js +267 -0
  48. package/dist/payments/free-tier-program.js.map +1 -0
  49. package/dist/payments/free-tier-stake-resolver.d.ts +79 -0
  50. package/dist/payments/free-tier-stake-resolver.d.ts.map +1 -0
  51. package/dist/payments/free-tier-stake-resolver.js +152 -0
  52. package/dist/payments/free-tier-stake-resolver.js.map +1 -0
  53. package/dist/payments/free-tier-stake.d.ts +101 -0
  54. package/dist/payments/free-tier-stake.d.ts.map +1 -0
  55. package/dist/payments/free-tier-stake.js +116 -0
  56. package/dist/payments/free-tier-stake.js.map +1 -0
  57. package/dist/payments/index.d.ts +7 -1
  58. package/dist/payments/index.d.ts.map +1 -1
  59. package/dist/payments/index.js +3 -0
  60. package/dist/payments/index.js.map +1 -1
  61. package/dist/payments/seller-free-tier-limiter.d.ts +124 -6
  62. package/dist/payments/seller-free-tier-limiter.d.ts.map +1 -1
  63. package/dist/payments/seller-free-tier-limiter.js +342 -32
  64. package/dist/payments/seller-free-tier-limiter.js.map +1 -1
  65. package/dist/payments/seller-free-usage-manager.d.ts.map +1 -1
  66. package/dist/payments/seller-free-usage-manager.js +5 -1
  67. package/dist/payments/seller-free-usage-manager.js.map +1 -1
  68. package/dist/seller-request-handler.d.ts.map +1 -1
  69. package/dist/seller-request-handler.js +105 -19
  70. package/dist/seller-request-handler.js.map +1 -1
  71. package/dist/storage/migrations/metering/004_add_free_tier_staked_usage.d.ts +3 -0
  72. package/dist/storage/migrations/metering/004_add_free_tier_staked_usage.d.ts.map +1 -0
  73. package/dist/storage/migrations/metering/004_add_free_tier_staked_usage.js +21 -0
  74. package/dist/storage/migrations/metering/004_add_free_tier_staked_usage.js.map +1 -0
  75. package/dist/storage/migrations/metering/005_add_free_tier_scope.d.ts +8 -0
  76. package/dist/storage/migrations/metering/005_add_free_tier_scope.d.ts.map +1 -0
  77. package/dist/storage/migrations/metering/005_add_free_tier_scope.js +23 -0
  78. package/dist/storage/migrations/metering/005_add_free_tier_scope.js.map +1 -0
  79. package/dist/storage/migrations/metering/index.d.ts.map +1 -1
  80. package/dist/storage/migrations/metering/index.js +3 -1
  81. package/dist/storage/migrations/metering/index.js.map +1 -1
  82. package/dist/utils/file-lock.d.ts +12 -0
  83. package/dist/utils/file-lock.d.ts.map +1 -0
  84. package/dist/utils/file-lock.js +58 -0
  85. package/dist/utils/file-lock.js.map +1 -0
  86. package/package.json +11 -3
@@ -0,0 +1,58 @@
1
+ import Database from 'better-sqlite3';
2
+ const RETRY_MS = 25;
3
+ const queues = new Map();
4
+ /**
5
+ * Runs `task` while holding `<path>.lock`, so read-modify-write edits of one
6
+ * file from different processes (CLI, gateway, payments page) never drop
7
+ * each other's changes. Callers in the same process queue up behind each
8
+ * other first, and only the head of the queue competes for the lock file.
9
+ */
10
+ export async function withFileLock(path, task, options = {}) {
11
+ const previous = queues.get(path) ?? Promise.resolve();
12
+ const run = previous.then(() => holdingLockFile(path, task, options));
13
+ const settled = run.then(() => undefined, () => undefined);
14
+ queues.set(path, settled);
15
+ try {
16
+ return await run;
17
+ }
18
+ finally {
19
+ if (queues.get(path) === settled)
20
+ queues.delete(path);
21
+ }
22
+ }
23
+ /**
24
+ * The lock is an exclusive SQLite transaction on `<path>.lock`, which rests on
25
+ * the operating system's own file locks: only one process can hold it, and it
26
+ * is released the moment its holder exits or crashes. Nothing ever has to
27
+ * judge a lock stale or delete one, so a live holder can never lose it.
28
+ */
29
+ async function holdingLockFile(path, task, options) {
30
+ const lockPath = `${path}.lock`;
31
+ const deadline = Date.now() + (options.timeoutMs ?? 10_000);
32
+ const db = new Database(lockPath, { timeout: 0 });
33
+ try {
34
+ for (;;) {
35
+ try {
36
+ db.exec('BEGIN EXCLUSIVE');
37
+ break;
38
+ }
39
+ catch (err) {
40
+ if (err.code !== 'SQLITE_BUSY')
41
+ throw err;
42
+ }
43
+ if (Date.now() >= deadline)
44
+ throw new Error(`Timed out waiting for ${lockPath}; another Antseed process is editing ${path}`);
45
+ await new Promise((resolve) => setTimeout(resolve, RETRY_MS));
46
+ }
47
+ try {
48
+ return await task();
49
+ }
50
+ finally {
51
+ db.exec('ROLLBACK');
52
+ }
53
+ }
54
+ finally {
55
+ db.close();
56
+ }
57
+ }
58
+ //# sourceMappingURL=file-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../../src/utils/file-lock.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAOtC,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,IAAY,EAAE,IAAsB,EAAE,UAA2B,EAAE;IACvG,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAAI,IAAY,EAAE,IAAsB,EAAE,OAAwB;IAC9F,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IAC5D,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,SAAS,CAAC;YACR,IAAI,CAAC;gBACH,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAK,GAAyB,CAAC,IAAI,KAAK,aAAa;oBAAE,MAAM,GAAG,CAAC;YACnE,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,wCAAwC,IAAI,EAAE,CAAC,CAAC;YAC7H,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antseed/node",
3
- "version": "0.2.151",
3
+ "version": "0.2.153",
4
4
  "description": "Antseed Network protocol SDK — P2P inference marketplace",
5
5
  "type": "module",
6
6
  "files": [
@@ -45,6 +45,14 @@
45
45
  "import": "./dist/discovery/verifier-capabilities.js",
46
46
  "types": "./dist/discovery/verifier-capabilities.d.ts"
47
47
  },
48
+ "./free-tier-program": {
49
+ "import": "./dist/payments/free-tier-program.js",
50
+ "types": "./dist/payments/free-tier-program.d.ts"
51
+ },
52
+ "./free-tier-stake": {
53
+ "import": "./dist/payments/free-tier-stake.js",
54
+ "types": "./dist/payments/free-tier-stake.d.ts"
55
+ },
48
56
  "./tee-status": {
49
57
  "import": "./dist/verification/tee-status.js",
50
58
  "types": "./dist/verification/tee-status.d.ts"
@@ -73,9 +81,9 @@
73
81
  "ethers": "~6.16.0",
74
82
  "node-datachannel": "^0.7.0",
75
83
  "tokenx": "^1.3.0",
84
+ "@antseed/buyer-core": "0.1.28",
76
85
  "@antseed/api-adapter": "0.1.53",
77
- "@antseed/buyer-core": "0.1.26",
78
- "@antseed/protocol": "0.1.10"
86
+ "@antseed/protocol": "0.1.11"
79
87
  },
80
88
  "optionalDependencies": {
81
89
  "keytar": "^7.9.0"