@openzeppelin/wizard-stellar 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +1 -0
  2. package/dist/add-pausable.js +7 -7
  3. package/dist/add-pausable.js.map +1 -1
  4. package/dist/add-upgradeable.d.ts +4 -0
  5. package/dist/add-upgradeable.d.ts.map +1 -0
  6. package/dist/add-upgradeable.js +26 -0
  7. package/dist/add-upgradeable.js.map +1 -0
  8. package/dist/api.d.ts +3 -0
  9. package/dist/api.d.ts.map +1 -1
  10. package/dist/api.js +6 -1
  11. package/dist/api.js.map +1 -1
  12. package/dist/build-generic.d.ts +4 -0
  13. package/dist/build-generic.d.ts.map +1 -1
  14. package/dist/build-generic.js +5 -2
  15. package/dist/build-generic.js.map +1 -1
  16. package/dist/contract.d.ts +22 -11
  17. package/dist/contract.d.ts.map +1 -1
  18. package/dist/contract.js +58 -12
  19. package/dist/contract.js.map +1 -1
  20. package/dist/fungible.d.ts +1 -0
  21. package/dist/fungible.d.ts.map +1 -1
  22. package/dist/fungible.js +38 -32
  23. package/dist/fungible.js.map +1 -1
  24. package/dist/generate/fungible.d.ts.map +1 -1
  25. package/dist/generate/fungible.js +1 -0
  26. package/dist/generate/fungible.js.map +1 -1
  27. package/dist/generate/non-fungible.d.ts +3 -0
  28. package/dist/generate/non-fungible.d.ts.map +1 -0
  29. package/dist/generate/non-fungible.js +24 -0
  30. package/dist/generate/non-fungible.js.map +1 -0
  31. package/dist/generate/sources.d.ts.map +1 -1
  32. package/dist/generate/sources.js +6 -0
  33. package/dist/generate/sources.js.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +3 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/kind.js +2 -1
  39. package/dist/kind.js.map +1 -1
  40. package/dist/non-fungible.d.ts +17 -0
  41. package/dist/non-fungible.d.ts.map +1 -0
  42. package/dist/non-fungible.js +356 -0
  43. package/dist/non-fungible.js.map +1 -0
  44. package/dist/print.d.ts.map +1 -1
  45. package/dist/print.js +54 -17
  46. package/dist/print.js.map +1 -1
  47. package/dist/set-access-control.d.ts +2 -2
  48. package/dist/set-access-control.d.ts.map +1 -1
  49. package/dist/set-access-control.js +2 -7
  50. package/dist/set-access-control.js.map +1 -1
  51. package/dist/test.js +3 -0
  52. package/dist/test.js.map +1 -1
  53. package/dist/utils/version.d.ts +3 -3
  54. package/dist/utils/version.js +2 -2
  55. package/package.json +3 -4
  56. package/src/add-pausable.ts +7 -7
  57. package/src/add-upgradeable.ts +30 -0
  58. package/src/api.ts +8 -0
  59. package/src/build-generic.ts +9 -2
  60. package/src/contract.ts +73 -21
  61. package/src/fungible.ts +38 -30
  62. package/src/generate/fungible.ts +1 -0
  63. package/src/generate/non-fungible.ts +24 -0
  64. package/src/generate/sources.ts +7 -0
  65. package/src/index.ts +1 -0
  66. package/src/kind.ts +2 -1
  67. package/src/non-fungible.ts +410 -0
  68. package/src/print.ts +78 -28
  69. package/src/set-access-control.ts +8 -9
  70. package/src/test.ts +4 -0
  71. package/src/utils/version.ts +2 -2
package/dist/print.js CHANGED
@@ -12,10 +12,17 @@ function printContract(contract) {
12
12
  return (0, format_lines_1.formatLines)(...(0, format_lines_1.spaceBetween)([
13
13
  `// SPDX-License-Identifier: ${contract.license}`,
14
14
  `// Compatible with OpenZeppelin Stellar Soroban Contracts ${version_1.compatibleContractsSemver}`,
15
+ `#![no_std]`,
15
16
  ], (0, format_lines_1.spaceBetween)(printUseClauses(contract), printVariables(contract), printContractStruct(contract), printContractErrors(contract), printContractFunctions(contract), printImplementedTraits(contract))));
16
17
  }
17
18
  function printContractStruct(contract) {
18
- return ['#[contract]', `pub struct ${contract.name};`];
19
+ const lines = [];
20
+ if (contract.derives.length > 0) {
21
+ lines.push(`#[derive(${contract.derives.sort().join(', ')})]`);
22
+ }
23
+ lines.push('#[contract]');
24
+ lines.push(`pub struct ${contract.name};`);
25
+ return lines;
19
26
  }
20
27
  function printContractErrors(contract) {
21
28
  if (contract.errors.length === 0) {
@@ -131,7 +138,7 @@ function printImplementedTraits(contract) {
131
138
  if (a.tags.length !== b.tags.length) {
132
139
  return a.tags.length - b.tags.length;
133
140
  }
134
- return a.name.localeCompare(b.name);
141
+ return a.traitName.localeCompare(b.traitName);
135
142
  });
136
143
  // group by section
137
144
  const grouped = sortedTraits.reduce((result, current) => {
@@ -165,10 +172,24 @@ function printImplementedTraitsSection(section, impls) {
165
172
  function printImplementedTrait(trait) {
166
173
  const implLines = [];
167
174
  implLines.push(...trait.tags.map(t => `#[${t}]`));
168
- implLines.push(`impl ${trait.name} for ${trait.for} {`);
169
- const fns = trait.functions.map(fn => printFunction(fn));
170
- implLines.push((0, format_lines_1.spaceBetween)(...fns));
171
- implLines.push('}');
175
+ const head = `impl ${trait.traitName} for ${trait.structName}`;
176
+ const assocTypeLines = trait.assocType !== undefined && trait.assocType.trim().length > 0 ? [TAB + trait.assocType.trim(), ''] : [];
177
+ const functionLines = trait.functions.map(fn => printFunction(fn));
178
+ const hasBodyContent = assocTypeLines.length > 0 || functionLines.length > 0;
179
+ if (!hasBodyContent) {
180
+ // Empty impl
181
+ implLines.push(`${head} {}`);
182
+ }
183
+ else {
184
+ implLines.push(`${head} {`);
185
+ if (assocTypeLines.length > 0) {
186
+ implLines.push(...assocTypeLines);
187
+ }
188
+ if (functionLines.length > 0) {
189
+ implLines.push((0, format_lines_1.spaceBetween)(...functionLines));
190
+ }
191
+ implLines.push('}');
192
+ }
172
193
  return implLines;
173
194
  }
174
195
  function printFunction(fn) {
@@ -188,22 +209,34 @@ function printFunction(fn) {
188
209
  }
189
210
  }
190
211
  }
191
- return printFunction2(head, args, fn.tag, fn.returns, undefined, codeLines);
212
+ return printFunction2(fn.pub, head, args, fn.tag, fn.returns, undefined, codeLines);
192
213
  }
193
214
  function printContractFunctions(contract) {
194
- const implLines = [];
195
- implLines.push('#[contractimpl]');
196
- implLines.push(`impl ${contract.name} {`);
197
- implLines.push(printConstructor(contract));
198
- implLines.push('}');
199
- return implLines;
215
+ const constructorLines = printConstructor(contract);
216
+ const freeFunctionLines = contract.freeFunctions.map(fn => printFunction(fn));
217
+ if (constructorLines.length === 0 && freeFunctionLines.length === 0) {
218
+ return [];
219
+ }
220
+ const implBlock = ['#[contractimpl]', `impl ${contract.name} {`];
221
+ if (constructorLines.length > 0) {
222
+ implBlock.push(constructorLines);
223
+ }
224
+ if (constructorLines.length > 0 && freeFunctionLines.length > 0) {
225
+ // Add line break between constructor and first free function
226
+ implBlock.push('');
227
+ }
228
+ if (freeFunctionLines.length > 0) {
229
+ implBlock.push((0, format_lines_1.spaceBetween)(...freeFunctionLines));
230
+ }
231
+ implBlock.push('}');
232
+ return implBlock;
200
233
  }
201
234
  function printConstructor(contract) {
202
235
  if (contract.constructorCode.length > 0) {
203
- const head = 'pub fn __constructor';
236
+ const head = 'fn __constructor';
204
237
  const args = [(0, common_options_1.getSelfArg)(), ...contract.constructorArgs];
205
238
  const body = (0, format_lines_1.spaceBetween)(withSemicolons(contract.constructorCode));
206
- const constructor = printFunction2(head, args.map(a => printArgument(a)), undefined, undefined, undefined, body);
239
+ const constructor = printFunction2(true, head, args.map(a => printArgument(a)), undefined, undefined, undefined, body);
207
240
  return constructor;
208
241
  }
209
242
  else {
@@ -212,12 +245,16 @@ function printConstructor(contract) {
212
245
  }
213
246
  // generic for functions and constructors
214
247
  // kindedName = 'fn foo'
215
- function printFunction2(kindedName, args, tag, returns, returnLine, code) {
248
+ function printFunction2(pub, kindedName, args, tag, returns, returnLine, code) {
216
249
  const fn = [];
217
250
  if (tag !== undefined) {
218
251
  fn.push(`#[${tag}]`);
219
252
  }
220
- let accum = `${kindedName}(`;
253
+ let accum = '';
254
+ if (pub) {
255
+ accum += 'pub ';
256
+ }
257
+ accum += `${kindedName}(`;
221
258
  if (args.length > 0) {
222
259
  const formattedArgs = args.join(', ');
223
260
  if (formattedArgs.length > 80) {
package/dist/print.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"print.js","sourceRoot":"","sources":["../src/print.ts"],"names":[],"mappings":";;AAYA,sCAiBC;AA1BD,uDAAiE;AACjE,qDAA8C;AAC9C,6CAA4D;AAE5D,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAC7C,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AACtD,MAAM,0BAA0B,GAAG,EAAE,CAAC;AACtC,MAAM,GAAG,GAAG,MAAM,CAAC;AAEnB,SAAgB,aAAa,CAAC,QAAkB;IAC9C,OAAO,IAAA,0BAAW,EAChB,GAAG,IAAA,2BAAY,EACb;QACE,+BAA+B,QAAQ,CAAC,OAAO,EAAE;QACjD,6DAA6D,mCAAyB,EAAE;KACzF,EACD,IAAA,2BAAY,EACV,eAAe,CAAC,QAAQ,CAAC,EACzB,cAAc,CAAC,QAAQ,CAAC,EACxB,mBAAmB,CAAC,QAAQ,CAAC,EAC7B,mBAAmB,CAAC,QAAQ,CAAC,EAC7B,sBAAsB,CAAC,QAAQ,CAAC,EAChC,sBAAsB,CAAC,QAAQ,CAAC,CACjC,CACF,CACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAkB;IAC7C,OAAO,CAAC,aAAa,EAAE,cAAc,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAkB;IAC7C,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL,kBAAkB;QAClB,+DAA+D;QAC/D,cAAc;QACd,YAAY,QAAQ,CAAC,IAAI,SAAS;QAClC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;QACjD,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAe;IACrC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,cAAc,CAAC,QAAkB;IACxC,OAAO,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,eAAe,CAAC,QAAkB;IACzC,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE5C,yBAAyB;IACzB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAgD,EAAE,SAAoB,EAAE,EAAE;QAC3G,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACxB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,CAAC,MAAM,CAAC,wBAAwB,CAAC,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,2BAA2B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IACrH,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAkB,EAAE,SAAiB;IACxE,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,IAAI,SAAS,KAAK,wBAAwB,EAAE,CAAC;QAC3C,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,aAAa,KAAK,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,MAAM,KAAK,IAAI,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,SAAoB;IACzC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AACtF,CAAC;AAED,4DAA4D;AAC5D,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,IAAI,cAAc,IAAI,IAAI,CAAC,MAAM,GAAG,0BAA0B,EAAE,CAAC;QAC/D,2BAA2B;QAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,IAAI,IAAI,CAAC,MAAM,GAAG,0BAA0B,EAAE,CAAC;QAC7C,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,qBAAqB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,QAAkB;IACxC,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3C,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClD,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAkB;IAChD,yDAAyD;IACzD,MAAM,YAAY,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;;QAC5D,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAA,CAAC,CAAC,QAAQ,mCAAI,QAAQ,CAAC,GAAG,CAAC,MAAA,CAAC,CAAC,QAAQ,mCAAI,QAAQ,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CACjC,CAAC,MAAiD,EAAE,OAAyB,EAAE,EAAE;;QAC/E,wBAAwB;QACxB,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,eAAe,CAAC;QACnD,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACrC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,6BAA6B,CAAC,OAAO,EAAE,KAA2B,CAAC,CAAC,CAAC;IAElG,OAAO,IAAA,2BAAY,EAAC,GAAG,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAe,EAAE,KAAyB;IAC/E,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,gBAAgB,GAAG,OAAO,KAAK,eAAe,CAAC;IACrD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC7B,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAuB;IACpD,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,SAAS,CAAC,IAAI,CAAC,IAAA,2BAAY,EAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACrC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,EAAoB;;IACzC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,MAAA,MAAA,EAAE,CAAC,UAAU,0CAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC,IAAI,CAAC;IAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,sBAAsB,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC;QACpF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,sBAAsB,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YACtB,CAAC;iBAAM,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAkB;IAChD,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClC,SAAS,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;IAC1C,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,sBAAsB,CAAC;QACpC,MAAM,IAAI,GAAG,CAAC,IAAA,2BAAU,GAAE,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;QAEzD,MAAM,IAAI,GAAG,IAAA,2BAAY,EAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QAEpE,MAAM,WAAW,GAAG,cAAc,CAChC,IAAI,EACJ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAC/B,SAAS,EACT,SAAS,EACT,SAAS,EACT,IAAI,CACL,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,wBAAwB;AACxB,SAAS,cAAc,CACrB,UAAkB,EAClB,IAAc,EACd,GAAuB,EACvB,OAA2B,EAC3B,UAA8B,EAC9B,IAAa;IAEb,MAAM,EAAE,GAAG,EAAE,CAAC;IAEd,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,GAAG,GAAG,UAAU,GAAG,CAAC;IAE7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC9B,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACf,KAAK,GAAG,EAAE,CAAC;YACX,oCAAoC;YACpC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,GAAG,aAAa,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,KAAK,IAAI,GAAG,CAAC;IAEb,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,KAAK,IAAI,IAAI,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,OAAO,OAAO,IAAI,CAAC;IAC9B,CAAC;IAED,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,GAAa;IAClC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../src/print.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { BaseFunction, BaseImplementedTrait, ContractBuilder } from './contract';
1
+ import type { BaseFunction, BaseTraitImplBlock, ContractBuilder } from './contract';
2
2
  export declare const accessOptions: readonly [false, "ownable"];
3
3
  export declare const DEFAULT_ACCESS_CONTROL = "ownable";
4
4
  export type Access = (typeof accessOptions)[number];
@@ -11,5 +11,5 @@ export declare function setAccessControl(c: ContractBuilder, access: Access): vo
11
11
  *
12
12
  * If `caller` is provided, requires that the caller is the owner. Otherwise, requires that the owner is authorized.
13
13
  */
14
- export declare function requireAccessControl(c: ContractBuilder, trait: BaseImplementedTrait, fn: BaseFunction, access: Access, caller?: string): void;
14
+ export declare function requireAccessControl(c: ContractBuilder, trait: BaseTraitImplBlock | undefined, fn: BaseFunction, access: Access, caller?: string): void;
15
15
  //# sourceMappingURL=set-access-control.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"set-access-control.d.ts","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEtF,eAAO,MAAM,aAAa,6BAA8B,CAAC;AACzD,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAoBzE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,eAAe,EAClB,KAAK,EAAE,oBAAoB,EAC3B,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CA6BN"}
1
+ {"version":3,"file":"set-access-control.d.ts","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpF,eAAO,MAAM,aAAa,6BAA8B,CAAC;AACzD,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAoBzE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,eAAe,EAClB,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CA4BN"}
@@ -46,15 +46,10 @@ function requireAccessControl(c, trait, fn, access, caller) {
46
46
  if (caller) {
47
47
  c.addUseClause('soroban_sdk', 'panic_with_error');
48
48
  c.addError('Unauthorized', 1); // TODO: Ensure there are no conflicts in error codes
49
- c.addFunctionCodeBefore(trait, fn, [
50
- getOwner,
51
- 'if owner != caller {',
52
- ` panic_with_error!(e, ${c.name}Error::Unauthorized)`,
53
- '}',
54
- ]);
49
+ c.addFunctionCodeBefore(fn, [getOwner, `if owner != ${caller} {`, ` panic_with_error!(e, ${c.name}Error::Unauthorized)`, '}'], trait);
55
50
  }
56
51
  else {
57
- c.addFunctionCodeBefore(trait, fn, [getOwner, 'owner.require_auth();']);
52
+ c.addFunctionCodeBefore(fn, [getOwner, 'owner.require_auth();'], trait);
58
53
  }
59
54
  break;
60
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"set-access-control.js","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":";;;AAUA,4CAoBC;AAOD,oDAmCC;AAtEY,QAAA,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,CAAU,CAAC;AAC5C,QAAA,sBAAsB,GAAG,SAAS,CAAC;AAIhD;;GAEG;AACH,SAAgB,gBAAgB,CAAC,CAAkB,EAAE,MAAc;IACjE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,MAAM;QACR,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACf,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;gBAC9C,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACxC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;gBAClF,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,CAAC,CAAC,kBAAkB,CAAC,6CAA6C,CAAC,CAAC;YACtE,CAAC;YACD,MAAM;QACR,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,GAAU,MAAM,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAClC,CAAkB,EAClB,KAA2B,EAC3B,EAAgB,EAChB,MAAc,EACd,MAAe;IAEf,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,8BAAsB,CAAC;IAClC,CAAC;IACD,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAE5B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,wFAAwF,CAAC;YAC1G,IAAI,MAAM,EAAE,CAAC;gBACX,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;gBAClD,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,qDAAqD;gBACpF,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAE,EAAE;oBACjC,QAAQ;oBACR,sBAAsB;oBACtB,4BAA4B,CAAC,CAAC,IAAI,sBAAsB;oBACxD,GAAG;iBACJ,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM;QACR,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,GAAU,MAAM,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"set-access-control.js","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":";;;AAUA,4CAoBC;AAOD,oDAkCC;AArEY,QAAA,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,CAAU,CAAC;AAC5C,QAAA,sBAAsB,GAAG,SAAS,CAAC;AAIhD;;GAEG;AACH,SAAgB,gBAAgB,CAAC,CAAkB,EAAE,MAAc;IACjE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,MAAM;QACR,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACf,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;gBAC9C,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACxC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;gBAClF,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,CAAC,CAAC,kBAAkB,CAAC,6CAA6C,CAAC,CAAC;YACtE,CAAC;YACD,MAAM;QACR,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,GAAU,MAAM,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAClC,CAAkB,EAClB,KAAqC,EACrC,EAAgB,EAChB,MAAc,EACd,MAAe;IAEf,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,8BAAsB,CAAC;IAClC,CAAC;IACD,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAE5B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,wFAAwF,CAAC;YAC1G,IAAI,MAAM,EAAE,CAAC;gBACX,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;gBAClD,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,qDAAqD;gBACpF,CAAC,CAAC,qBAAqB,CACrB,EAAE,EACF,CAAC,QAAQ,EAAE,eAAe,MAAM,IAAI,EAAE,4BAA4B,CAAC,CAAC,IAAI,sBAAsB,EAAE,GAAG,CAAC,EACpG,KAAK,CACN,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,uBAAuB,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM;QACR,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,GAAU,MAAM,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/test.js CHANGED
@@ -12,6 +12,9 @@ const test = ava_1.default;
12
12
  test.serial('fungible result generated', async (t) => {
13
13
  await testGenerate(t, 'Fungible');
14
14
  });
15
+ test.serial('non-fungible result generated', async (t) => {
16
+ await testGenerate(t, 'NonFungible');
17
+ });
15
18
  async function testGenerate(t, kind) {
16
19
  const generatedSourcesPath = path_1.default.join(os_1.default.tmpdir(), 'oz-wizard-stellar');
17
20
  await fs_1.promises.rm(generatedSourcesPath, { force: true, recursive: true });
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;;;;AAAA,2BAAoC;AACpC,4CAAoB;AAEpB,8CAAwB;AACxB,gDAAwB;AAExB,gDAA2D;AAO3D,MAAM,IAAI,GAAG,aAAwB,CAAC;AAEtC,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACjD,MAAM,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,YAAY,CAAC,CAA4B,EAAE,IAAyB;IACjF,MAAM,oBAAoB,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACzE,MAAM,aAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,IAAA,+BAAqB,EAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE9D,CAAC,CAAC,IAAI,EAAE,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;;;;AAAA,2BAAoC;AACpC,4CAAoB;AAEpB,8CAAwB;AACxB,gDAAwB;AAExB,gDAA2D;AAO3D,MAAM,IAAI,GAAG,aAAwB,CAAC;AAEtC,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACjD,MAAM,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,MAAM,CAAC,+BAA+B,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACrD,MAAM,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,YAAY,CAAC,CAA4B,EAAE,IAAyB;IACjF,MAAM,oBAAoB,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACzE,MAAM,aAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,IAAA,+BAAqB,EAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE9D,CAAC,CAAC,IAAI,EAAE,CAAC;AACX,CAAC"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * The actual latest version to use in links.
3
3
  */
4
- export declare const contractsVersion = "0.1.0";
5
- export declare const contractsVersionTag = "v0.1.0";
4
+ export declare const contractsVersion = "0.2.0";
5
+ export declare const contractsVersionTag = "v0.2.0";
6
6
  /**
7
7
  * Semantic version string representing of the minimum compatible version of Contracts to display in output.
8
8
  */
9
- export declare const compatibleContractsSemver = "^0.1.0";
9
+ export declare const compatibleContractsSemver = "^0.2.0";
10
10
  //# sourceMappingURL=version.d.ts.map
@@ -4,10 +4,10 @@ exports.compatibleContractsSemver = exports.contractsVersionTag = exports.contra
4
4
  /**
5
5
  * The actual latest version to use in links.
6
6
  */
7
- exports.contractsVersion = '0.1.0';
7
+ exports.contractsVersion = '0.2.0';
8
8
  exports.contractsVersionTag = `v${exports.contractsVersion}`;
9
9
  /**
10
10
  * Semantic version string representing of the minimum compatible version of Contracts to display in output.
11
11
  */
12
- exports.compatibleContractsSemver = '^0.1.0';
12
+ exports.compatibleContractsSemver = '^0.2.0';
13
13
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/wizard-stellar",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "A boilerplate generator to get started with OpenZeppelin Stellar Soroban Contracts",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": "https://github.com/OpenZeppelin/contracts-wizard",
@@ -18,11 +18,10 @@
18
18
  "prepublish": "rimraf dist *.tsbuildinfo",
19
19
  "test": "ava",
20
20
  "test:update-snapshots": "ava --update-snapshots",
21
- "test:watch": "ava --watch",
22
- "version": "node ../../../scripts/bump-changelog.js"
21
+ "test:watch": "ava --watch"
23
22
  },
24
23
  "devDependencies": {
25
- "@types/node": "^18.0.0",
24
+ "@types/node": "^20.0.0",
26
25
  "@types/semver": "^7.5.7",
27
26
  "ava": "^6.0.0",
28
27
  "rimraf": "^5.0.0",
@@ -5,19 +5,19 @@ import { requireAccessControl } from './set-access-control';
5
5
  import { defineFunctions } from './utils/define-functions';
6
6
 
7
7
  export function addPausable(c: ContractBuilder, access: Access) {
8
- c.addUseClause('openzeppelin_pausable', 'self', { alias: 'pausable' });
9
- c.addUseClause('openzeppelin_pausable', 'Pausable');
8
+ c.addUseClause('stellar_pausable', 'self', { alias: 'pausable' });
9
+ c.addUseClause('stellar_pausable', 'Pausable');
10
10
 
11
11
  const pausableTrait = {
12
- name: 'Pausable',
13
- for: c.name,
12
+ traitName: 'Pausable',
13
+ structName: c.name,
14
14
  tags: ['contractimpl'],
15
15
  section: 'Utils',
16
16
  };
17
17
 
18
- c.addFunction(pausableTrait, functions.paused);
19
- c.addFunction(pausableTrait, functions.pause);
20
- c.addFunction(pausableTrait, functions.unpause);
18
+ c.addTraitFunction(pausableTrait, functions.paused);
19
+ c.addTraitFunction(pausableTrait, functions.pause);
20
+ c.addTraitFunction(pausableTrait, functions.unpause);
21
21
 
22
22
  requireAccessControl(c, pausableTrait, functions.pause, access, 'caller');
23
23
  requireAccessControl(c, pausableTrait, functions.unpause, access, 'caller');
@@ -0,0 +1,30 @@
1
+ import { getSelfArg } from './common-options';
2
+ import type { Access } from './set-access-control';
3
+ import { requireAccessControl } from './set-access-control';
4
+ import type { ContractBuilder } from './contract';
5
+ import { defineFunctions } from './utils/define-functions';
6
+
7
+ export function addUpgradeable(c: ContractBuilder, access: Access) {
8
+ const functions = defineFunctions({
9
+ _require_auth: {
10
+ args: [getSelfArg(), { name: 'operator', type: '&Address' }],
11
+ code: ['operator.require_auth();'],
12
+ },
13
+ });
14
+
15
+ c.addUseClause('stellar_upgradeable', 'UpgradeableInternal');
16
+ c.addUseClause('stellar_upgradeable_macros', 'Upgradeable');
17
+
18
+ c.addDerives('Upgradeable');
19
+
20
+ const upgradeableTrait = {
21
+ traitName: 'UpgradeableInternal',
22
+ structName: c.name,
23
+ tags: [],
24
+ section: 'Utils',
25
+ };
26
+
27
+ c.addTraitFunction(upgradeableTrait, functions._require_auth);
28
+
29
+ requireAccessControl(c, upgradeableTrait, functions._require_auth, access, '*operator');
30
+ }
package/src/api.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import type { CommonContractOptions } from './common-options';
2
2
  import type { FungibleOptions } from './fungible';
3
+ import type { NonFungibleOptions } from './non-fungible';
3
4
  import { printFungible, defaults as fungibledefaults } from './fungible';
5
+ import { printNonFungible, defaults as nonFungibledefaults } from './non-fungible';
4
6
 
5
7
  export interface WizardContractAPI<Options extends CommonContractOptions> {
6
8
  /**
@@ -23,8 +25,14 @@ export interface AccessControlAPI<Options extends CommonContractOptions> {
23
25
  }
24
26
 
25
27
  export type Fungible = WizardContractAPI<FungibleOptions>; // TODO add AccessControlAPI<FungibleOptions> when access control is implemented, if useful
28
+ export type NonFungible = WizardContractAPI<NonFungibleOptions>;
26
29
 
27
30
  export const fungible: Fungible = {
28
31
  print: printFungible,
29
32
  defaults: fungibledefaults,
30
33
  };
34
+
35
+ export const nonFungible: NonFungible = {
36
+ print: printNonFungible,
37
+ defaults: nonFungibledefaults,
38
+ };
@@ -1,8 +1,11 @@
1
1
  import type { FungibleOptions } from './fungible';
2
2
  import { buildFungible } from './fungible';
3
+ import type { NonFungibleOptions } from './non-fungible';
4
+ import { buildNonFungible } from './non-fungible';
3
5
 
4
6
  export interface KindedOptions {
5
7
  Fungible: { kind: 'Fungible' } & FungibleOptions;
8
+ NonFungible: { kind: 'NonFungible' } & NonFungibleOptions;
6
9
  }
7
10
 
8
11
  export type GenericOptions = KindedOptions[keyof KindedOptions];
@@ -11,9 +14,13 @@ export function buildGeneric(opts: GenericOptions) {
11
14
  switch (opts.kind) {
12
15
  case 'Fungible':
13
16
  return buildFungible(opts);
17
+
18
+ case 'NonFungible':
19
+ return buildNonFungible(opts);
20
+
14
21
  default: {
15
- const _: never = opts.kind; // TODO: When there are additional kinds above, change this assignment to just `opts` instead of `opts.kind`
16
- throw new Error('Unknown ERC');
22
+ const _: never = opts;
23
+ throw new Error('Unknown kind');
17
24
  }
18
25
  }
19
26
  }
package/src/contract.ts CHANGED
@@ -6,10 +6,12 @@ export interface Contract {
6
6
  useClauses: UseClause[];
7
7
  constructorCode: string[];
8
8
  constructorArgs: Argument[];
9
- implementedTraits: ImplementedTrait[];
9
+ implementedTraits: TraitImplBlock[];
10
+ freeFunctions: ContractFunction[];
10
11
  variables: Variable[];
11
12
  errors: Error[];
12
13
  ownable: boolean;
14
+ derives: string[];
13
15
  }
14
16
 
15
17
  export interface Error {
@@ -26,10 +28,11 @@ export interface UseClause {
26
28
  alias?: string;
27
29
  }
28
30
 
29
- export interface BaseImplementedTrait {
30
- name: string;
31
- for: string;
31
+ export interface BaseTraitImplBlock {
32
+ traitName: string;
33
+ structName: string;
32
34
  tags: string[];
35
+ assocType?: string;
33
36
  section?: string;
34
37
  /**
35
38
  * Priority for which trait to print first.
@@ -38,15 +41,15 @@ export interface BaseImplementedTrait {
38
41
  priority?: number;
39
42
  }
40
43
 
41
- export interface ImplementedTrait extends BaseImplementedTrait {
44
+ export interface TraitImplBlock extends BaseTraitImplBlock {
42
45
  functions: ContractFunction[];
43
- section?: string;
44
46
  }
45
47
 
46
48
  export interface BaseFunction {
47
49
  name: string;
48
50
  args: Argument[];
49
51
  code: string[];
52
+ pub?: boolean;
50
53
  returns?: string;
51
54
  }
52
55
 
@@ -74,19 +77,25 @@ export class ContractBuilder implements Contract {
74
77
  readonly constructorArgs: Argument[] = [];
75
78
  readonly constructorCode: string[] = [];
76
79
 
77
- private implementedTraitsMap: Map<string, ImplementedTrait> = new Map();
80
+ private implementedTraitsMap: Map<string, TraitImplBlock> = new Map();
81
+ private freeFunctionsMap: Map<string, ContractFunction> = new Map();
78
82
  private variablesMap: Map<string, Variable> = new Map();
79
83
  private useClausesMap: Map<string, UseClause> = new Map();
80
84
  private errorsMap: Map<string, Error> = new Map();
85
+ private derivesSet: Set<string> = new Set();
81
86
 
82
87
  constructor(name: string) {
83
88
  this.name = toIdentifier(name, true);
84
89
  }
85
90
 
86
- get implementedTraits(): ImplementedTrait[] {
91
+ get implementedTraits(): TraitImplBlock[] {
87
92
  return [...this.implementedTraitsMap.values()];
88
93
  }
89
94
 
95
+ get freeFunctions(): ContractFunction[] {
96
+ return [...this.freeFunctionsMap.values()];
97
+ }
98
+
90
99
  get variables(): Variable[] {
91
100
  return [...this.variablesMap.values()];
92
101
  }
@@ -99,6 +108,10 @@ export class ContractBuilder implements Contract {
99
108
  return [...this.errorsMap.values()];
100
109
  }
101
110
 
111
+ get derives(): string[] {
112
+ return [...this.derivesSet];
113
+ }
114
+
102
115
  addError(name: string, num: number): boolean {
103
116
  if (this.errorsMap.has(name)) {
104
117
  return false;
@@ -129,16 +142,17 @@ export class ContractBuilder implements Contract {
129
142
  }
130
143
  }
131
144
 
132
- addImplementedTrait(baseTrait: BaseImplementedTrait): ImplementedTrait {
133
- const key = baseTrait.name;
145
+ addTraitImplBlock(baseTrait: BaseTraitImplBlock): TraitImplBlock {
146
+ const key = baseTrait.traitName;
134
147
  const existingTrait = this.implementedTraitsMap.get(key);
135
148
  if (existingTrait !== undefined) {
136
149
  return existingTrait;
137
150
  } else {
138
- const t: ImplementedTrait = {
139
- name: baseTrait.name,
140
- for: baseTrait.for,
151
+ const t: TraitImplBlock = {
152
+ traitName: baseTrait.traitName,
153
+ structName: baseTrait.structName,
141
154
  tags: [...baseTrait.tags],
155
+ assocType: baseTrait.assocType,
142
156
  functions: [],
143
157
  section: baseTrait.section,
144
158
  priority: baseTrait.priority,
@@ -148,8 +162,26 @@ export class ContractBuilder implements Contract {
148
162
  }
149
163
  }
150
164
 
151
- addFunction(baseTrait: BaseImplementedTrait, fn: BaseFunction): ContractFunction {
152
- const t = this.addImplementedTrait(baseTrait);
165
+ // used for adding a function to the `impl Contract` block
166
+ addFreeFunction(fn: BaseFunction): ContractFunction {
167
+ const signature = this.getFunctionSignature(fn);
168
+ const existingFn = this.freeFunctionsMap.get(signature);
169
+ if (existingFn !== undefined) {
170
+ return existingFn;
171
+ } else {
172
+ const contractFn: ContractFunction = {
173
+ ...fn,
174
+ pub: true,
175
+ codeBefore: [],
176
+ };
177
+ this.freeFunctionsMap.set(signature, contractFn);
178
+ return contractFn;
179
+ }
180
+ }
181
+
182
+ // used for adding a function to a trait implementation block
183
+ addTraitFunction(baseTrait: BaseTraitImplBlock, fn: BaseFunction): ContractFunction {
184
+ const t = this.addTraitImplBlock(baseTrait);
153
185
 
154
186
  const signature = this.getFunctionSignature(fn);
155
187
 
@@ -170,19 +202,35 @@ export class ContractBuilder implements Contract {
170
202
  return contractFn;
171
203
  }
172
204
 
205
+ overrideAssocType(traitName: string, newAssocType: string): void {
206
+ const trait = this.implementedTraitsMap.get(traitName);
207
+ if (trait) {
208
+ trait.assocType = newAssocType;
209
+ } else {
210
+ throw new Error(`Trait '${traitName}' does not exist and cannot be overridden.`);
211
+ }
212
+ }
213
+
173
214
  private getFunctionSignature(fn: BaseFunction): string {
174
215
  return [fn.name, '(', ...fn.args.map(a => a.name), ')'].join('');
175
216
  }
176
217
 
177
- addFunctionCodeBefore(baseTrait: BaseImplementedTrait, fn: BaseFunction, codeBefore: string[]): void {
178
- this.addImplementedTrait(baseTrait);
179
- const existingFn = this.addFunction(baseTrait, fn);
218
+ private getOrCreateFunction(fn: BaseFunction, baseTrait?: BaseTraitImplBlock): ContractFunction {
219
+ if (baseTrait === undefined) {
220
+ return this.addFreeFunction(fn);
221
+ } else {
222
+ this.addTraitImplBlock(baseTrait);
223
+ return this.addTraitFunction(baseTrait, fn);
224
+ }
225
+ }
226
+
227
+ addFunctionCodeBefore(fn: BaseFunction, codeBefore: string[], baseTrait?: BaseTraitImplBlock): void {
228
+ const existingFn = this.getOrCreateFunction(fn, baseTrait);
180
229
  existingFn.codeBefore = [...(existingFn.codeBefore ?? []), ...codeBefore];
181
230
  }
182
231
 
183
- addFunctionTag(baseTrait: BaseImplementedTrait, fn: BaseFunction, tag: string): void {
184
- this.addImplementedTrait(baseTrait);
185
- const existingFn = this.addFunction(baseTrait, fn);
232
+ addFunctionTag(fn: BaseFunction, tag: string, baseTrait?: BaseTraitImplBlock): void {
233
+ const existingFn = this.getOrCreateFunction(fn, baseTrait);
186
234
  existingFn.tag = tag;
187
235
  }
188
236
 
@@ -198,4 +246,8 @@ export class ContractBuilder implements Contract {
198
246
  addConstructorCode(code: string): void {
199
247
  this.constructorCode.push(code);
200
248
  }
249
+
250
+ addDerives(derive: string): void {
251
+ this.derivesSet.add(derive);
252
+ }
201
253
  }