@bananapus/nana-sdk-core 2.27.0 → 2.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/cjs/review/decode.d.ts.map +1 -1
  2. package/dist/cjs/review/decode.js +43 -2
  3. package/dist/cjs/review/decode.js.map +1 -1
  4. package/dist/cjs/review/writeRecovery.d.ts +15 -1
  5. package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
  6. package/dist/cjs/review/writeRecovery.js +81 -37
  7. package/dist/cjs/review/writeRecovery.js.map +1 -1
  8. package/dist/cjs/v6/defifa.d.ts +154 -0
  9. package/dist/cjs/v6/defifa.d.ts.map +1 -0
  10. package/dist/cjs/v6/defifa.js +684 -0
  11. package/dist/cjs/v6/defifa.js.map +1 -0
  12. package/dist/cjs/v6/defifaDeployments.d.ts +13 -0
  13. package/dist/cjs/v6/defifaDeployments.d.ts.map +1 -0
  14. package/dist/cjs/v6/defifaDeployments.js +25 -0
  15. package/dist/cjs/v6/defifaDeployments.js.map +1 -0
  16. package/dist/cjs/v6/defifaHoldings.d.ts +50 -0
  17. package/dist/cjs/v6/defifaHoldings.d.ts.map +1 -0
  18. package/dist/cjs/v6/defifaHoldings.js +181 -0
  19. package/dist/cjs/v6/defifaHoldings.js.map +1 -0
  20. package/dist/cjs/v6/index.d.ts +3 -0
  21. package/dist/cjs/v6/index.d.ts.map +1 -1
  22. package/dist/cjs/v6/index.js +5 -0
  23. package/dist/cjs/v6/index.js.map +1 -1
  24. package/dist/cjs/v6/nft.d.ts +7 -1
  25. package/dist/cjs/v6/nft.d.ts.map +1 -1
  26. package/dist/cjs/v6/nft.js +7 -2
  27. package/dist/cjs/v6/nft.js.map +1 -1
  28. package/dist/cjs/v6/nftInventory.d.ts +72 -0
  29. package/dist/cjs/v6/nftInventory.d.ts.map +1 -0
  30. package/dist/cjs/v6/nftInventory.js +211 -0
  31. package/dist/cjs/v6/nftInventory.js.map +1 -0
  32. package/dist/esm/review/decode.d.ts.map +1 -1
  33. package/dist/esm/review/decode.js +43 -2
  34. package/dist/esm/review/decode.js.map +1 -1
  35. package/dist/esm/review/writeRecovery.d.ts +15 -1
  36. package/dist/esm/review/writeRecovery.d.ts.map +1 -1
  37. package/dist/esm/review/writeRecovery.js +80 -37
  38. package/dist/esm/review/writeRecovery.js.map +1 -1
  39. package/dist/esm/v6/defifa.d.ts +154 -0
  40. package/dist/esm/v6/defifa.d.ts.map +1 -0
  41. package/dist/esm/v6/defifa.js +671 -0
  42. package/dist/esm/v6/defifa.js.map +1 -0
  43. package/dist/esm/v6/defifaDeployments.d.ts +13 -0
  44. package/dist/esm/v6/defifaDeployments.d.ts.map +1 -0
  45. package/dist/esm/v6/defifaDeployments.js +22 -0
  46. package/dist/esm/v6/defifaDeployments.js.map +1 -0
  47. package/dist/esm/v6/defifaHoldings.d.ts +50 -0
  48. package/dist/esm/v6/defifaHoldings.d.ts.map +1 -0
  49. package/dist/esm/v6/defifaHoldings.js +177 -0
  50. package/dist/esm/v6/defifaHoldings.js.map +1 -0
  51. package/dist/esm/v6/index.d.ts +3 -0
  52. package/dist/esm/v6/index.d.ts.map +1 -1
  53. package/dist/esm/v6/index.js +3 -0
  54. package/dist/esm/v6/index.js.map +1 -1
  55. package/dist/esm/v6/nft.d.ts +7 -1
  56. package/dist/esm/v6/nft.d.ts.map +1 -1
  57. package/dist/esm/v6/nft.js +7 -2
  58. package/dist/esm/v6/nft.js.map +1 -1
  59. package/dist/esm/v6/nftInventory.d.ts +72 -0
  60. package/dist/esm/v6/nftInventory.d.ts.map +1 -0
  61. package/dist/esm/v6/nftInventory.js +208 -0
  62. package/dist/esm/v6/nftInventory.js.map +1 -0
  63. package/package.json +1 -1
@@ -0,0 +1,208 @@
1
+ import { parseAbi, zeroAddress } from "viem";
2
+ import { jb721TiersHookStoreAbi, jbProjectsAbi, } from "../generated/juicebox.js";
3
+ import { v6Address } from "./types.js";
4
+ import { defifaDeployments, defifaStore } from "./defifaDeployments.js";
5
+ import { getCurrentRuleset, getUpcomingRuleset, } from "./rulesets.js";
6
+ import { getProject721Shop, } from "./nft.js";
7
+ // Native read interface and deployment addresses: @ballkidz/defifa@1.0.2,
8
+ // DefifaHook/DefifaDeployer; source revision d3c46dd4fe9a093cc46ed5eb2106395d2a19b860.
9
+ // Defifa's pay metadata is (address,uint16[]), NOT JB721's (bool,uint16[]).
10
+ const defifaReadAbi = parseAbi([
11
+ "function store() view returns (address)",
12
+ "function CODE_ORIGIN() view returns (address)",
13
+ "function projectId() view returns (uint256)",
14
+ "function gamePhaseReporter() view returns (address)",
15
+ "function gamePotReporter() view returns (address)",
16
+ "function pricingCurrency() view returns (uint256)",
17
+ "function contractURI() view returns (string)",
18
+ "function tierNameOf(uint256) view returns (string)",
19
+ "function currentSupplyOfTier(uint256) view returns (uint256)",
20
+ "function currentGamePotOf(uint256,bool) view returns (uint256,address,uint256)",
21
+ "function currentGamePhaseOf(uint256) view returns (uint8)",
22
+ ]);
23
+ function sameAddress(left, right) {
24
+ return left.toLowerCase() === right.toLowerCase();
25
+ }
26
+ /**
27
+ * Discover displayable NFT tiers at one block, including Defifa games before
28
+ * entry starts and after payments stop. Unknown hooks return null; RPC failures
29
+ * throw. Defifa recognition requires the pinned deployer, exact clone runtime,
30
+ * project binding, native implementation/store and both game reporters.
31
+ *
32
+ * This is inventory discovery, not action authorization: JB721 capabilities
33
+ * identify compatible calldata, not account permissions or current pay status.
34
+ * Defifa entries, refunds and settlement require its native lifecycle adapter.
35
+ */
36
+ export async function getProjectNftInventory(client, args) {
37
+ const { chainId, projectId, isRevnet = false, tierLimit = 100, startingId = 0n, categories = [], includeResolvedUri = false, } = args;
38
+ if (!Number.isInteger(tierLimit) || tierLimit < 1 || tierLimit > 128) {
39
+ throw new Error("NFT inventory tierLimit must be an integer between 1 and 128.");
40
+ }
41
+ if (startingId < 0n)
42
+ throw new Error("NFT inventory startingId cannot be negative.");
43
+ if (categories.some((category, index) => category < 0n ||
44
+ category > 0xffffffn ||
45
+ (index > 0 && category <= categories[index - 1]))) {
46
+ throw new Error("NFT inventory categories must be ascending, unique uint24 values for stable pagination.");
47
+ }
48
+ if ((await client.getChainId()) !== chainId)
49
+ throw new Error("NFT inventory client is connected to the wrong chain.");
50
+ if (args.blockNumber !== undefined && args.blockNumber < 0n) {
51
+ throw new Error("NFT inventory blockNumber cannot be negative.");
52
+ }
53
+ const blockNumber = args.blockNumber ?? (await client.getBlockNumber());
54
+ const snapshot = {
55
+ ...client,
56
+ readContract: (parameters) => client.readContract({ ...parameters, blockNumber }),
57
+ };
58
+ const ruleset = isRevnet
59
+ ? undefined
60
+ : await getCurrentRuleset(snapshot, args);
61
+ const hook = ruleset?.metadata.dataHook;
62
+ const deployment = defifaDeployments[chainId];
63
+ let owner;
64
+ // Only project ownership by the native deployer admits a Defifa candidate.
65
+ // This does not probe arbitrary custom hooks as if they were Defifa.
66
+ if (!isRevnet && deployment) {
67
+ owner = await snapshot.readContract({
68
+ address: v6Address("JBProjects", chainId),
69
+ abi: jbProjectsAbi,
70
+ functionName: "ownerOf",
71
+ args: [projectId],
72
+ });
73
+ }
74
+ if (!deployment || !owner || !sameAddress(owner, deployment.deployer)) {
75
+ const shop = await getProject721Shop(snapshot, {
76
+ ...args,
77
+ isRevnet,
78
+ ruleset,
79
+ includeInactiveHook: true,
80
+ tierLimit: tierLimit + 1,
81
+ });
82
+ if (!shop)
83
+ return null;
84
+ return {
85
+ ...shop,
86
+ protocol: "jb721",
87
+ blockNumber,
88
+ tiers: shop.tiers.slice(0, tierLimit),
89
+ nextStartingId: shop.tiers[tierLimit]
90
+ ? BigInt(shop.tiers[tierLimit].id)
91
+ : null,
92
+ capabilities: {
93
+ genericPay: true,
94
+ genericCashOut: true,
95
+ manageTiers: true,
96
+ },
97
+ };
98
+ }
99
+ // Countdown has no active ruleset yet; its first configured hook is queued.
100
+ const hookRuleset = !hook || hook === zeroAddress
101
+ ? await getUpcomingRuleset(snapshot, args)
102
+ : ruleset;
103
+ const defifaHook = hookRuleset.metadata.dataHook;
104
+ if (!defifaHook || defifaHook === zeroAddress)
105
+ return null;
106
+ const cloneCode = await client.getBytecode({
107
+ address: defifaHook,
108
+ blockNumber,
109
+ });
110
+ const expectedCode = `0x363d3d373d3d3d363d73${deployment.implementation.slice(2)}5af43d82803e903d91602b57fd5bf3`;
111
+ if (cloneCode?.toLowerCase() !== expectedCode)
112
+ throw new Error("Defifa hook clone does not match its pinned implementation.");
113
+ const read = (functionName) => snapshot.readContract({
114
+ address: defifaHook,
115
+ abi: defifaReadAbi,
116
+ functionName,
117
+ });
118
+ const [store, implementation, hookProjectId, phaseReporter, potReporter, currency, contractUri,] = await Promise.all([
119
+ read("store"),
120
+ read("CODE_ORIGIN"),
121
+ read("projectId"),
122
+ read("gamePhaseReporter"),
123
+ read("gamePotReporter"),
124
+ read("pricingCurrency"),
125
+ read("contractURI"),
126
+ ]);
127
+ if (!sameAddress(store, defifaStore) ||
128
+ !sameAddress(implementation, deployment.implementation) ||
129
+ hookProjectId !== projectId ||
130
+ !sameAddress(phaseReporter, deployment.deployer) ||
131
+ !sameAddress(potReporter, deployment.deployer)) {
132
+ throw new Error("Defifa hook provenance does not match the project deployment.");
133
+ }
134
+ const [pot, phase, raw] = await Promise.all([
135
+ snapshot.readContract({
136
+ address: deployment.deployer,
137
+ abi: defifaReadAbi,
138
+ functionName: "currentGamePotOf",
139
+ args: [projectId, false],
140
+ }),
141
+ snapshot.readContract({
142
+ address: deployment.deployer,
143
+ abi: defifaReadAbi,
144
+ functionName: "currentGamePhaseOf",
145
+ args: [projectId],
146
+ }),
147
+ snapshot.readContract({
148
+ address: store,
149
+ abi: jb721TiersHookStoreAbi,
150
+ functionName: "tiersOf",
151
+ args: [
152
+ defifaHook,
153
+ categories,
154
+ includeResolvedUri,
155
+ startingId,
156
+ BigInt(tierLimit + 1),
157
+ ],
158
+ }),
159
+ ]);
160
+ if (typeof currency !== "bigint" ||
161
+ currency > 0xffffffffn ||
162
+ pot[2] > 255n ||
163
+ pot[1] === zeroAddress ||
164
+ phase > 5) {
165
+ throw new Error("Defifa pricing or phase context is invalid.");
166
+ }
167
+ const visible = raw.filter((tier) => tier.initialSupply > 0);
168
+ const tiers = await Promise.all(visible.slice(0, tierLimit).map(async (tier) => {
169
+ const [name, currentSupply] = await Promise.all([
170
+ snapshot.readContract({
171
+ address: defifaHook,
172
+ abi: defifaReadAbi,
173
+ functionName: "tierNameOf",
174
+ args: [BigInt(tier.id)],
175
+ }),
176
+ snapshot.readContract({
177
+ address: defifaHook,
178
+ abi: defifaReadAbi,
179
+ functionName: "currentSupplyOfTier",
180
+ args: [BigInt(tier.id)],
181
+ }),
182
+ ]);
183
+ return { ...tier, name, currentSupply };
184
+ }));
185
+ return {
186
+ protocol: "defifa",
187
+ hook: defifaHook,
188
+ store: store,
189
+ implementation: implementation,
190
+ contractUri: contractUri,
191
+ pricing: {
192
+ currency: Number(currency),
193
+ decimals: Number(pot[2]),
194
+ token: pot[1],
195
+ },
196
+ phase,
197
+ tiers,
198
+ ruleset: hookRuleset,
199
+ blockNumber,
200
+ capabilities: {
201
+ genericPay: false,
202
+ genericCashOut: false,
203
+ manageTiers: false,
204
+ },
205
+ nextStartingId: visible[tierLimit] ? BigInt(visible[tierLimit].id) : null,
206
+ };
207
+ }
208
+ //# sourceMappingURL=nftInventory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nftInventory.js","sourceRoot":"","sources":["../../../src/v6/nftInventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAC9E,OAAO,EACL,sBAAsB,EACtB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GAEnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,GAGlB,MAAM,UAAU,CAAC;AAElB,0EAA0E;AAC1E,uFAAuF;AACvF,4EAA4E;AAC5E,MAAM,aAAa,GAAG,QAAQ,CAAC;IAC7B,yCAAyC;IACzC,+CAA+C;IAC/C,6CAA6C;IAC7C,qDAAqD;IACrD,mDAAmD;IACnD,mDAAmD;IACnD,8CAA8C;IAC9C,oDAAoD;IACpD,8DAA8D;IAC9D,gFAAgF;IAChF,2DAA2D;CAC5D,CAAC,CAAC;AA4DH,SAAS,WAAW,CAAC,IAAa,EAAE,KAAc;IAChD,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;AACpD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAoB,EACpB,IAA6B;IAE7B,MAAM,EACJ,OAAO,EACP,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,GAAG,EACf,UAAU,GAAG,EAAE,EACf,UAAU,GAAG,EAAE,EACf,kBAAkB,GAAG,KAAK,GAC3B,GAAG,IAAI,CAAC;IACT,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,GAAG,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,IACE,UAAU,CAAC,IAAI,CACb,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAClB,QAAQ,GAAG,EAAE;QACb,QAAQ,GAAG,SAAS;QACpB,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC,CACpD,EACD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,OAAO;QACzC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG;QACf,GAAG,MAAM;QACT,YAAY,EAAE,CAAC,UAAuD,EAAE,EAAE,CACxE,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,UAAU,EAAE,WAAW,EAAE,CAAC;KACtC,CAAC;IAClB,MAAM,OAAO,GAAG,QAAQ;QACtB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,OAAO,EAAE,QAAQ,CAAC,QAA+B,CAAC;IAC/D,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,KAA0B,CAAC;IAC/B,2EAA2E;IAC3E,qEAAqE;IACrE,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;QAC5B,KAAK,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;YAClC,OAAO,EAAE,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC;YACzC,GAAG,EAAE,aAAa;YAClB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,SAAS,CAAC;SAClB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE;YAC7C,GAAG,IAAI;YACP,QAAQ;YACR,OAAO;YACP,mBAAmB,EAAE,IAAI;YACzB,SAAS,EAAE,SAAS,GAAG,CAAC;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO;YACL,GAAG,IAAI;YACP,QAAQ,EAAE,OAAO;YACjB,WAAW;YACX,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;YACrC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACnC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAE,CAAC,EAAE,CAAC;gBACnC,CAAC,CAAC,IAAI;YACR,YAAY,EAAE;gBACZ,UAAU,EAAE,IAAI;gBAChB,cAAc,EAAE,IAAI;gBACpB,WAAW,EAAE,IAAI;aAClB;SACF,CAAC;IACJ,CAAC;IACD,4EAA4E;IAC5E,MAAM,WAAW,GACf,CAAC,IAAI,IAAI,IAAI,KAAK,WAAW;QAC3B,CAAC,CAAC,MAAM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC;QAC1C,CAAC,CAAC,OAAQ,CAAC;IACf,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAmB,CAAC;IAC5D,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;QACzC,OAAO,EAAE,UAAU;QACnB,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,yBAAyB,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,gCAAgC,CAAC;IACjH,IAAI,SAAS,EAAE,WAAW,EAAE,KAAK,YAAY;QAC3C,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IACJ,MAAM,IAAI,GAAG,CACX,YAOiB,EACjB,EAAE,CACF,QAAQ,CAAC,YAAY,CAAC;QACpB,OAAO,EAAE,UAAU;QACnB,GAAG,EAAE,aAAa;QAClB,YAAY;KACb,CAAC,CAAC;IACL,MAAM,CACJ,KAAK,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,EACX,QAAQ,EACR,WAAW,EACZ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC;QACb,IAAI,CAAC,aAAa,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC;QACjB,IAAI,CAAC,mBAAmB,CAAC;QACzB,IAAI,CAAC,iBAAiB,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC;KACpB,CAAC,CAAC;IACH,IACE,CAAC,WAAW,CAAC,KAAgB,EAAE,WAAW,CAAC;QAC3C,CAAC,WAAW,CAAC,cAAyB,EAAE,UAAU,CAAC,cAAc,CAAC;QAClE,aAAa,KAAK,SAAS;QAC3B,CAAC,WAAW,CAAC,aAAwB,EAAE,UAAU,CAAC,QAAQ,CAAC;QAC3D,CAAC,WAAW,CAAC,WAAsB,EAAE,UAAU,CAAC,QAAQ,CAAC,EACzD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1C,QAAQ,CAAC,YAAY,CAAC;YACpB,OAAO,EAAE,UAAU,CAAC,QAAQ;YAC5B,GAAG,EAAE,aAAa;YAClB,YAAY,EAAE,kBAAkB;YAChC,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;SACzB,CAAC;QACF,QAAQ,CAAC,YAAY,CAAC;YACpB,OAAO,EAAE,UAAU,CAAC,QAAQ;YAC5B,GAAG,EAAE,aAAa;YAClB,YAAY,EAAE,oBAAoB;YAClC,IAAI,EAAE,CAAC,SAAS,CAAC;SAClB,CAAC;QACF,QAAQ,CAAC,YAAY,CAAC;YACpB,OAAO,EAAE,KAAgB;YACzB,GAAG,EAAE,sBAAsB;YAC3B,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE;gBACJ,UAAU;gBACV,UAAU;gBACV,kBAAkB;gBAClB,UAAU;gBACV,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;aACtB;SACF,CAAC;KACH,CAAC,CAAC;IACH,IACE,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,GAAG,WAAW;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;QACb,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW;QACtB,KAAK,GAAG,CAAC,EACT,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,QAAQ,CAAC,YAAY,CAAC;gBACpB,OAAO,EAAE,UAAU;gBACnB,GAAG,EAAE,aAAa;gBAClB,YAAY,EAAE,YAAY;gBAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACxB,CAAC;YACF,QAAQ,CAAC,YAAY,CAAC;gBACpB,OAAO,EAAE,UAAU;gBACnB,GAAG,EAAE,aAAa;gBAClB,YAAY,EAAE,qBAAqB;gBACnC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACxB,CAAC;SACH,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IAC1C,CAAC,CAAC,CACH,CAAC;IACF,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,KAAgB;QACvB,cAAc,EAAE,cAAyB;QACzC,WAAW,EAAE,WAAqB;QAClC,OAAO,EAAE;YACP,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;YAC1B,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;SACd;QACD,KAAK;QACL,KAAK;QACL,OAAO,EAAE,WAAW;QACpB,WAAW;QACX,YAAY,EAAE;YACZ,UAAU,EAAE,KAAK;YACjB,cAAc,EAAE,KAAK;YACrB,WAAW,EAAE,KAAK;SACnB;QACD,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;KAC3E,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bananapus/nana-sdk-core",
3
- "version": "2.27.0",
3
+ "version": "2.29.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "repository": {