@openzeppelin/wizard-stellar 0.4.2 → 0.4.4
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.
- package/README.md +2 -2
- package/dist/common-options.js +2 -4
- package/dist/common-options.js.map +1 -1
- package/dist/contract.d.ts +9 -3
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +13 -10
- package/dist/contract.js.map +1 -1
- package/dist/fungible.d.ts +1 -1
- package/dist/fungible.js +8 -10
- package/dist/fungible.js.map +1 -1
- package/dist/generate/alternatives.js +1 -1
- package/dist/generate/alternatives.js.map +1 -1
- package/dist/generate/non-fungible.d.ts.map +1 -1
- package/dist/generate/non-fungible.js +1 -0
- package/dist/generate/non-fungible.js.map +1 -1
- package/dist/non-fungible.d.ts +1 -0
- package/dist/non-fungible.d.ts.map +1 -1
- package/dist/non-fungible.js +12 -11
- package/dist/non-fungible.js.map +1 -1
- package/dist/print.d.ts.map +1 -1
- package/dist/print.js +6 -10
- package/dist/print.js.map +1 -1
- package/dist/set-info.d.ts +1 -2
- package/dist/set-info.d.ts.map +1 -1
- package/dist/set-info.js +5 -9
- package/dist/set-info.js.map +1 -1
- package/dist/stablecoin.js +3 -4
- package/dist/stablecoin.js.map +1 -1
- package/dist/utils/compile-test.d.ts +12 -0
- package/dist/utils/compile-test.d.ts.map +1 -0
- package/dist/utils/compile-test.js +49 -0
- package/dist/utils/compile-test.js.map +1 -0
- package/dist/utils/define-functions.js +4 -7
- package/dist/utils/define-functions.js.map +1 -1
- package/dist/utils/zip-test.d.ts +9 -0
- package/dist/utils/zip-test.d.ts.map +1 -0
- package/dist/utils/zip-test.js +43 -0
- package/dist/utils/zip-test.js.map +1 -0
- package/dist/zip-rust.d.ts.map +1 -1
- package/dist/zip-rust.js +2 -16
- package/dist/zip-rust.js.map +1 -1
- package/dist/zip-scaffold.d.ts.map +1 -1
- package/dist/zip-shared.d.ts.map +1 -1
- package/dist/zip-shared.js +18 -1
- package/dist/zip-shared.js.map +1 -1
- package/package.json +1 -1
- package/src/contract.ts +11 -5
- package/src/fungible.ts +1 -1
- package/src/generate/non-fungible.ts +1 -0
- package/src/non-fungible.ts +6 -3
- package/src/print.ts +4 -3
- package/src/set-info.ts +3 -11
- package/src/utils/compile-test.ts +69 -0
- package/src/utils/zip-test.ts +55 -0
- package/src/zip-rust.ts +1 -17
- package/src/zip-shared.ts +17 -0
package/dist/set-info.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defaults = exports.infoOptions =
|
|
3
|
+
exports.defaults = exports.infoOptions = void 0;
|
|
4
4
|
exports.setInfo = setInfo;
|
|
5
|
-
exports.TAG_SECURITY_CONTACT = `@custom:security-contact`;
|
|
6
5
|
exports.infoOptions = [{}, { license: 'WTFPL' }];
|
|
7
6
|
exports.defaults = { license: 'MIT' };
|
|
8
|
-
function setInfo(c,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
if (license) {
|
|
7
|
+
function setInfo(c, { securityContact, license }) {
|
|
8
|
+
if (securityContact)
|
|
9
|
+
c.addContractMetadata({ key: 'security_contact', value: securityContact });
|
|
10
|
+
if (license)
|
|
14
11
|
c.license = license;
|
|
15
|
-
}
|
|
16
12
|
}
|
|
17
13
|
//# sourceMappingURL=set-info.js.map
|
package/dist/set-info.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-info.js","sourceRoot":"","sources":["../src/set-info.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"set-info.js","sourceRoot":"","sources":["../src/set-info.ts"],"names":[],"mappings":";;;AAWA,0BAIC;AAbY,QAAA,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAU,CAAC;AAElD,QAAA,QAAQ,GAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAOjD,SAAgB,OAAO,CAAC,CAAkB,EAAE,EAAE,eAAe,EAAE,OAAO,EAAQ;IAC5E,IAAI,eAAe;QAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IAEhG,IAAI,OAAO;QAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;AACnC,CAAC"}
|
package/dist/stablecoin.js
CHANGED
|
@@ -20,12 +20,11 @@ function printStablecoin(opts = exports.defaults) {
|
|
|
20
20
|
return (0, print_1.printContract)(buildStablecoin(opts));
|
|
21
21
|
}
|
|
22
22
|
function withDefaults(opts) {
|
|
23
|
-
var _a, _b, _c;
|
|
24
23
|
return {
|
|
25
24
|
...(0, fungible_1.withDefaults)(opts),
|
|
26
|
-
name:
|
|
27
|
-
symbol:
|
|
28
|
-
limitations:
|
|
25
|
+
name: opts.name ?? exports.defaults.name,
|
|
26
|
+
symbol: opts.symbol ?? exports.defaults.symbol,
|
|
27
|
+
limitations: opts.limitations ?? exports.defaults.limitations,
|
|
29
28
|
};
|
|
30
29
|
}
|
|
31
30
|
function isAccessControlRequired(opts) {
|
package/dist/stablecoin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stablecoin.js","sourceRoot":"","sources":["../src/stablecoin.ts"],"names":[],"mappings":";;;AAuBA,0CAEC;AAeD,0DAEC;AAED,0CAUC;AArDD,+DAA2D;AAC3D,qDAA8C;AAC9C,mCAAwC;AAExC,yCAMoB;AACpB,6DAAyE;AAE5D,QAAA,QAAQ,GAAgC;IACnD,GAAG,mBAAgB;IACnB,IAAI,EAAE,cAAc;IACpB,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,KAAK;CACV,CAAC;AAEE,QAAA,kBAAkB,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;AAE7E,SAAgB,eAAe,CAAC,OAA0B,gBAAQ;IAChE,OAAO,IAAA,qBAAa,EAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAMD,SAAS,YAAY,CAAC,IAAuB
|
|
1
|
+
{"version":3,"file":"stablecoin.js","sourceRoot":"","sources":["../src/stablecoin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ExecutionContext } from 'ava';
|
|
2
|
+
import type { GenericOptions } from '../build-generic';
|
|
3
|
+
import type { Contract } from '../contract';
|
|
4
|
+
export declare const runCargoTest: (t: ExecutionContext, temporaryFolder: string) => Promise<void>;
|
|
5
|
+
type WithTemporaryFolderTestFunction<Args extends unknown[]> = (...args: [...Args, ExecutionContext, string]) => Promise<void> | void;
|
|
6
|
+
export type MakeContract = (opt: GenericOptions) => Contract;
|
|
7
|
+
export declare const withTemporaryFolderDo: <Args extends unknown[]>(testFunction: WithTemporaryFolderTestFunction<Args>) => (...testFunctionArguments: Args) => (test: ExecutionContext) => Promise<void>;
|
|
8
|
+
export declare const runRustCompilationTest: (makeContract: MakeContract, opts: GenericOptions, testOptions: {
|
|
9
|
+
snapshotResult: boolean;
|
|
10
|
+
}) => (test: ExecutionContext) => Promise<void>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=compile-test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-test.d.ts","sourceRoot":"","sources":["../../src/utils/compile-test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAI5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQ5C,eAAO,MAAM,YAAY,GAAU,GAAG,gBAAgB,EAAE,iBAAiB,MAAM,kBAI9E,CAAC;AAEF,KAAK,+BAA+B,CAAC,IAAI,SAAS,OAAO,EAAE,IAAI,CAC7D,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,KACzC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,QAAQ,CAAC;AAE7D,eAAO,MAAM,qBAAqB,GAC/B,IAAI,SAAS,OAAO,EAAE,EAAE,cAAc,+BAA+B,CAAC,IAAI,CAAC,MAC3E,GAAG,uBAAuB,IAAI,MACxB,MAAM,gBAAgB,kBAQ5B,CAAC;AAEJ,eAAO,MAAM,sBAAsB;oBAIA,OAAO;OAdjC,MAAM,gBAAgB,kBAuC9B,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runRustCompilationTest = exports.withTemporaryFolderDo = exports.runCargoTest = void 0;
|
|
7
|
+
const os_1 = require("os");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const util_1 = require("util");
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const zip_test_1 = require("./zip-test");
|
|
12
|
+
const promises_1 = require("fs/promises");
|
|
13
|
+
const zip_shared_1 = require("../zip-shared");
|
|
14
|
+
const zip_rust_1 = require("../zip-rust");
|
|
15
|
+
const asyncExec = (0, util_1.promisify)(child_process_1.exec);
|
|
16
|
+
const runCargoTest = async (t, temporaryFolder) => {
|
|
17
|
+
const result = await asyncExec(`cd "${temporaryFolder}" && cargo test`);
|
|
18
|
+
t.regex(result.stdout, /0 failed/);
|
|
19
|
+
};
|
|
20
|
+
exports.runCargoTest = runCargoTest;
|
|
21
|
+
const withTemporaryFolderDo = (testFunction) => (...testFunctionArguments) => async (test) => {
|
|
22
|
+
const temporaryFolder = await (0, promises_1.mkdtemp)(path_1.default.join((0, os_1.tmpdir)(), `compilation-test-${crypto.randomUUID()}`));
|
|
23
|
+
try {
|
|
24
|
+
await testFunction(...testFunctionArguments, test, temporaryFolder);
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
await (0, promises_1.rm)(temporaryFolder, { recursive: true, force: true });
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.withTemporaryFolderDo = withTemporaryFolderDo;
|
|
31
|
+
exports.runRustCompilationTest = (0, exports.withTemporaryFolderDo)(async (makeContract, opts, testOptions, test, folderPath) => {
|
|
32
|
+
test.timeout(3000000);
|
|
33
|
+
const scaffoldContractName = (0, zip_shared_1.contractOptionsToContractName)(opts?.kind || 'contract');
|
|
34
|
+
const expectedZipFiles = [
|
|
35
|
+
`contracts/${scaffoldContractName}/src/contract.rs`,
|
|
36
|
+
`contracts/${scaffoldContractName}/src/test.rs`,
|
|
37
|
+
`contracts/${scaffoldContractName}/src/lib.rs`,
|
|
38
|
+
`contracts/${scaffoldContractName}/Cargo.toml`,
|
|
39
|
+
'Cargo.toml',
|
|
40
|
+
'README.md',
|
|
41
|
+
];
|
|
42
|
+
const zip = await (0, zip_rust_1.zipRustProject)(makeContract(opts), opts);
|
|
43
|
+
(0, zip_test_1.assertLayout)(test, zip, (0, zip_test_1.expandPathsFromFilesPaths)(expectedZipFiles));
|
|
44
|
+
await (0, zip_test_1.extractPackage)(zip, folderPath);
|
|
45
|
+
await (0, exports.runCargoTest)(test, folderPath);
|
|
46
|
+
if (testOptions.snapshotResult)
|
|
47
|
+
await (0, zip_test_1.snapshotZipContents)(test, zip, expectedZipFiles);
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=compile-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-test.js","sourceRoot":"","sources":["../../src/utils/compile-test.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA4B;AAE5B,gDAAwB;AACxB,+BAAiC;AACjC,iDAAqC;AAGrC,yCAA0G;AAC1G,0CAA0C;AAC1C,8CAA8D;AAC9D,0CAA6C;AAE7C,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAE3B,MAAM,YAAY,GAAG,KAAK,EAAE,CAAmB,EAAE,eAAuB,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,eAAe,iBAAiB,CAAC,CAAC;IAExE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC,CAAC;AAJW,QAAA,YAAY,gBAIvB;AAQK,MAAM,qBAAqB,GAChC,CAAyB,YAAmD,EAAE,EAAE,CAChF,CAAC,GAAG,qBAA2B,EAAE,EAAE,CACnC,KAAK,EAAE,IAAsB,EAAE,EAAE;IAC/B,MAAM,eAAe,GAAG,MAAM,IAAA,kBAAO,EAAC,cAAI,CAAC,IAAI,CAAC,IAAA,WAAM,GAAE,EAAE,oBAAoB,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;IAEtG,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,GAAG,qBAAqB,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;IACtE,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,aAAE,EAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC;AAXS,QAAA,qBAAqB,yBAW9B;AAES,QAAA,sBAAsB,GAAG,IAAA,6BAAqB,EACzD,KAAK,EACH,YAA0B,EAC1B,IAAoB,EACpB,WAAwC,EACxC,IAAsB,EACtB,UAAkB,EAClB,EAAE;IACF,IAAI,CAAC,OAAO,CAAC,OAAS,CAAC,CAAC;IAExB,MAAM,oBAAoB,GAAG,IAAA,0CAA6B,EAAC,IAAI,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC;IAErF,MAAM,gBAAgB,GAAG;QACvB,aAAa,oBAAoB,kBAAkB;QACnD,aAAa,oBAAoB,cAAc;QAC/C,aAAa,oBAAoB,aAAa;QAC9C,aAAa,oBAAoB,aAAa;QAC9C,YAAY;QACZ,WAAW;KACZ,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,IAAA,yBAAc,EAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAE3D,IAAA,uBAAY,EAAC,IAAI,EAAE,GAAG,EAAE,IAAA,oCAAyB,EAAC,gBAAgB,CAAC,CAAC,CAAC;IACrE,MAAM,IAAA,yBAAc,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACtC,MAAM,IAAA,oBAAY,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAErC,IAAI,WAAW,CAAC,cAAc;QAAE,MAAM,IAAA,8BAAmB,EAAC,IAAI,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;AACzF,CAAC,CACF,CAAC"}
|
|
@@ -2,12 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defineFunctions = defineFunctions;
|
|
4
4
|
function defineFunctions(fns) {
|
|
5
|
-
return Object.fromEntries(Object.entries(fns).map(([implicitName, fn]) =>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Object.assign({ name: (_a = fn.name) !== null && _a !== void 0 ? _a : implicitName }, fn),
|
|
10
|
-
];
|
|
11
|
-
}));
|
|
5
|
+
return Object.fromEntries(Object.entries(fns).map(([implicitName, fn]) => [
|
|
6
|
+
implicitName,
|
|
7
|
+
Object.assign({ name: fn.name ?? implicitName }, fn),
|
|
8
|
+
]));
|
|
12
9
|
}
|
|
13
10
|
//# sourceMappingURL=define-functions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-functions.js","sourceRoot":"","sources":["../../src/utils/define-functions.ts"],"names":[],"mappings":";;AAQA,0CAOC;AAPD,SAAgB,eAAe,CAAC,GAAoD;IAClF,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"define-functions.js","sourceRoot":"","sources":["../../src/utils/define-functions.ts"],"names":[],"mappings":";;AAQA,0CAOC;AAPD,SAAgB,eAAe,CAAC,GAAoD;IAClF,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,YAAY;QACZ,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,YAAY,EAAE,EAAE,EAAE,CAAC;KACrD,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { JSZipObject } from 'jszip';
|
|
2
|
+
import type JSZip from 'jszip';
|
|
3
|
+
import type { ExecutionContext } from 'ava';
|
|
4
|
+
export declare const asString: (item: JSZipObject) => Promise<string>;
|
|
5
|
+
export declare const snapshotZipContents: (test: ExecutionContext, zip: JSZip, contentsPathToAsserts: string[]) => Promise<void>;
|
|
6
|
+
export declare const assertLayout: (test: ExecutionContext, zip: JSZip, expectedLayout: string[]) => boolean;
|
|
7
|
+
export declare const expandPathsFromFilesPaths: (filePaths: string[]) => string[];
|
|
8
|
+
export declare const extractPackage: (zip: JSZip, folderPath: string) => Promise<void>;
|
|
9
|
+
//# sourceMappingURL=zip-test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip-test.d.ts","sourceRoot":"","sources":["../../src/utils/zip-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAY5C,eAAO,MAAM,QAAQ,GAAU,MAAM,WAAW,oBAA4D,CAAC;AAE7G,eAAO,MAAM,mBAAmB,GAAU,MAAM,gBAAgB,EAAE,KAAK,KAAK,EAAE,uBAAuB,MAAM,EAAE,kBAG5G,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,MAAM,gBAAgB,EAAE,KAAK,KAAK,EAAE,gBAAgB,MAAM,EAAE,YAMtF,CAAC;AAEJ,eAAO,MAAM,yBAAyB,GAAI,WAAW,MAAM,EAAE,KAAG,MAAM,EAa5D,CAAC;AAEX,eAAO,MAAM,cAAc,GAAU,KAAK,KAAK,EAAE,YAAY,MAAM,kBAUlE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractPackage = exports.expandPathsFromFilesPaths = exports.assertLayout = exports.snapshotZipContents = exports.asString = void 0;
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const getItemString = ({ files }) => async (key) => {
|
|
7
|
+
const obj = files[key];
|
|
8
|
+
if (obj === undefined)
|
|
9
|
+
throw Error(`Item ${key} not found in zip`);
|
|
10
|
+
return await (0, exports.asString)(obj);
|
|
11
|
+
};
|
|
12
|
+
const asString = async (item) => Buffer.from(await item.async('arraybuffer')).toString();
|
|
13
|
+
exports.asString = asString;
|
|
14
|
+
const snapshotZipContents = async (test, zip, contentsPathToAsserts) => {
|
|
15
|
+
const itemStrings = await Promise.all(contentsPathToAsserts.map(getItemString(zip)));
|
|
16
|
+
test.snapshot(itemStrings);
|
|
17
|
+
};
|
|
18
|
+
exports.snapshotZipContents = snapshotZipContents;
|
|
19
|
+
const assertLayout = (test, zip, expectedLayout) => test.deepEqual(Object.values(zip.files)
|
|
20
|
+
.map(f => f.name)
|
|
21
|
+
.sort(), expectedLayout.sort());
|
|
22
|
+
exports.assertLayout = assertLayout;
|
|
23
|
+
const expandPathsFromFilesPaths = (filePaths) => Array.from(new Set(filePaths.flatMap((filePath) => {
|
|
24
|
+
const parts = filePath.split('/');
|
|
25
|
+
if (parts.length === 1)
|
|
26
|
+
return [filePath];
|
|
27
|
+
const folders = parts.slice(0, -1).map((_, idx) => parts.slice(0, idx + 1).join('/') + '/');
|
|
28
|
+
return [...folders, filePath];
|
|
29
|
+
}))).sort();
|
|
30
|
+
exports.expandPathsFromFilesPaths = expandPathsFromFilesPaths;
|
|
31
|
+
const extractPackage = async (zip, folderPath) => {
|
|
32
|
+
const items = Object.values(Object.values(zip.files));
|
|
33
|
+
for (const item of items) {
|
|
34
|
+
if (item.dir) {
|
|
35
|
+
await (0, promises_1.mkdir)((0, path_1.join)(folderPath, item.name));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
await (0, promises_1.writeFile)((0, path_1.join)(folderPath, item.name), await (0, exports.asString)(item));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
exports.extractPackage = extractPackage;
|
|
43
|
+
//# sourceMappingURL=zip-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip-test.js","sourceRoot":"","sources":["../../src/utils/zip-test.ts"],"names":[],"mappings":"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"}
|
package/dist/zip-rust.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-rust.d.ts","sourceRoot":"","sources":["../src/zip-rust.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"zip-rust.d.ts","sourceRoot":"","sources":["../src/zip-rust.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAyB3C,eAAO,MAAM,wBAAwB,GAAI,GAAG,QAAQ,EAAE,MAAM,cAAc,UAYzE,CAAC;AAIF,eAAO,MAAM,cAAc,GAAU,GAAG,QAAQ,EAAE,MAAM,cAAc,mBACb,CAAC"}
|
package/dist/zip-rust.js
CHANGED
|
@@ -7,20 +7,6 @@ exports.zipRustProject = exports.createRustZipEnvironment = void 0;
|
|
|
7
7
|
const jszip_1 = __importDefault(require("jszip"));
|
|
8
8
|
const print_1 = require("./print");
|
|
9
9
|
const zip_shared_1 = require("./zip-shared");
|
|
10
|
-
const version_1 = require("./utils/version");
|
|
11
|
-
const workspaceCargo = `[workspace]
|
|
12
|
-
resolver = "2"
|
|
13
|
-
members = ["contracts/*"]
|
|
14
|
-
|
|
15
|
-
[workspace.package]
|
|
16
|
-
authors = []
|
|
17
|
-
edition = "2021"
|
|
18
|
-
license = "Apache-2.0"
|
|
19
|
-
version = "0.0.1"
|
|
20
|
-
|
|
21
|
-
[workspace.dependencies]
|
|
22
|
-
${(0, zip_shared_1.addDependenciesWith)(`"${version_1.compatibleSorobanVersion}"`, ['soroban-sdk'])}${(0, zip_shared_1.addDependenciesWith)(`"=${version_1.contractsVersion}"`, [...zip_shared_1.libDependencies])}
|
|
23
|
-
`;
|
|
24
10
|
const readme = `\
|
|
25
11
|
# Sample Rust Contract Environment
|
|
26
12
|
|
|
@@ -37,12 +23,12 @@ Continue your development journey with [Stellar CLI](https://github.com/stellar/
|
|
|
37
23
|
`;
|
|
38
24
|
const createRustZipEnvironment = (c, opts) => {
|
|
39
25
|
const zip = new jszip_1.default();
|
|
40
|
-
const contractName = (0, zip_shared_1.contractOptionsToContractName)(
|
|
26
|
+
const contractName = (0, zip_shared_1.contractOptionsToContractName)(opts?.kind || 'contract');
|
|
41
27
|
zip.file(`contracts/${contractName}/src/contract.rs`, (0, print_1.removeCreateLevelAttributes)((0, print_1.printContract)(c)));
|
|
42
28
|
zip.file(`contracts/${contractName}/src/test.rs`, (0, zip_shared_1.printRustNameTest)(c));
|
|
43
29
|
zip.file(`contracts/${contractName}/src/lib.rs`, zip_shared_1.createRustLibFile);
|
|
44
30
|
zip.file(`contracts/${contractName}/Cargo.toml`, (0, zip_shared_1.printContractCargo)(contractName));
|
|
45
|
-
zip.file('Cargo.toml', workspaceCargo);
|
|
31
|
+
zip.file('Cargo.toml', zip_shared_1.workspaceCargo);
|
|
46
32
|
return zip;
|
|
47
33
|
};
|
|
48
34
|
exports.createRustZipEnvironment = createRustZipEnvironment;
|
package/dist/zip-rust.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-rust.js","sourceRoot":"","sources":["../src/zip-rust.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,mCAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"zip-rust.js","sourceRoot":"","sources":["../src/zip-rust.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,mCAAqE;AACrE,6CAMsB;AAEtB,MAAM,MAAM,GAAG;;;;;;;;;;;;;CAad,CAAC;AAEK,MAAM,wBAAwB,GAAG,CAAC,CAAW,EAAE,IAAoB,EAAE,EAAE;IAC5E,MAAM,GAAG,GAAG,IAAI,eAAK,EAAE,CAAC;IAExB,MAAM,YAAY,GAAG,IAAA,0CAA6B,EAAC,IAAI,EAAE,IAAI,IAAI,UAAU,CAAC,CAAC;IAE7E,GAAG,CAAC,IAAI,CAAC,aAAa,YAAY,kBAAkB,EAAE,IAAA,mCAA2B,EAAC,IAAA,qBAAa,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,GAAG,CAAC,IAAI,CAAC,aAAa,YAAY,cAAc,EAAE,IAAA,8BAAiB,EAAC,CAAC,CAAC,CAAC,CAAC;IACxE,GAAG,CAAC,IAAI,CAAC,aAAa,YAAY,aAAa,EAAE,8BAAiB,CAAC,CAAC;IACpE,GAAG,CAAC,IAAI,CAAC,aAAa,YAAY,aAAa,EAAE,IAAA,+BAAkB,EAAC,YAAY,CAAC,CAAC,CAAC;IACnF,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,2BAAc,CAAC,CAAC;IAEvC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAZW,QAAA,wBAAwB,4BAYnC;AAEF,MAAM,oBAAoB,GAAG,CAAC,GAAU,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEpE,MAAM,cAAc,GAAG,KAAK,EAAE,CAAW,EAAE,IAAoB,EAAE,EAAE,CACxE,oBAAoB,CAAC,IAAA,gCAAwB,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAD7C,QAAA,cAAc,kBAC+B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-scaffold.d.ts","sourceRoot":"","sources":["../src/zip-scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmH3C,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"zip-scaffold.d.ts","sourceRoot":"","sources":["../src/zip-scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmH3C,eAAO,MAAM,kBAAkB,GAAU,GAAG,QAAQ,EAAE,MAAM,cAAc,mBACd,CAAC"}
|
package/dist/zip-shared.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-shared.d.ts","sourceRoot":"","sources":["../src/zip-shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,iBAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAKxC;AAED,eAAO,MAAM,6BAA6B,0BAAoB,CAAC;AAE/D,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,GAAG,MAAM,EAAE,CAI7E;AAED,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"zip-shared.d.ts","sourceRoot":"","sources":["../src/zip-shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,iBAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAKxC;AAED,eAAO,MAAM,6BAA6B,0BAAoB,CAAC;AAE/D,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,GAAG,MAAM,EAAE,CAI7E;AAED,eAAO,MAAM,iBAAiB,GAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC,WAqB9E,CAAC;AAEF,eAAO,MAAM,eAAe,2FAKlB,CAAC;AAEX,eAAO,MAAM,eAAe,0GAA+C,CAAC;AAE5E,eAAO,MAAM,mBAAmB,GAAI,iBAAiB,MAAM,EAAE,mBAAmB,MAAM,EAAE,WACG,CAAC;AAE5F,eAAO,MAAM,kBAAkB,GAAI,sBAAsB,MAAM,WAiB2B,CAAC;AAE3F,eAAO,MAAM,iBAAiB,mEAK7B,CAAC;AAEF,eAAO,MAAM,cAAc,QA0B1B,CAAC"}
|
package/dist/zip-shared.js
CHANGED
|
@@ -12,7 +12,7 @@ function pascalToSnakeCase(string) {
|
|
|
12
12
|
exports.contractOptionsToContractName = pascalToSnakeCase;
|
|
13
13
|
function getAddressArgs(c) {
|
|
14
14
|
return (c.constructorArgs || [])
|
|
15
|
-
.filter(constructorArg =>
|
|
15
|
+
.filter(constructorArg => constructorArg.type?.trim() === 'Address')
|
|
16
16
|
.map(constructorArg => constructorArg.name);
|
|
17
17
|
}
|
|
18
18
|
const printRustNameTest = (c) => `#![cfg(test)]
|
|
@@ -54,6 +54,9 @@ license.workspace = true
|
|
|
54
54
|
publish = false
|
|
55
55
|
version.workspace = true
|
|
56
56
|
|
|
57
|
+
[package.metadata.stellar]
|
|
58
|
+
cargo_inherit = true
|
|
59
|
+
|
|
57
60
|
[lib]
|
|
58
61
|
crate-type = ["cdylib"]
|
|
59
62
|
doctest = false
|
|
@@ -81,5 +84,19 @@ version = "0.0.1"
|
|
|
81
84
|
|
|
82
85
|
[workspace.dependencies]
|
|
83
86
|
${(0, exports.addDependenciesWith)(`"${version_1.compatibleSorobanVersion}"`, ['soroban-sdk'])}${(0, exports.addDependenciesWith)(`"=${version_1.contractsVersion}"`, [...exports.libDependencies])}
|
|
87
|
+
|
|
88
|
+
[profile.release]
|
|
89
|
+
opt-level = "z"
|
|
90
|
+
overflow-checks = true
|
|
91
|
+
debug = 0
|
|
92
|
+
strip = "symbols"
|
|
93
|
+
debug-assertions = false
|
|
94
|
+
panic = "abort"
|
|
95
|
+
codegen-units = 1
|
|
96
|
+
lto = true
|
|
97
|
+
|
|
98
|
+
[profile.release-with-logs]
|
|
99
|
+
inherits = "release"
|
|
100
|
+
debug-assertions = true
|
|
84
101
|
`;
|
|
85
102
|
//# sourceMappingURL=zip-shared.js.map
|
package/dist/zip-shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-shared.js","sourceRoot":"","sources":["../src/zip-shared.ts"],"names":[],"mappings":";;;AAYA,wCAIC;AAfD,6CAA6E;AAE7E,SAAS,iBAAiB,CAAC,MAAc;IACvC,OAAO,MAAM;SACV,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,WAAW,EAAE,CAAC;AACnB,CAAC;AAEY,QAAA,6BAA6B,GAAG,iBAAiB,CAAC;AAE/D,SAAgB,cAAc,CAAC,CAAoC;IACjE,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;SAC7B,MAAM,CAAC,cAAc,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"zip-shared.js","sourceRoot":"","sources":["../src/zip-shared.ts"],"names":[],"mappings":";;;AAYA,wCAIC;AAfD,6CAA6E;AAE7E,SAAS,iBAAiB,CAAC,MAAc;IACvC,OAAO,MAAM;SACV,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,WAAW,EAAE,CAAC;AACnB,CAAC;AAEY,QAAA,6BAA6B,GAAG,iBAAiB,CAAC;AAE/D,SAAgB,cAAc,CAAC,CAAoC;IACjE,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;SAC7B,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,SAAS,CAAC;SACnE,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAEM,MAAM,iBAAiB,GAAG,CAAC,CAA6C,EAAE,EAAE,CAAC;;;;qBAI/D,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,EAAE;;yBAEhE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;;;;;;uCAMH,CAAC,CAAC,IAAI,MAAM,cAAc,CAAC,CAAC,CAAC;KAC7D,GAAG,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC;KACpC,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;mBACzC,CAAC,CAAC,IAAI;;wDAE+B,CAAC,CAAC,IAAI;;;;CAI7D,CAAC;AArBW,QAAA,iBAAiB,qBAqB5B;AAEW,QAAA,eAAe,GAAG;IAC7B,gBAAgB;IAChB,gBAAgB;IAChB,wBAAwB;IACxB,gBAAgB;CACR,CAAC;AAEE,QAAA,eAAe,GAAG,CAAC,GAAG,uBAAe,EAAE,aAAa,CAAU,CAAC;AAErE,MAAM,mBAAmB,GAAG,CAAC,eAAuB,EAAE,iBAA2B,EAAE,EAAE,CAC1F,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,MAAM,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAD/E,QAAA,mBAAmB,uBAC4D;AAErF,MAAM,kBAAkB,GAAG,CAAC,oBAA4B,EAAE,EAAE,CAAC;UAC1D,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;;;;;EAc9C,IAAA,2BAAmB,EAAC,sBAAsB,EAAE,CAAC,GAAG,uBAAe,CAAC,CAAC;;EAEjE,IAAA,2BAAmB,EAAC,gDAAgD,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;AAjB9E,QAAA,kBAAkB,sBAiB4D;AAE9E,QAAA,iBAAiB,GAAG;;;;;CAKhC,CAAC;AAEW,QAAA,cAAc,GAAG;;;;;;;;;;;EAW5B,IAAA,2BAAmB,EAAC,IAAI,kCAAwB,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,GAAG,IAAA,2BAAmB,EAAC,KAAK,0BAAgB,GAAG,EAAE,CAAC,GAAG,uBAAe,CAAC,CAAC;;;;;;;;;;;;;;;CAe5I,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openzeppelin/wizard-stellar",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
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",
|
package/src/contract.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { toIdentifier } from './utils/convert-strings';
|
|
1
|
+
import { toByteArray, toIdentifier } from './utils/convert-strings';
|
|
2
2
|
|
|
3
3
|
export interface Contract {
|
|
4
|
+
metadata: Map<string, string>;
|
|
4
5
|
license: string;
|
|
5
|
-
securityContact: string;
|
|
6
6
|
documentations: string[];
|
|
7
7
|
name: string;
|
|
8
8
|
useClauses: UseClause[];
|
|
@@ -74,7 +74,7 @@ export interface Argument {
|
|
|
74
74
|
export class ContractBuilder implements Contract {
|
|
75
75
|
readonly name: string;
|
|
76
76
|
license = 'MIT';
|
|
77
|
-
|
|
77
|
+
metadata = new Map<string, string>();
|
|
78
78
|
ownable = false;
|
|
79
79
|
|
|
80
80
|
readonly documentations: string[] = [];
|
|
@@ -267,7 +267,13 @@ export class ContractBuilder implements Contract {
|
|
|
267
267
|
this.documentations.push(description);
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
-
|
|
271
|
-
|
|
270
|
+
addContractMetadata(metadata: { key: string; value: string }[] | { key: string; value: string }) {
|
|
271
|
+
(Array.isArray(metadata) ? metadata : [metadata]).forEach(({ key, value }) => {
|
|
272
|
+
if (this.metadata.has(key)) throw new Error(`Setting metadata failed: ${key} is already set`);
|
|
273
|
+
|
|
274
|
+
this.metadata.set(key, toByteArray(value));
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
if (this.metadata.size > 0) this.addUseClause('soroban_sdk', 'contractmeta');
|
|
272
278
|
}
|
|
273
279
|
}
|
package/src/fungible.ts
CHANGED
|
@@ -204,7 +204,7 @@ function addPremint(c: ContractBuilder, amount: string) {
|
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
/**
|
|
207
|
-
* Calculates the initial supply that would be used in
|
|
207
|
+
* Calculates the initial supply that would be used in a Fungible contract based on a given premint amount and number of decimals.
|
|
208
208
|
*
|
|
209
209
|
* @param premint Premint amount in token units, may be fractional
|
|
210
210
|
* @param decimals The number of decimals in the token
|
package/src/non-fungible.ts
CHANGED
|
@@ -16,6 +16,7 @@ import { toByteArray } from './utils/convert-strings';
|
|
|
16
16
|
export const defaults: Required<NonFungibleOptions> = {
|
|
17
17
|
name: 'MyToken',
|
|
18
18
|
symbol: 'MTK',
|
|
19
|
+
tokenUri: 'https://www.mytoken.com',
|
|
19
20
|
burnable: false,
|
|
20
21
|
enumerable: false,
|
|
21
22
|
consecutive: false,
|
|
@@ -34,6 +35,7 @@ export function printNonFungible(opts: NonFungibleOptions = defaults): string {
|
|
|
34
35
|
export interface NonFungibleOptions extends CommonContractOptions {
|
|
35
36
|
name: string;
|
|
36
37
|
symbol: string;
|
|
38
|
+
tokenUri?: string;
|
|
37
39
|
burnable?: boolean;
|
|
38
40
|
enumerable?: boolean;
|
|
39
41
|
consecutive?: boolean;
|
|
@@ -47,6 +49,7 @@ function withDefaults(opts: NonFungibleOptions): Required<NonFungibleOptions> {
|
|
|
47
49
|
return {
|
|
48
50
|
...opts,
|
|
49
51
|
...withCommonContractDefaults(opts),
|
|
52
|
+
tokenUri: opts.tokenUri ?? defaults.tokenUri,
|
|
50
53
|
burnable: opts.burnable ?? defaults.burnable,
|
|
51
54
|
consecutive: opts.consecutive ?? defaults.consecutive,
|
|
52
55
|
enumerable: opts.enumerable ?? defaults.enumerable,
|
|
@@ -87,7 +90,7 @@ export function buildNonFungible(opts: NonFungibleOptions): Contract {
|
|
|
87
90
|
throw new OptionsError(errors);
|
|
88
91
|
}
|
|
89
92
|
|
|
90
|
-
addBase(c, toByteArray(allOpts.name), toByteArray(allOpts.symbol), allOpts.pausable);
|
|
93
|
+
addBase(c, toByteArray(allOpts.name), toByteArray(allOpts.symbol), toByteArray(allOpts.tokenUri), allOpts.pausable);
|
|
91
94
|
|
|
92
95
|
if (allOpts.pausable) {
|
|
93
96
|
addPausable(c, allOpts.access);
|
|
@@ -119,9 +122,9 @@ export function buildNonFungible(opts: NonFungibleOptions): Contract {
|
|
|
119
122
|
return c;
|
|
120
123
|
}
|
|
121
124
|
|
|
122
|
-
function addBase(c: ContractBuilder, name: string, symbol: string, pausable: boolean) {
|
|
125
|
+
function addBase(c: ContractBuilder, name: string, symbol: string, tokenUri: string, pausable: boolean) {
|
|
123
126
|
// Set metadata
|
|
124
|
-
c.addConstructorCode(
|
|
127
|
+
c.addConstructorCode(`let uri = String::from_str(e, "${tokenUri}");`);
|
|
125
128
|
c.addConstructorCode(`let name = String::from_str(e, "${name}");`);
|
|
126
129
|
c.addConstructorCode(`let symbol = String::from_str(e, "${symbol}");`);
|
|
127
130
|
c.addConstructorCode(`Base::set_metadata(e, uri, name, symbol);`);
|
package/src/print.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { Lines } from './utils/format-lines';
|
|
|
4
4
|
import { formatLines, spaceBetween } from './utils/format-lines';
|
|
5
5
|
import { getSelfArg } from './common-options';
|
|
6
6
|
import { compatibleContractsSemver } from './utils/version';
|
|
7
|
+
import { toByteArray } from './utils/convert-strings';
|
|
7
8
|
|
|
8
9
|
const DEFAULT_SECTION = '1. with no section';
|
|
9
10
|
const STANDALONE_IMPORTS_GROUP = 'Standalone Imports';
|
|
@@ -24,11 +25,11 @@ export function printContract(contract: Contract): string {
|
|
|
24
25
|
`// SPDX-License-Identifier: ${contract.license}`,
|
|
25
26
|
`// Compatible with OpenZeppelin Stellar Soroban Contracts ${compatibleContractsSemver}`,
|
|
26
27
|
...(contract.documentations.length ? ['', ...printDocumentations(contract.documentations)] : []),
|
|
27
|
-
...(contract.securityContact ? ['', ...printSecurityTag(contract.securityContact)] : []),
|
|
28
28
|
...createLevelAttributes,
|
|
29
29
|
],
|
|
30
30
|
spaceBetween(
|
|
31
31
|
printUseClauses(contract),
|
|
32
|
+
printMetadata(contract),
|
|
32
33
|
printVariables(contract),
|
|
33
34
|
printContractStruct(contract),
|
|
34
35
|
printContractErrors(contract),
|
|
@@ -367,6 +368,6 @@ function printDocumentations(documentations: string[]): string[] {
|
|
|
367
368
|
return documentations.map(documentation => `//! ${documentation}`);
|
|
368
369
|
}
|
|
369
370
|
|
|
370
|
-
function
|
|
371
|
-
return [
|
|
371
|
+
function printMetadata(contract: Contract) {
|
|
372
|
+
return Array.from(contract.metadata.entries()).map(([key, value]) => `contractmeta!(key="${key}", val="${value}");`);
|
|
372
373
|
}
|
package/src/set-info.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { ContractBuilder } from './contract';
|
|
2
2
|
|
|
3
|
-
export const TAG_SECURITY_CONTACT = `@custom:security-contact`;
|
|
4
|
-
|
|
5
3
|
export const infoOptions = [{}, { license: 'WTFPL' }] as const;
|
|
6
4
|
|
|
7
5
|
export const defaults: Info = { license: 'MIT' };
|
|
@@ -11,14 +9,8 @@ export type Info = {
|
|
|
11
9
|
securityContact?: string;
|
|
12
10
|
};
|
|
13
11
|
|
|
14
|
-
export function setInfo(c: ContractBuilder,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (securityContact) {
|
|
18
|
-
c.addSecurityTag(securityContact);
|
|
19
|
-
}
|
|
12
|
+
export function setInfo(c: ContractBuilder, { securityContact, license }: Info): void {
|
|
13
|
+
if (securityContact) c.addContractMetadata({ key: 'security_contact', value: securityContact });
|
|
20
14
|
|
|
21
|
-
if (license)
|
|
22
|
-
c.license = license;
|
|
23
|
-
}
|
|
15
|
+
if (license) c.license = license;
|
|
24
16
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { tmpdir } from 'os';
|
|
2
|
+
import type { ExecutionContext } from 'ava';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
import { exec } from 'child_process';
|
|
6
|
+
import type { GenericOptions } from '../build-generic';
|
|
7
|
+
import type { Contract } from '../contract';
|
|
8
|
+
import { assertLayout, snapshotZipContents, expandPathsFromFilesPaths, extractPackage } from './zip-test';
|
|
9
|
+
import { mkdtemp, rm } from 'fs/promises';
|
|
10
|
+
import { contractOptionsToContractName } from '../zip-shared';
|
|
11
|
+
import { zipRustProject } from '../zip-rust';
|
|
12
|
+
|
|
13
|
+
const asyncExec = promisify(exec);
|
|
14
|
+
|
|
15
|
+
export const runCargoTest = async (t: ExecutionContext, temporaryFolder: string) => {
|
|
16
|
+
const result = await asyncExec(`cd "${temporaryFolder}" && cargo test`);
|
|
17
|
+
|
|
18
|
+
t.regex(result.stdout, /0 failed/);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
type WithTemporaryFolderTestFunction<Args extends unknown[]> = (
|
|
22
|
+
...args: [...Args, ExecutionContext, string]
|
|
23
|
+
) => Promise<void> | void;
|
|
24
|
+
|
|
25
|
+
export type MakeContract = (opt: GenericOptions) => Contract;
|
|
26
|
+
|
|
27
|
+
export const withTemporaryFolderDo =
|
|
28
|
+
<Args extends unknown[]>(testFunction: WithTemporaryFolderTestFunction<Args>) =>
|
|
29
|
+
(...testFunctionArguments: Args) =>
|
|
30
|
+
async (test: ExecutionContext) => {
|
|
31
|
+
const temporaryFolder = await mkdtemp(path.join(tmpdir(), `compilation-test-${crypto.randomUUID()}`));
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
await testFunction(...testFunctionArguments, test, temporaryFolder);
|
|
35
|
+
} finally {
|
|
36
|
+
await rm(temporaryFolder, { recursive: true, force: true });
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const runRustCompilationTest = withTemporaryFolderDo(
|
|
41
|
+
async (
|
|
42
|
+
makeContract: MakeContract,
|
|
43
|
+
opts: GenericOptions,
|
|
44
|
+
testOptions: { snapshotResult: boolean },
|
|
45
|
+
test: ExecutionContext,
|
|
46
|
+
folderPath: string,
|
|
47
|
+
) => {
|
|
48
|
+
test.timeout(3_000_000);
|
|
49
|
+
|
|
50
|
+
const scaffoldContractName = contractOptionsToContractName(opts?.kind || 'contract');
|
|
51
|
+
|
|
52
|
+
const expectedZipFiles = [
|
|
53
|
+
`contracts/${scaffoldContractName}/src/contract.rs`,
|
|
54
|
+
`contracts/${scaffoldContractName}/src/test.rs`,
|
|
55
|
+
`contracts/${scaffoldContractName}/src/lib.rs`,
|
|
56
|
+
`contracts/${scaffoldContractName}/Cargo.toml`,
|
|
57
|
+
'Cargo.toml',
|
|
58
|
+
'README.md',
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
const zip = await zipRustProject(makeContract(opts), opts);
|
|
62
|
+
|
|
63
|
+
assertLayout(test, zip, expandPathsFromFilesPaths(expectedZipFiles));
|
|
64
|
+
await extractPackage(zip, folderPath);
|
|
65
|
+
await runCargoTest(test, folderPath);
|
|
66
|
+
|
|
67
|
+
if (testOptions.snapshotResult) await snapshotZipContents(test, zip, expectedZipFiles);
|
|
68
|
+
},
|
|
69
|
+
);
|