@openzeppelin/wizard-stellar 0.1.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.
- package/LICENSE +661 -0
- package/NOTICE +8 -0
- package/README.md +57 -0
- package/dist/add-pausable.d.ts +4 -0
- package/dist/add-pausable.d.ts.map +1 -0
- package/dist/add-pausable.js +37 -0
- package/dist/add-pausable.js.map +1 -0
- package/dist/api.d.ts +22 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +9 -0
- package/dist/api.js.map +1 -0
- package/dist/build-generic.d.ts +9 -0
- package/dist/build-generic.d.ts.map +1 -0
- package/dist/build-generic.js +15 -0
- package/dist/build-generic.js.map +1 -0
- package/dist/common-options.d.ts +15 -0
- package/dist/common-options.d.ts.map +1 -0
- package/dist/common-options.js +31 -0
- package/dist/common-options.js.map +1 -0
- package/dist/contract.d.ts +91 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +123 -0
- package/dist/contract.js.map +1 -0
- package/dist/error.d.ts +8 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +11 -0
- package/dist/error.js.map +1 -0
- package/dist/fungible.d.ts +24 -0
- package/dist/fungible.d.ts.map +1 -0
- package/dist/fungible.js +264 -0
- package/dist/fungible.js.map +1 -0
- package/dist/generate/alternatives.d.ts +7 -0
- package/dist/generate/alternatives.d.ts.map +1 -0
- package/dist/generate/alternatives.js +27 -0
- package/dist/generate/alternatives.js.map +1 -0
- package/dist/generate/fungible.d.ts +3 -0
- package/dist/generate/fungible.d.ts.map +1 -0
- package/dist/generate/fungible.js +21 -0
- package/dist/generate/fungible.js.map +1 -0
- package/dist/generate/sources.d.ts +16 -0
- package/dist/generate/sources.d.ts.map +1 -0
- package/dist/generate/sources.js +62 -0
- package/dist/generate/sources.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/kind.d.ts +4 -0
- package/dist/kind.d.ts.map +1 -0
- package/dist/kind.js +24 -0
- package/dist/kind.js.map +1 -0
- package/dist/print.d.ts +3 -0
- package/dist/print.d.ts.map +1 -0
- package/dist/print.js +257 -0
- package/dist/print.js.map +1 -0
- package/dist/set-access-control.d.ts +15 -0
- package/dist/set-access-control.d.ts.map +1 -0
- package/dist/set-access-control.js +67 -0
- package/dist/set-access-control.js.map +1 -0
- package/dist/set-info.d.ts +10 -0
- package/dist/set-info.d.ts.map +1 -0
- package/dist/set-info.js +13 -0
- package/dist/set-info.js.map +1 -0
- package/dist/test.d.ts +2 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +21 -0
- package/dist/test.js.map +1 -0
- package/dist/utils/convert-strings.d.ts +27 -0
- package/dist/utils/convert-strings.d.ts.map +1 -0
- package/dist/utils/convert-strings.js +81 -0
- package/dist/utils/convert-strings.js.map +1 -0
- package/dist/utils/define-functions.d.ts +5 -0
- package/dist/utils/define-functions.d.ts.map +1 -0
- package/dist/utils/define-functions.js +7 -0
- package/dist/utils/define-functions.js.map +1 -0
- package/dist/utils/format-lines.d.ts +6 -0
- package/dist/utils/format-lines.d.ts.map +1 -0
- package/dist/utils/format-lines.js +28 -0
- package/dist/utils/format-lines.js.map +1 -0
- package/dist/utils/sorted-by.d.ts +2 -0
- package/dist/utils/sorted-by.d.ts.map +1 -0
- package/dist/utils/sorted-by.js +7 -0
- package/dist/utils/sorted-by.js.map +1 -0
- package/dist/utils/version.d.ts +10 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +13 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +33 -0
- package/src/add-pausable.ts +40 -0
- package/src/api.ts +30 -0
- package/src/build-generic.ts +19 -0
- package/src/common-options.ts +38 -0
- package/src/contract.ts +201 -0
- package/src/error.ts +7 -0
- package/src/fungible.ts +300 -0
- package/src/generate/alternatives.ts +32 -0
- package/src/generate/fungible.ts +21 -0
- package/src/generate/sources.ts +75 -0
- package/src/index.ts +24 -0
- package/src/kind.ts +26 -0
- package/src/print.ts +305 -0
- package/src/set-access-control.ts +73 -0
- package/src/set-info.ts +17 -0
- package/src/test.ts +26 -0
- package/src/utils/convert-strings.ts +83 -0
- package/src/utils/define-functions.ts +9 -0
- package/src/utils/format-lines.ts +26 -0
- package/src/utils/sorted-by.ts +3 -0
- package/src/utils/version.ts +10 -0
package/dist/print.js
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.printContract = printContract;
|
|
4
|
+
const format_lines_1 = require("./utils/format-lines");
|
|
5
|
+
const common_options_1 = require("./common-options");
|
|
6
|
+
const version_1 = require("./utils/version");
|
|
7
|
+
const DEFAULT_SECTION = '1. with no section';
|
|
8
|
+
const STANDALONE_IMPORTS_GROUP = 'Standalone Imports';
|
|
9
|
+
const MAX_USE_CLAUSE_LINE_LENGTH = 90;
|
|
10
|
+
const TAB = ' ';
|
|
11
|
+
function printContract(contract) {
|
|
12
|
+
return (0, format_lines_1.formatLines)(...(0, format_lines_1.spaceBetween)([
|
|
13
|
+
`// SPDX-License-Identifier: ${contract.license}`,
|
|
14
|
+
`// Compatible with OpenZeppelin Stellar Soroban Contracts ${version_1.compatibleContractsSemver}`,
|
|
15
|
+
], (0, format_lines_1.spaceBetween)(printUseClauses(contract), printVariables(contract), printContractStruct(contract), printContractErrors(contract), printContractFunctions(contract), printImplementedTraits(contract))));
|
|
16
|
+
}
|
|
17
|
+
function printContractStruct(contract) {
|
|
18
|
+
return ['#[contract]', `pub struct ${contract.name};`];
|
|
19
|
+
}
|
|
20
|
+
function printContractErrors(contract) {
|
|
21
|
+
if (contract.errors.length === 0) {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
return [
|
|
25
|
+
'#[contracterror]',
|
|
26
|
+
'#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)]',
|
|
27
|
+
'#[repr(u32)]',
|
|
28
|
+
`pub enum ${contract.name}Error {`,
|
|
29
|
+
contract.errors.map(e => `${e.name} = ${e.num},`),
|
|
30
|
+
`}`,
|
|
31
|
+
];
|
|
32
|
+
}
|
|
33
|
+
function withSemicolons(lines) {
|
|
34
|
+
return lines.map(line => (line.endsWith(';') ? line : line + ';'));
|
|
35
|
+
}
|
|
36
|
+
function printVariables(contract) {
|
|
37
|
+
return withSemicolons(contract.variables.map(v => `const ${v.name}: ${v.type} = ${v.value}`));
|
|
38
|
+
}
|
|
39
|
+
function printUseClauses(contract) {
|
|
40
|
+
const useClauses = sortUseClauses(contract);
|
|
41
|
+
// group by containerPath
|
|
42
|
+
const grouped = useClauses.reduce((result, useClause) => {
|
|
43
|
+
if (useClause.groupable) {
|
|
44
|
+
(result[useClause.containerPath] = result[useClause.containerPath] || []).push(useClause);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
(result[STANDALONE_IMPORTS_GROUP] = result[STANDALONE_IMPORTS_GROUP] || []).push(useClause);
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}, {});
|
|
51
|
+
const lines = Object.entries(grouped).flatMap(([groupName, group]) => getLinesFromUseClausesGroup(group, groupName));
|
|
52
|
+
return lines.flatMap(line => splitLongUseClauseLine(line.toString()));
|
|
53
|
+
}
|
|
54
|
+
function getLinesFromUseClausesGroup(group, groupName) {
|
|
55
|
+
const lines = [];
|
|
56
|
+
if (groupName === STANDALONE_IMPORTS_GROUP) {
|
|
57
|
+
for (const useClause of group) {
|
|
58
|
+
lines.push(`use ${useClause.containerPath}::${nameWithAlias(useClause)};`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
if (group.length == 1) {
|
|
63
|
+
lines.push(`use ${groupName}::${nameWithAlias(group[0])};`);
|
|
64
|
+
}
|
|
65
|
+
else if (group.length > 1) {
|
|
66
|
+
const names = group.map(useClause => nameWithAlias(useClause)).join(', ');
|
|
67
|
+
lines.push(`use ${groupName}::{${names}};`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return lines;
|
|
71
|
+
}
|
|
72
|
+
function nameWithAlias(useClause) {
|
|
73
|
+
return useClause.alias ? `${useClause.name} as ${useClause.alias}` : useClause.name;
|
|
74
|
+
}
|
|
75
|
+
// TODO: remove this when we can use a formatting js library
|
|
76
|
+
function splitLongUseClauseLine(line) {
|
|
77
|
+
const lines = [];
|
|
78
|
+
const containsBraces = line.indexOf('{') !== -1;
|
|
79
|
+
if (containsBraces && line.length > MAX_USE_CLAUSE_LINE_LENGTH) {
|
|
80
|
+
// split at the first brace
|
|
81
|
+
lines.push(line.slice(0, line.indexOf('{') + 1));
|
|
82
|
+
lines.push(...splitLongLineInner(line.slice(line.indexOf('{') + 1, -2)));
|
|
83
|
+
lines.push('};');
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
lines.push(line);
|
|
87
|
+
}
|
|
88
|
+
return lines;
|
|
89
|
+
}
|
|
90
|
+
function splitLongLineInner(line) {
|
|
91
|
+
const lines = [];
|
|
92
|
+
if (line.length > MAX_USE_CLAUSE_LINE_LENGTH) {
|
|
93
|
+
const max_accessible_string = line.slice(0, MAX_USE_CLAUSE_LINE_LENGTH);
|
|
94
|
+
const lastCommaIndex = max_accessible_string.lastIndexOf(',');
|
|
95
|
+
if (lastCommaIndex !== -1) {
|
|
96
|
+
lines.push(TAB + max_accessible_string.slice(0, lastCommaIndex + 1));
|
|
97
|
+
lines.push(...splitLongLineInner(line.slice(lastCommaIndex + 2)));
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
lines.push(TAB + max_accessible_string);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
lines.push(TAB + line);
|
|
105
|
+
}
|
|
106
|
+
return lines;
|
|
107
|
+
}
|
|
108
|
+
function sortUseClauses(contract) {
|
|
109
|
+
return contract.useClauses.sort((a, b) => {
|
|
110
|
+
if (a.containerPath === b.containerPath) {
|
|
111
|
+
if (a.name === 'self' && b.name !== 'self') {
|
|
112
|
+
return -1;
|
|
113
|
+
}
|
|
114
|
+
else if (a.name !== 'self' && b.name === 'self') {
|
|
115
|
+
return 1;
|
|
116
|
+
}
|
|
117
|
+
return nameWithAlias(a).localeCompare(nameWithAlias(b));
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
return a.containerPath.localeCompare(b.containerPath);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
function printImplementedTraits(contract) {
|
|
125
|
+
// sort first by priority, then number of tags, then name
|
|
126
|
+
const sortedTraits = contract.implementedTraits.sort((a, b) => {
|
|
127
|
+
var _a, _b;
|
|
128
|
+
if (a.priority !== b.priority) {
|
|
129
|
+
return ((_a = a.priority) !== null && _a !== void 0 ? _a : Infinity) - ((_b = b.priority) !== null && _b !== void 0 ? _b : Infinity);
|
|
130
|
+
}
|
|
131
|
+
if (a.tags.length !== b.tags.length) {
|
|
132
|
+
return a.tags.length - b.tags.length;
|
|
133
|
+
}
|
|
134
|
+
return a.name.localeCompare(b.name);
|
|
135
|
+
});
|
|
136
|
+
// group by section
|
|
137
|
+
const grouped = sortedTraits.reduce((result, current) => {
|
|
138
|
+
var _a;
|
|
139
|
+
// default to no section
|
|
140
|
+
const section = (_a = current.section) !== null && _a !== void 0 ? _a : DEFAULT_SECTION;
|
|
141
|
+
(result[section] = result[section] || []).push(current);
|
|
142
|
+
return result;
|
|
143
|
+
}, {});
|
|
144
|
+
const sections = Object.entries(grouped)
|
|
145
|
+
.sort((a, b) => a[0].localeCompare(b[0]))
|
|
146
|
+
.map(([section, impls]) => printImplementedTraitsSection(section, impls));
|
|
147
|
+
return (0, format_lines_1.spaceBetween)(...sections);
|
|
148
|
+
}
|
|
149
|
+
function printImplementedTraitsSection(section, impls) {
|
|
150
|
+
const lines = [];
|
|
151
|
+
const isDefaultSection = section === DEFAULT_SECTION;
|
|
152
|
+
if (!isDefaultSection) {
|
|
153
|
+
lines.push('//');
|
|
154
|
+
lines.push(`// ${section}`);
|
|
155
|
+
lines.push('//');
|
|
156
|
+
}
|
|
157
|
+
impls.forEach((trait, index) => {
|
|
158
|
+
if (index > 0 || !isDefaultSection) {
|
|
159
|
+
lines.push('');
|
|
160
|
+
}
|
|
161
|
+
lines.push(...printImplementedTrait(trait));
|
|
162
|
+
});
|
|
163
|
+
return lines;
|
|
164
|
+
}
|
|
165
|
+
function printImplementedTrait(trait) {
|
|
166
|
+
const implLines = [];
|
|
167
|
+
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('}');
|
|
172
|
+
return implLines;
|
|
173
|
+
}
|
|
174
|
+
function printFunction(fn) {
|
|
175
|
+
var _a, _b;
|
|
176
|
+
const head = `fn ${fn.name}`;
|
|
177
|
+
const args = fn.args.map(a => printArgument(a));
|
|
178
|
+
const codeLines = (_b = (_a = fn.codeBefore) === null || _a === void 0 ? void 0 : _a.concat(fn.code)) !== null && _b !== void 0 ? _b : fn.code;
|
|
179
|
+
for (let i = 0; i < codeLines.length; i++) {
|
|
180
|
+
const line = codeLines[i];
|
|
181
|
+
const shouldEndWithSemicolon = i < codeLines.length - 1 || fn.returns === undefined;
|
|
182
|
+
if (line !== undefined && line.length > 0) {
|
|
183
|
+
if (shouldEndWithSemicolon && !['{', '}', ';'].includes(line.charAt(line.length - 1))) {
|
|
184
|
+
codeLines[i] += ';';
|
|
185
|
+
}
|
|
186
|
+
else if (!shouldEndWithSemicolon && line.endsWith(';')) {
|
|
187
|
+
codeLines[i] = line.slice(0, line.length - 1);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return printFunction2(head, args, fn.tag, fn.returns, undefined, codeLines);
|
|
192
|
+
}
|
|
193
|
+
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;
|
|
200
|
+
}
|
|
201
|
+
function printConstructor(contract) {
|
|
202
|
+
if (contract.constructorCode.length > 0) {
|
|
203
|
+
const head = 'pub fn __constructor';
|
|
204
|
+
const args = [(0, common_options_1.getSelfArg)(), ...contract.constructorArgs];
|
|
205
|
+
const body = (0, format_lines_1.spaceBetween)(withSemicolons(contract.constructorCode));
|
|
206
|
+
const constructor = printFunction2(head, args.map(a => printArgument(a)), undefined, undefined, undefined, body);
|
|
207
|
+
return constructor;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
return [];
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// generic for functions and constructors
|
|
214
|
+
// kindedName = 'fn foo'
|
|
215
|
+
function printFunction2(kindedName, args, tag, returns, returnLine, code) {
|
|
216
|
+
const fn = [];
|
|
217
|
+
if (tag !== undefined) {
|
|
218
|
+
fn.push(`#[${tag}]`);
|
|
219
|
+
}
|
|
220
|
+
let accum = `${kindedName}(`;
|
|
221
|
+
if (args.length > 0) {
|
|
222
|
+
const formattedArgs = args.join(', ');
|
|
223
|
+
if (formattedArgs.length > 80) {
|
|
224
|
+
fn.push(accum);
|
|
225
|
+
accum = '';
|
|
226
|
+
// print each arg in a separate line
|
|
227
|
+
fn.push(args.map(arg => `${arg},`));
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
accum += `${formattedArgs}`;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
accum += ')';
|
|
234
|
+
if (returns === undefined) {
|
|
235
|
+
accum += ' {';
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
accum += ` -> ${returns} {`;
|
|
239
|
+
}
|
|
240
|
+
fn.push(accum);
|
|
241
|
+
fn.push(code);
|
|
242
|
+
if (returnLine !== undefined) {
|
|
243
|
+
fn.push([returnLine]);
|
|
244
|
+
}
|
|
245
|
+
fn.push('}');
|
|
246
|
+
return fn;
|
|
247
|
+
}
|
|
248
|
+
function printArgument(arg) {
|
|
249
|
+
if (arg.type !== undefined) {
|
|
250
|
+
const type = arg.type;
|
|
251
|
+
return `${arg.name}: ${type}`;
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
return `${arg.name}`;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=print.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print.js","sourceRoot":"","sources":["../src/print.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { BaseFunction, BaseImplementedTrait, ContractBuilder } from './contract';
|
|
2
|
+
export declare const accessOptions: readonly [false, "ownable"];
|
|
3
|
+
export declare const DEFAULT_ACCESS_CONTROL = "ownable";
|
|
4
|
+
export type Access = (typeof accessOptions)[number];
|
|
5
|
+
/**
|
|
6
|
+
* Sets access control for the contract via constructor args.
|
|
7
|
+
*/
|
|
8
|
+
export declare function setAccessControl(c: ContractBuilder, access: Access): void;
|
|
9
|
+
/**
|
|
10
|
+
* Enables access control for the contract and restricts the given function with access control.
|
|
11
|
+
*
|
|
12
|
+
* If `caller` is provided, requires that the caller is the owner. Otherwise, requires that the owner is authorized.
|
|
13
|
+
*/
|
|
14
|
+
export declare function requireAccessControl(c: ContractBuilder, trait: BaseImplementedTrait, fn: BaseFunction, access: Access, caller?: string): void;
|
|
15
|
+
//# sourceMappingURL=set-access-control.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_ACCESS_CONTROL = exports.accessOptions = void 0;
|
|
4
|
+
exports.setAccessControl = setAccessControl;
|
|
5
|
+
exports.requireAccessControl = requireAccessControl;
|
|
6
|
+
exports.accessOptions = [false, 'ownable'];
|
|
7
|
+
exports.DEFAULT_ACCESS_CONTROL = 'ownable';
|
|
8
|
+
/**
|
|
9
|
+
* Sets access control for the contract via constructor args.
|
|
10
|
+
*/
|
|
11
|
+
function setAccessControl(c, access) {
|
|
12
|
+
switch (access) {
|
|
13
|
+
case false:
|
|
14
|
+
break;
|
|
15
|
+
case 'ownable': {
|
|
16
|
+
if (!c.ownable) {
|
|
17
|
+
c.ownable = true;
|
|
18
|
+
c.addUseClause('soroban_sdk', 'symbol_short');
|
|
19
|
+
c.addUseClause('soroban_sdk', 'Symbol');
|
|
20
|
+
c.addVariable({ name: 'OWNER', type: 'Symbol', value: `symbol_short!("OWNER")` });
|
|
21
|
+
c.addConstructorArgument({ name: 'owner', type: 'Address' });
|
|
22
|
+
c.addConstructorCode('e.storage().instance().set(&OWNER, &owner);');
|
|
23
|
+
}
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
default: {
|
|
27
|
+
const _ = access;
|
|
28
|
+
throw new Error('Unknown value for `access`');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Enables access control for the contract and restricts the given function with access control.
|
|
34
|
+
*
|
|
35
|
+
* If `caller` is provided, requires that the caller is the owner. Otherwise, requires that the owner is authorized.
|
|
36
|
+
*/
|
|
37
|
+
function requireAccessControl(c, trait, fn, access, caller) {
|
|
38
|
+
if (access === false) {
|
|
39
|
+
access = exports.DEFAULT_ACCESS_CONTROL;
|
|
40
|
+
}
|
|
41
|
+
setAccessControl(c, access);
|
|
42
|
+
switch (access) {
|
|
43
|
+
case 'ownable': {
|
|
44
|
+
c.addUseClause('soroban_sdk', 'Address');
|
|
45
|
+
const getOwner = 'let owner: Address = e.storage().instance().get(&OWNER).expect("owner should be set");';
|
|
46
|
+
if (caller) {
|
|
47
|
+
c.addUseClause('soroban_sdk', 'panic_with_error');
|
|
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
|
+
]);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
c.addFunctionCodeBefore(trait, fn, [getOwner, 'owner.require_auth();']);
|
|
58
|
+
}
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
default: {
|
|
62
|
+
const _ = access;
|
|
63
|
+
throw new Error('Unknown value for `access`');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=set-access-control.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ContractBuilder } from './contract';
|
|
2
|
+
export declare const infoOptions: readonly [{}, {
|
|
3
|
+
readonly license: "WTFPL";
|
|
4
|
+
}];
|
|
5
|
+
export declare const defaults: Info;
|
|
6
|
+
export type Info = {
|
|
7
|
+
license?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function setInfo(c: ContractBuilder, info: Info): void;
|
|
10
|
+
//# sourceMappingURL=set-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-info.d.ts","sourceRoot":"","sources":["../src/set-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,WAAW;;EAAsC,CAAC;AAE/D,eAAO,MAAM,QAAQ,EAAE,IAAyB,CAAC;AAEjD,MAAM,MAAM,IAAI,GAAG;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,OAAO,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAM5D"}
|
package/dist/set-info.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaults = exports.infoOptions = void 0;
|
|
4
|
+
exports.setInfo = setInfo;
|
|
5
|
+
exports.infoOptions = [{}, { license: 'WTFPL' }];
|
|
6
|
+
exports.defaults = { license: 'MIT' };
|
|
7
|
+
function setInfo(c, info) {
|
|
8
|
+
const { license } = info;
|
|
9
|
+
if (license) {
|
|
10
|
+
c.license = license;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=set-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-info.js","sourceRoot":"","sources":["../src/set-info.ts"],"names":[],"mappings":";;;AAUA,0BAMC;AAdY,QAAA,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAU,CAAC;AAElD,QAAA,QAAQ,GAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAMjD,SAAgB,OAAO,CAAC,CAAkB,EAAE,IAAU;IACpD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEzB,IAAI,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,CAAC;AACH,CAAC"}
|
package/dist/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":""}
|
package/dist/test.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
const fs_1 = require("fs");
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const ava_1 = __importDefault(require("ava"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const sources_1 = require("./generate/sources");
|
|
11
|
+
const test = ava_1.default;
|
|
12
|
+
test.serial('fungible result generated', async (t) => {
|
|
13
|
+
await testGenerate(t, 'Fungible');
|
|
14
|
+
});
|
|
15
|
+
async function testGenerate(t, kind) {
|
|
16
|
+
const generatedSourcesPath = path_1.default.join(os_1.default.tmpdir(), 'oz-wizard-stellar');
|
|
17
|
+
await fs_1.promises.rm(generatedSourcesPath, { force: true, recursive: true });
|
|
18
|
+
await (0, sources_1.writeGeneratedSources)(generatedSourcesPath, true, kind);
|
|
19
|
+
t.pass();
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
ADDED
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts to an identifier according to the rules in https://docs.cairo-lang.org/language_constructs/identifiers.html
|
|
3
|
+
*/
|
|
4
|
+
export declare function toIdentifier(str: string, capitalize?: boolean): string;
|
|
5
|
+
/**
|
|
6
|
+
* Converts to a ByteArray compatible string literal
|
|
7
|
+
*/
|
|
8
|
+
export declare function toByteArray(str: string): string;
|
|
9
|
+
declare const UINT_MAX_VALUES: {
|
|
10
|
+
readonly u8: bigint;
|
|
11
|
+
readonly u16: bigint;
|
|
12
|
+
readonly u32: bigint;
|
|
13
|
+
readonly u64: bigint;
|
|
14
|
+
readonly u128: bigint;
|
|
15
|
+
readonly u256: bigint;
|
|
16
|
+
};
|
|
17
|
+
export type UintType = keyof typeof UINT_MAX_VALUES;
|
|
18
|
+
/**
|
|
19
|
+
* Checks that a string/number value is a valid `uint` value and converts it to bigint
|
|
20
|
+
*/
|
|
21
|
+
export declare function toUint(value: number | string, field: string, type: UintType): bigint;
|
|
22
|
+
/**
|
|
23
|
+
* Checks that a string/number value is a valid `uint` value
|
|
24
|
+
*/
|
|
25
|
+
export declare function validateUint(value: number | string, field: string, type: UintType): void;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=convert-strings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-strings.d.ts","sourceRoot":"","sources":["../../src/utils/convert-strings.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAepE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAaD,QAAA,MAAM,eAAe;;;;;;;CAOX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,eAAe,CAAC;AAEpD;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAepF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAExF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toIdentifier = toIdentifier;
|
|
4
|
+
exports.toByteArray = toByteArray;
|
|
5
|
+
exports.toUint = toUint;
|
|
6
|
+
exports.validateUint = validateUint;
|
|
7
|
+
const error_1 = require("../error");
|
|
8
|
+
// TODO: Review and convert these to properly handle language restrictions for Stellar
|
|
9
|
+
/**
|
|
10
|
+
* Converts to an identifier according to the rules in https://docs.cairo-lang.org/language_constructs/identifiers.html
|
|
11
|
+
*/
|
|
12
|
+
function toIdentifier(str, capitalize = false) {
|
|
13
|
+
const result = str
|
|
14
|
+
.normalize('NFD')
|
|
15
|
+
.replace(/[\u0300-\u036f]/g, '') // remove accents
|
|
16
|
+
.replace(/^[^a-zA-Z_]+/, '')
|
|
17
|
+
.replace(/^(.)/, c => (capitalize ? c.toUpperCase() : c))
|
|
18
|
+
.replace(/[^\w]+(.?)/g, (_, c) => c.toUpperCase());
|
|
19
|
+
if (result.length === 0) {
|
|
20
|
+
throw new error_1.OptionsError({
|
|
21
|
+
name: 'Identifier is empty or does not have valid characters',
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Converts to a ByteArray compatible string literal
|
|
30
|
+
*/
|
|
31
|
+
function toByteArray(str) {
|
|
32
|
+
return str
|
|
33
|
+
.normalize('NFD')
|
|
34
|
+
.replace(/[\u0300-\u036f]/g, '') // remove accents
|
|
35
|
+
.replace(/[^\x20-\x7E]+/g, '') // remove non-ascii-printable characters
|
|
36
|
+
.replace(/(\\|")/g, (_, c) => '\\' + c); // escape backslash or double quotes
|
|
37
|
+
}
|
|
38
|
+
function maxValueOfUint(bits) {
|
|
39
|
+
if (bits <= 0) {
|
|
40
|
+
throw new Error(`Number of bits must be positive (actual '${bits}').`);
|
|
41
|
+
}
|
|
42
|
+
if (bits % 8 !== 0) {
|
|
43
|
+
throw new Error(`The number of bits must be a multiple of 8 (actual '${bits}').`);
|
|
44
|
+
}
|
|
45
|
+
const bytes = bits / 8;
|
|
46
|
+
return BigInt('0x' + 'ff'.repeat(bytes));
|
|
47
|
+
}
|
|
48
|
+
const UINT_MAX_VALUES = {
|
|
49
|
+
u8: maxValueOfUint(8),
|
|
50
|
+
u16: maxValueOfUint(16),
|
|
51
|
+
u32: maxValueOfUint(32),
|
|
52
|
+
u64: maxValueOfUint(64),
|
|
53
|
+
u128: maxValueOfUint(128),
|
|
54
|
+
u256: maxValueOfUint(256),
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Checks that a string/number value is a valid `uint` value and converts it to bigint
|
|
58
|
+
*/
|
|
59
|
+
function toUint(value, field, type) {
|
|
60
|
+
const valueAsStr = value.toString();
|
|
61
|
+
const isValidNumber = /^\d+$/.test(valueAsStr);
|
|
62
|
+
if (!isValidNumber) {
|
|
63
|
+
throw new error_1.OptionsError({
|
|
64
|
+
[field]: 'Not a valid number',
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const numValue = BigInt(valueAsStr);
|
|
68
|
+
if (numValue > UINT_MAX_VALUES[type]) {
|
|
69
|
+
throw new error_1.OptionsError({
|
|
70
|
+
[field]: `Value is greater than ${type} max value`,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return numValue;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Checks that a string/number value is a valid `uint` value
|
|
77
|
+
*/
|
|
78
|
+
function validateUint(value, field, type) {
|
|
79
|
+
const _ = toUint(value, field, type);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=convert-strings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-strings.js","sourceRoot":"","sources":["../../src/utils/convert-strings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BaseFunction } from '../contract';
|
|
2
|
+
type ImplicitNameFunction = Omit<BaseFunction, 'name'>;
|
|
3
|
+
export declare function defineFunctions<F extends string>(fns: Record<F, ImplicitNameFunction>): Record<F, BaseFunction>;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=define-functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-functions.d.ts","sourceRoot":"","sources":["../../src/utils/define-functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,KAAK,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAEvD,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,oBAAoB,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineFunctions = defineFunctions;
|
|
4
|
+
function defineFunctions(fns) {
|
|
5
|
+
return Object.fromEntries(Object.entries(fns).map(([name, fn]) => [name, Object.assign({ name }, fn)]));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=define-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-functions.js","sourceRoot":"","sources":["../../src/utils/define-functions.ts"],"names":[],"mappings":";;AAMA,0CAEC;AAFD,SAAgB,eAAe,CAAC,GAAyC;IACvE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1G,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type Lines = string | typeof whitespace | Lines[];
|
|
2
|
+
declare const whitespace: unique symbol;
|
|
3
|
+
export declare function formatLines(...lines: Lines[]): string;
|
|
4
|
+
export declare function spaceBetween(...lines: Lines[][]): Lines[];
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=format-lines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-lines.d.ts","sourceRoot":"","sources":["../../src/utils/format-lines.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,UAAU,GAAG,KAAK,EAAE,CAAC;AAEzD,QAAA,MAAM,UAAU,eAAuB,CAAC;AAExC,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAErD;AAcD,wBAAgB,YAAY,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,CAKzD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatLines = formatLines;
|
|
4
|
+
exports.spaceBetween = spaceBetween;
|
|
5
|
+
const whitespace = Symbol('whitespace');
|
|
6
|
+
function formatLines(...lines) {
|
|
7
|
+
return [...indentEach(0, lines)].join('\n') + '\n';
|
|
8
|
+
}
|
|
9
|
+
function* indentEach(indent, lines) {
|
|
10
|
+
for (const line of lines) {
|
|
11
|
+
if (line === whitespace) {
|
|
12
|
+
yield '';
|
|
13
|
+
}
|
|
14
|
+
else if (Array.isArray(line)) {
|
|
15
|
+
yield* indentEach(indent + 1, line);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
yield ' '.repeat(indent) + line;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function spaceBetween(...lines) {
|
|
23
|
+
return lines
|
|
24
|
+
.filter(l => l.length > 0)
|
|
25
|
+
.flatMap(l => [whitespace, ...l])
|
|
26
|
+
.slice(1);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=format-lines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-lines.js","sourceRoot":"","sources":["../../src/utils/format-lines.ts"],"names":[],"mappings":";;AAIA,kCAEC;AAcD,oCAKC;AAvBD,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAExC,SAAgB,WAAW,CAAC,GAAG,KAAc;IAC3C,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACrD,CAAC;AAED,QAAQ,CAAC,CAAC,UAAU,CAAC,MAAc,EAAE,KAAc;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC;QACX,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,GAAG,KAAgB;IAC9C,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACzB,OAAO,CAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;SACvC,KAAK,CAAC,CAAC,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sorted-by.d.ts","sourceRoot":"","sources":["../../src/utils/sorted-by.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,CAEtE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sorted-by.js","sourceRoot":"","sources":["../../src/utils/sorted-by.ts"],"names":[],"mappings":";;AAAA,4BAEC;AAFD,SAAgB,QAAQ,CAAI,EAAe,EAAE,EAAoB;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
|