@metamask/snaps-cli 0.18.1 → 0.19.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 (54) hide show
  1. package/dist/builders.d.ts +0 -1
  2. package/dist/builders.js +0 -6
  3. package/dist/builders.js.map +1 -1
  4. package/dist/cmds/build/buildHandler.js +7 -6
  5. package/dist/cmds/build/buildHandler.js.map +1 -1
  6. package/dist/cmds/build/bundle.js +3 -2
  7. package/dist/cmds/build/bundle.js.map +1 -1
  8. package/dist/cmds/build/index.js +0 -1
  9. package/dist/cmds/build/index.js.map +1 -1
  10. package/dist/cmds/eval/evalHandler.d.ts +1 -1
  11. package/dist/cmds/eval/evalHandler.js +8 -9
  12. package/dist/cmds/eval/evalHandler.js.map +1 -1
  13. package/dist/cmds/eval/index.js +1 -1
  14. package/dist/cmds/eval/index.js.map +1 -1
  15. package/dist/cmds/init/initHandler.js +8 -9
  16. package/dist/cmds/init/initHandler.js.map +1 -1
  17. package/dist/cmds/init/initUtils.d.ts +1 -1
  18. package/dist/cmds/init/initUtils.js +12 -12
  19. package/dist/cmds/init/initUtils.js.map +1 -1
  20. package/dist/cmds/manifest/manifestHandler.d.ts +1 -10
  21. package/dist/cmds/manifest/manifestHandler.js +23 -191
  22. package/dist/cmds/manifest/manifestHandler.js.map +1 -1
  23. package/dist/cmds/serve/serveHandler.js +6 -2
  24. package/dist/cmds/serve/serveHandler.js.map +1 -1
  25. package/dist/cmds/watch/index.js +0 -1
  26. package/dist/cmds/watch/index.js.map +1 -1
  27. package/dist/cmds/watch/watchHandler.js +6 -5
  28. package/dist/cmds/watch/watchHandler.js.map +1 -1
  29. package/dist/tsconfig.json +6 -1
  30. package/dist/utils/index.d.ts +0 -2
  31. package/dist/utils/index.js +0 -2
  32. package/dist/utils/index.js.map +1 -1
  33. package/dist/utils/misc.d.ts +0 -1
  34. package/dist/utils/misc.js +1 -3
  35. package/dist/utils/misc.js.map +1 -1
  36. package/package.json +4 -5
  37. package/dist/cmds/eval/eval-worker.d.ts +0 -1
  38. package/dist/cmds/eval/eval-worker.js +0 -33
  39. package/dist/cmds/eval/eval-worker.js.map +0 -1
  40. package/dist/cmds/eval/mock.d.ts +0 -14
  41. package/dist/cmds/eval/mock.js +0 -98
  42. package/dist/cmds/eval/mock.js.map +0 -1
  43. package/dist/cmds/eval/workerEval.d.ts +0 -8
  44. package/dist/cmds/eval/workerEval.js +0 -37
  45. package/dist/cmds/eval/workerEval.js.map +0 -1
  46. package/dist/utils/fs.d.ts +0 -24
  47. package/dist/utils/fs.js +0 -66
  48. package/dist/utils/fs.js.map +0 -1
  49. package/dist/utils/snap-config.__GENERATED__.d.ts +0 -2
  50. package/dist/utils/snap-config.__GENERATED__.js +0 -18
  51. package/dist/utils/snap-config.__GENERATED__.js.map +0 -1
  52. package/dist/utils/validate-fs.d.ts +0 -35
  53. package/dist/utils/validate-fs.js +0 -69
  54. package/dist/utils/validate-fs.js.map +0 -1
@@ -12,7 +12,6 @@ export declare type SnapsCliBuilders = {
12
12
  readonly stripComments: Readonly<Options>;
13
13
  readonly suppressWarnings: Readonly<Options>;
14
14
  readonly transpilationMode: Readonly<Options>;
15
- readonly transformHtmlComments: Readonly<Options>;
16
15
  readonly depsToTranspile: Readonly<Options>;
17
16
  readonly verboseErrors: Readonly<Options>;
18
17
  readonly writeManifest: Readonly<Options>;
package/dist/builders.js CHANGED
@@ -106,12 +106,6 @@ const builders = {
106
106
  default: TranspilationModes.localOnly,
107
107
  choices: Object.values(TranspilationModes),
108
108
  },
109
- transformHtmlComments: {
110
- type: 'boolean',
111
- describe: 'Whether to break up HTML comment tokens wherever they appear in your source code.',
112
- demandOption: true,
113
- default: true,
114
- },
115
109
  depsToTranspile: {
116
110
  type: 'array',
117
111
  describe: 'Transpile only the listed dependencies.',
@@ -1 +1 @@
1
- {"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":";;;AAuBA,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,mDAA6B,CAAA;IAC7B,6CAAuB,CAAA;IACvB,mCAAa,CAAA;AACf,CAAC,EAJW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAI7B;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,yCAAyB,CAAA;IACzB,yCAAyB,CAAA;AAC3B,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AAED,MAAM,QAAQ,GAAqB;IACjC,MAAM,EAAE;QACN,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,kBAAkB;QAC5B,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,gBAAgB;KAC1B;IAED,IAAI,EAAE;QACJ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,kBAAkB;QAC5B,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,MAAM;KAChB;IAED,IAAI,EAAE;QACJ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,wCAAwC;QAClD,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,IAAI;KACd;IAED,QAAQ,EAAE;QACR,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,6BAA6B;QACvC,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,IAAI;KACd;IAED,IAAI,EAAE;QACJ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,+BAA+B;QACzC,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC,GAAY,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;aACzC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IAED,WAAW,EAAE;QACX,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,kBAAkB;QAC5B,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,WAAW;KACrB;IAED,IAAI,EAAE;QACJ,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,uBAAuB;QACjC,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,GAAG;KACb;IAED,UAAU,EAAE;QACV,QAAQ,EAAE,mCAAmC;QAC7C,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,KAAK;KACf;IAED,GAAG,EAAE;QACH,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,aAAa;QACvB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,cAAc;KACxB;IAED,aAAa,EAAE;QACb,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,uDAAuD;QACjE,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,IAAI;KACd;IAED,gBAAgB,EAAE;QAChB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,8BAA8B;QACxC,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,KAAK;KACf;IAED,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,QAAQ,EACN,iHAAiH;QACnH,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,kBAAkB,CAAC,SAAS;QACrC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;KAC3C;IAED,qBAAqB,EAAE;QACrB,IAAI,EAAE,SAAS;QACf,QAAQ,EACN,mFAAmF;QACrF,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,IAAI;KACd;IAED,eAAe,EAAE;QACf,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,yCAAyC;QACnD,YAAY,EAAE,KAAK;KACpB;IAED,aAAa,EAAE;QACb,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,yBAAyB;QACnC,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,IAAI;KACd;IAED,aAAa,EAAE;QACb,QAAQ,EAAE,kDAAkD;QAC5D,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,IAAI;KACd;IAED,KAAK,EAAE;QACL,QAAQ,EAAE,wCAAwC;QAClD,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,IAAI;KACd;IAED,QAAQ,EAAE;QACR,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,0DAA0D;QACpE,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,YAAY,CAAC,UAAU;QAChC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;KACrC;CACF,CAAC;AAEF,kBAAe,QAAQ,CAAC","sourcesContent":["import { Options } from 'yargs';\n\nexport type SnapsCliBuilders = {\n readonly bundle: Readonly<Options>;\n readonly dist: Readonly<Options>;\n readonly eval: Readonly<Options>;\n readonly manifest: Readonly<Options>;\n readonly outfileName: Readonly<Options>;\n readonly port: Readonly<Options>;\n readonly root: Readonly<Options>;\n readonly sourceMaps: Readonly<Options>;\n readonly src: Readonly<Options>;\n readonly stripComments: Readonly<Options>;\n readonly suppressWarnings: Readonly<Options>;\n readonly transpilationMode: Readonly<Options>;\n readonly transformHtmlComments: Readonly<Options>;\n readonly depsToTranspile: Readonly<Options>;\n readonly verboseErrors: Readonly<Options>;\n readonly writeManifest: Readonly<Options>;\n readonly serve: Readonly<Options>;\n readonly template: Readonly<Options>;\n};\n\nexport enum TranspilationModes {\n localAndDeps = 'localAndDeps',\n localOnly = 'localOnly',\n none = 'none',\n}\n\nexport enum TemplateType {\n TypeScript = 'typescript',\n JavaScript = 'javascript',\n}\n\nconst builders: SnapsCliBuilders = {\n bundle: {\n alias: 'b',\n describe: 'Snap bundle file',\n type: 'string',\n demandOption: true,\n normalize: true,\n default: 'dist/bundle.js',\n },\n\n dist: {\n alias: 'd',\n describe: 'Output directory',\n type: 'string',\n demandOption: true,\n normalize: true,\n default: 'dist',\n },\n\n eval: {\n alias: 'e',\n describe: 'Attempt to evaluate Snap bundle in SES',\n type: 'boolean',\n demandOption: false,\n default: true,\n },\n\n manifest: {\n alias: 'm',\n describe: 'Validate snap.manifest.json',\n type: 'boolean',\n demandOption: false,\n default: true,\n },\n\n port: {\n alias: 'p',\n describe: 'Local server port for testing',\n type: 'number',\n demandOption: true,\n default: 8081,\n coerce: (arg: unknown) => {\n const port = Number.parseInt(String(arg), 10);\n if (Number.isNaN(port)) {\n throw new Error(`Invalid port: ${arg}`);\n }\n return port;\n },\n },\n\n outfileName: {\n alias: 'n',\n describe: 'Output file name',\n type: 'string',\n demandOption: false,\n default: 'bundle.js',\n },\n\n root: {\n alias: 'r',\n describe: 'Server root directory',\n type: 'string',\n demandOption: true,\n normalize: true,\n default: '.',\n },\n\n sourceMaps: {\n describe: 'Whether builds include sourcemaps',\n type: 'boolean',\n demandOption: false,\n default: false,\n },\n\n src: {\n alias: 's',\n describe: 'Source file',\n type: 'string',\n demandOption: true,\n normalize: true,\n default: 'src/index.js',\n },\n\n stripComments: {\n alias: 'strip',\n describe: 'Whether to remove code comments from the build output',\n type: 'boolean',\n demandOption: false,\n default: true,\n },\n\n suppressWarnings: {\n type: 'boolean',\n describe: 'Whether to suppress warnings',\n demandOption: false,\n default: false,\n },\n\n transpilationMode: {\n type: 'string',\n describe:\n 'Whether to use Babel to transpile all source code (including dependencies), local source code only, or nothing.',\n demandOption: false,\n default: TranspilationModes.localOnly,\n choices: Object.values(TranspilationModes),\n },\n\n transformHtmlComments: {\n type: 'boolean',\n describe:\n 'Whether to break up HTML comment tokens wherever they appear in your source code.',\n demandOption: true,\n default: true,\n },\n\n depsToTranspile: {\n type: 'array',\n describe: 'Transpile only the listed dependencies.',\n demandOption: false,\n },\n\n verboseErrors: {\n type: 'boolean',\n describe: 'Display original errors',\n demandOption: false,\n default: true,\n },\n\n writeManifest: {\n describe: 'Make necessary changes to the Snap manifest file',\n type: 'boolean',\n demandOption: false,\n default: true,\n },\n\n serve: {\n describe: 'Serve Snap file(s) locally for testing',\n type: 'boolean',\n demandOption: false,\n default: true,\n },\n\n template: {\n alias: 't',\n describe: 'Specify which template to use (TypeScript or JavaScript)',\n type: 'string',\n demandOption: false,\n default: TemplateType.TypeScript,\n choices: Object.values(TemplateType),\n },\n};\n\nexport default builders;\n"]}
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"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","sourcesContent":["import { Options } from 'yargs';\n\nexport type SnapsCliBuilders = {\n readonly bundle: Readonly<Options>;\n readonly dist: Readonly<Options>;\n readonly eval: Readonly<Options>;\n readonly manifest: Readonly<Options>;\n readonly outfileName: Readonly<Options>;\n readonly port: Readonly<Options>;\n readonly root: Readonly<Options>;\n readonly sourceMaps: Readonly<Options>;\n readonly src: Readonly<Options>;\n readonly stripComments: Readonly<Options>;\n readonly suppressWarnings: Readonly<Options>;\n readonly transpilationMode: Readonly<Options>;\n readonly depsToTranspile: Readonly<Options>;\n readonly verboseErrors: Readonly<Options>;\n readonly writeManifest: Readonly<Options>;\n readonly serve: Readonly<Options>;\n readonly template: Readonly<Options>;\n};\n\nexport enum TranspilationModes {\n localAndDeps = 'localAndDeps',\n localOnly = 'localOnly',\n none = 'none',\n}\n\nexport enum TemplateType {\n TypeScript = 'typescript',\n JavaScript = 'javascript',\n}\n\nconst builders: SnapsCliBuilders = {\n bundle: {\n alias: 'b',\n describe: 'Snap bundle file',\n type: 'string',\n demandOption: true,\n normalize: true,\n default: 'dist/bundle.js',\n },\n\n dist: {\n alias: 'd',\n describe: 'Output directory',\n type: 'string',\n demandOption: true,\n normalize: true,\n default: 'dist',\n },\n\n eval: {\n alias: 'e',\n describe: 'Attempt to evaluate Snap bundle in SES',\n type: 'boolean',\n demandOption: false,\n default: true,\n },\n\n manifest: {\n alias: 'm',\n describe: 'Validate snap.manifest.json',\n type: 'boolean',\n demandOption: false,\n default: true,\n },\n\n port: {\n alias: 'p',\n describe: 'Local server port for testing',\n type: 'number',\n demandOption: true,\n default: 8081,\n coerce: (arg: unknown) => {\n const port = Number.parseInt(String(arg), 10);\n if (Number.isNaN(port)) {\n throw new Error(`Invalid port: ${arg}`);\n }\n return port;\n },\n },\n\n outfileName: {\n alias: 'n',\n describe: 'Output file name',\n type: 'string',\n demandOption: false,\n default: 'bundle.js',\n },\n\n root: {\n alias: 'r',\n describe: 'Server root directory',\n type: 'string',\n demandOption: true,\n normalize: true,\n default: '.',\n },\n\n sourceMaps: {\n describe: 'Whether builds include sourcemaps',\n type: 'boolean',\n demandOption: false,\n default: false,\n },\n\n src: {\n alias: 's',\n describe: 'Source file',\n type: 'string',\n demandOption: true,\n normalize: true,\n default: 'src/index.js',\n },\n\n stripComments: {\n alias: 'strip',\n describe: 'Whether to remove code comments from the build output',\n type: 'boolean',\n demandOption: false,\n default: true,\n },\n\n suppressWarnings: {\n type: 'boolean',\n describe: 'Whether to suppress warnings',\n demandOption: false,\n default: false,\n },\n\n transpilationMode: {\n type: 'string',\n describe:\n 'Whether to use Babel to transpile all source code (including dependencies), local source code only, or nothing.',\n demandOption: false,\n default: TranspilationModes.localOnly,\n choices: Object.values(TranspilationModes),\n },\n\n depsToTranspile: {\n type: 'array',\n describe: 'Transpile only the listed dependencies.',\n demandOption: false,\n },\n\n verboseErrors: {\n type: 'boolean',\n describe: 'Display original errors',\n demandOption: false,\n default: true,\n },\n\n writeManifest: {\n describe: 'Make necessary changes to the Snap manifest file',\n type: 'boolean',\n demandOption: false,\n default: true,\n },\n\n serve: {\n describe: 'Serve Snap file(s) locally for testing',\n type: 'boolean',\n demandOption: false,\n default: true,\n },\n\n template: {\n alias: 't',\n describe: 'Specify which template to use (TypeScript or JavaScript)',\n type: 'string',\n demandOption: false,\n default: TemplateType.TypeScript,\n choices: Object.values(TemplateType),\n },\n};\n\nexport default builders;\n"]}
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.build = void 0;
4
+ const snap_utils_1 = require("@metamask/snap-utils");
4
5
  const utils_1 = require("../../utils");
5
- const evalHandler_1 = require("../eval/evalHandler");
6
6
  const manifestHandler_1 = require("../manifest/manifestHandler");
7
+ const evalHandler_1 = require("../eval/evalHandler");
7
8
  const bundle_1 = require("./bundle");
8
9
  /**
9
10
  * Builds all files in the given source directory to the given destination
@@ -19,14 +20,14 @@ const bundle_1 = require("./bundle");
19
20
  async function build(argv) {
20
21
  const { src, dist, outfileName } = argv;
21
22
  if (outfileName) {
22
- (0, utils_1.validateOutfileName)(outfileName);
23
+ (0, snap_utils_1.validateOutfileName)(outfileName);
23
24
  }
24
- await (0, utils_1.validateFilePath)(src);
25
- await (0, utils_1.validateDirPath)(dist, true);
26
- const outfilePath = (0, utils_1.getOutfilePath)(dist, outfileName);
25
+ await (0, snap_utils_1.validateFilePath)(src);
26
+ await (0, snap_utils_1.validateDirPath)(dist, true);
27
+ const outfilePath = (0, snap_utils_1.getOutfilePath)(dist, outfileName);
27
28
  const result = await (0, bundle_1.bundle)(src, outfilePath, argv, (0, utils_1.loadConfig)().bundlerCustomizer);
28
29
  if (result && argv.eval) {
29
- await (0, evalHandler_1.snapEval)(Object.assign(Object.assign({}, argv), { bundle: outfilePath }));
30
+ await (0, evalHandler_1.evalHandler)(Object.assign(Object.assign({}, argv), { bundle: outfilePath }));
30
31
  }
31
32
  if (argv.manifest) {
32
33
  await (0, manifestHandler_1.manifestHandler)(argv);
@@ -1 +1 @@
1
- {"version":3,"file":"buildHandler.js","sourceRoot":"","sources":["../../../src/cmds/build/buildHandler.ts"],"names":[],"mappings":";;;AACA,uCAMqB;AACrB,qDAA+C;AAC/C,iEAA8D;AAC9D,qCAAkC;AAElC;;;;;;;;;;GAUG;AACI,KAAK,UAAU,KAAK,CAAC,IAAe;IACzC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACxC,IAAI,WAAW,EAAE;QACf,IAAA,2BAAmB,EAAC,WAAqB,CAAC,CAAC;KAC5C;IACD,MAAM,IAAA,wBAAgB,EAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAA,uBAAe,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAElC,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,WAAqB,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,IAAA,eAAM,EACzB,GAAG,EACH,WAAW,EACX,IAAI,EACJ,IAAA,kBAAU,GAAE,CAAC,iBAAiB,CAC/B,CAAC;IACF,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;QACvB,MAAM,IAAA,sBAAQ,kCAAM,IAAI,KAAE,MAAM,EAAE,WAAW,IAAG,CAAC;KAClD;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjB,MAAM,IAAA,iCAAe,EAAC,IAAI,CAAC,CAAC;KAC7B;AACH,CAAC;AAtBD,sBAsBC","sourcesContent":["import { YargsArgs } from '../../types/yargs';\nimport {\n getOutfilePath,\n loadConfig,\n validateDirPath,\n validateFilePath,\n validateOutfileName,\n} from '../../utils';\nimport { snapEval } from '../eval/evalHandler';\nimport { manifestHandler } from '../manifest/manifestHandler';\nimport { bundle } from './bundle';\n\n/**\n * Builds all files in the given source directory to the given destination\n * directory.\n *\n * Creates destination directory if it doesn't exist.\n *\n * @param argv - Argv from Yargs.\n * @param argv.src - The source file path.\n * @param argv.dist - The output directory path.\n * @param argv.outfileName - The output file name.\n */\nexport async function build(argv: YargsArgs): Promise<void> {\n const { src, dist, outfileName } = argv;\n if (outfileName) {\n validateOutfileName(outfileName as string);\n }\n await validateFilePath(src);\n await validateDirPath(dist, true);\n\n const outfilePath = getOutfilePath(dist, outfileName as string);\n const result = await bundle(\n src,\n outfilePath,\n argv,\n loadConfig().bundlerCustomizer,\n );\n if (result && argv.eval) {\n await snapEval({ ...argv, bundle: outfilePath });\n }\n\n if (argv.manifest) {\n await manifestHandler(argv);\n }\n}\n"]}
1
+ {"version":3,"file":"buildHandler.js","sourceRoot":"","sources":["../../../src/cmds/build/buildHandler.ts"],"names":[],"mappings":";;;AAAA,qDAK8B;AAE9B,uCAAyC;AACzC,iEAA8D;AAC9D,qDAAkD;AAClD,qCAAkC;AAElC;;;;;;;;;;GAUG;AACI,KAAK,UAAU,KAAK,CAAC,IAAe;IACzC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACxC,IAAI,WAAW,EAAE;QACf,IAAA,gCAAmB,EAAC,WAAqB,CAAC,CAAC;KAC5C;IACD,MAAM,IAAA,6BAAgB,EAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAA,4BAAe,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAElC,MAAM,WAAW,GAAG,IAAA,2BAAc,EAAC,IAAI,EAAE,WAAqB,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,IAAA,eAAM,EACzB,GAAG,EACH,WAAW,EACX,IAAI,EACJ,IAAA,kBAAU,GAAE,CAAC,iBAAiB,CAC/B,CAAC;IACF,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;QACvB,MAAM,IAAA,yBAAW,kCAAM,IAAI,KAAE,MAAM,EAAE,WAAW,IAAG,CAAC;KACrD;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjB,MAAM,IAAA,iCAAe,EAAC,IAAI,CAAC,CAAC;KAC7B;AACH,CAAC;AAtBD,sBAsBC","sourcesContent":["import {\n getOutfilePath,\n validateDirPath,\n validateFilePath,\n validateOutfileName,\n} from '@metamask/snap-utils';\nimport { YargsArgs } from '../../types/yargs';\nimport { loadConfig } from '../../utils';\nimport { manifestHandler } from '../manifest/manifestHandler';\nimport { evalHandler } from '../eval/evalHandler';\nimport { bundle } from './bundle';\n\n/**\n * Builds all files in the given source directory to the given destination\n * directory.\n *\n * Creates destination directory if it doesn't exist.\n *\n * @param argv - Argv from Yargs.\n * @param argv.src - The source file path.\n * @param argv.dist - The output directory path.\n * @param argv.outfileName - The output file name.\n */\nexport async function build(argv: YargsArgs): Promise<void> {\n const { src, dist, outfileName } = argv;\n if (outfileName) {\n validateOutfileName(outfileName as string);\n }\n await validateFilePath(src);\n await validateDirPath(dist, true);\n\n const outfilePath = getOutfilePath(dist, outfileName as string);\n const result = await bundle(\n src,\n outfilePath,\n argv,\n loadConfig().bundlerCustomizer,\n );\n if (result && argv.eval) {\n await evalHandler({ ...argv, bundle: outfilePath });\n }\n\n if (argv.manifest) {\n await manifestHandler(argv);\n }\n}\n"]}
@@ -50,12 +50,13 @@ function bundle(src, dest, argv, bundlerTransform) {
50
50
  require('@babel/plugin-proposal-object-rest-spread'),
51
51
  require('@babel/plugin-proposal-optional-chaining'),
52
52
  require('@babel/plugin-proposal-nullish-coalescing-operator'),
53
- ] }, babelifyOptions));
53
+ ], parserOpts: {
54
+ attachComment: !argv.stripComments,
55
+ } }, babelifyOptions));
54
56
  }
55
57
  bundlerTransform === null || bundlerTransform === void 0 ? void 0 : bundlerTransform(bundler);
56
58
  bundler.plugin(snaps_browserify_plugin_1.default, {
57
59
  stripComments: argv.stripComments,
58
- transformHtmlComments: argv.transformHtmlComments,
59
60
  });
60
61
  bundler.bundle(async (bundleError, bundleBuffer) => await (0, utils_1.writeBundleFile)({
61
62
  bundleError,
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../src/cmds/build/bundle.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA0D;AAC1D,gGAAuD;AACvD,6CAAoD;AAEpD,mCAA+D;AAE/D,+EAA+E;AAC/E,mEAAmE;AACnE,mHAAmH;AAEnH;;;;;;;;;;;GAWG;AACH,SAAgB,MAAM,CACpB,GAAW,EACX,IAAY,EACZ,IAAe,EACf,gBAAsD;IAEtD,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,eAAe,GAAG,IAAA,2BAAmB,EAAC,IAAW,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,GAAG,EAAE;YAC9B,KAAK;YACL,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;YAC1B,wEAAwE;YACxE,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QAEH,IAAI,iBAAiB,KAAK,6BAAkB,CAAC,IAAI,EAAE;YACjD,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,kBACnC,MAAM,EAAE,iBAAiB,KAAK,6BAAkB,CAAC,YAAY,EAC7D,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAC1B,OAAO,EAAE;oBACP,OAAO,CAAC,0BAA0B,CAAC;oBACnC;wBACE,OAAO,CAAC,mBAAmB,CAAC;wBAC5B;4BACE,OAAO,EAAE;gCACP,QAAQ,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;6BAC5C;yBACF;qBACF;iBACF,EACD,OAAO,EAAE;oBACP,OAAO,CAAC,iCAAiC,CAAC;oBAC1C,OAAO,CAAC,yCAAyC,CAAC;oBAClD,OAAO,CAAC,2CAA2C,CAAC;oBACpD,OAAO,CAAC,0CAA0C,CAAC;oBACnD,OAAO,CAAC,oDAAoD,CAAC;iBAC9D,IACG,eAAuB,EAC3B,CAAC;SACJ;QAED,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAG,OAAO,CAAC,CAAC;QAE5B,OAAO,CAAC,MAAM,CAAC,iCAAM,EAAE;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;SAClD,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,CACZ,KAAK,EAAE,WAAW,EAAE,YAAoB,EAAE,EAAE,CAC1C,MAAM,IAAA,uBAAe,EAAC;YACpB,WAAW;YACX,YAAY;YACZ,GAAG;YACH,IAAI;YACJ,OAAO;SACR,CAAC,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AA5DD,wBA4DC","sourcesContent":["import browserify, { BrowserifyObject } from 'browserify';\nimport plugin from '@metamask/snaps-browserify-plugin';\nimport { TranspilationModes } from '../../builders';\nimport { YargsArgs } from '../../types/yargs';\nimport { processDependencies, writeBundleFile } from './utils';\n\n// We need to statically import all Browserify transforms and all Babel presets\n// and plugins, and calling `require` is the sanest way to do that.\n/* eslint-disable @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, node/global-require */\n\n/**\n * Builds a Snap bundle JS file from its JavaScript source.\n *\n * @param src - The source file path.\n * @param dest - The destination file path.\n * @param argv - Arguments as an object generated by `yargs`.\n * @param argv.sourceMaps - Whether to output sourcemaps.\n * @param argv.stripComments - Whether to remove comments from code.\n * @param argv.transpilationMode - The Babel transpilation mode.\n * @param bundlerTransform - An optional function which can be used to transform\n * the Browserify instance, e.g., adding a custom transform or plugin.\n */\nexport function bundle(\n src: string,\n dest: string,\n argv: YargsArgs,\n bundlerTransform?: (bundler: BrowserifyObject) => void,\n): Promise<boolean> {\n const { sourceMaps: debug, transpilationMode } = argv;\n const babelifyOptions = processDependencies(argv as any);\n return new Promise((resolve, _reject) => {\n const bundler = browserify(src, {\n debug,\n extensions: ['.js', '.ts'],\n // Standalone is required to properly support Snaps using module.exports\n standalone: '<snap>',\n });\n\n if (transpilationMode !== TranspilationModes.none) {\n bundler.transform(require('babelify'), {\n global: transpilationMode === TranspilationModes.localAndDeps,\n extensions: ['.js', '.ts'],\n presets: [\n require('@babel/preset-typescript'),\n [\n require('@babel/preset-env'),\n {\n targets: {\n browsers: ['chrome >= 66', 'firefox >= 68'],\n },\n },\n ],\n ],\n plugins: [\n require('@babel/plugin-transform-runtime'),\n require('@babel/plugin-proposal-class-properties'),\n require('@babel/plugin-proposal-object-rest-spread'),\n require('@babel/plugin-proposal-optional-chaining'),\n require('@babel/plugin-proposal-nullish-coalescing-operator'),\n ],\n ...(babelifyOptions as any),\n });\n }\n\n bundlerTransform?.(bundler);\n\n bundler.plugin(plugin, {\n stripComments: argv.stripComments,\n transformHtmlComments: argv.transformHtmlComments,\n });\n\n bundler.bundle(\n async (bundleError, bundleBuffer: Buffer) =>\n await writeBundleFile({\n bundleError,\n bundleBuffer,\n src,\n dest,\n resolve,\n }),\n );\n });\n}\n"]}
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../src/cmds/build/bundle.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA0D;AAC1D,gGAAuD;AACvD,6CAAoD;AAEpD,mCAA+D;AAE/D,+EAA+E;AAC/E,mEAAmE;AACnE,mHAAmH;AAEnH;;;;;;;;;;;GAWG;AACH,SAAgB,MAAM,CACpB,GAAW,EACX,IAAY,EACZ,IAAe,EACf,gBAAsD;IAEtD,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,eAAe,GAAG,IAAA,2BAAmB,EAAC,IAAW,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,GAAG,EAAE;YAC9B,KAAK;YACL,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;YAC1B,wEAAwE;YACxE,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QAEH,IAAI,iBAAiB,KAAK,6BAAkB,CAAC,IAAI,EAAE;YACjD,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,kBACnC,MAAM,EAAE,iBAAiB,KAAK,6BAAkB,CAAC,YAAY,EAC7D,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAC1B,OAAO,EAAE;oBACP,OAAO,CAAC,0BAA0B,CAAC;oBACnC;wBACE,OAAO,CAAC,mBAAmB,CAAC;wBAC5B;4BACE,OAAO,EAAE;gCACP,QAAQ,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;6BAC5C;yBACF;qBACF;iBACF,EACD,OAAO,EAAE;oBACP,OAAO,CAAC,iCAAiC,CAAC;oBAC1C,OAAO,CAAC,yCAAyC,CAAC;oBAClD,OAAO,CAAC,2CAA2C,CAAC;oBACpD,OAAO,CAAC,0CAA0C,CAAC;oBACnD,OAAO,CAAC,oDAAoD,CAAC;iBAC9D,EACD,UAAU,EAAE;oBACV,aAAa,EAAE,CAAC,IAAI,CAAC,aAAa;iBACnC,IACG,eAAuB,EAC3B,CAAC;SACJ;QAED,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAG,OAAO,CAAC,CAAC;QAE5B,OAAO,CAAC,MAAM,CAAC,iCAAM,EAAE;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,CACZ,KAAK,EAAE,WAAW,EAAE,YAAoB,EAAE,EAAE,CAC1C,MAAM,IAAA,uBAAe,EAAC;YACpB,WAAW;YACX,YAAY;YACZ,GAAG;YACH,IAAI;YACJ,OAAO;SACR,CAAC,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AA9DD,wBA8DC","sourcesContent":["import browserify, { BrowserifyObject } from 'browserify';\nimport plugin from '@metamask/snaps-browserify-plugin';\nimport { TranspilationModes } from '../../builders';\nimport { YargsArgs } from '../../types/yargs';\nimport { processDependencies, writeBundleFile } from './utils';\n\n// We need to statically import all Browserify transforms and all Babel presets\n// and plugins, and calling `require` is the sanest way to do that.\n/* eslint-disable @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, node/global-require */\n\n/**\n * Builds a Snap bundle JS file from its JavaScript source.\n *\n * @param src - The source file path.\n * @param dest - The destination file path.\n * @param argv - Arguments as an object generated by `yargs`.\n * @param argv.sourceMaps - Whether to output sourcemaps.\n * @param argv.stripComments - Whether to remove comments from code.\n * @param argv.transpilationMode - The Babel transpilation mode.\n * @param bundlerTransform - An optional function which can be used to transform\n * the Browserify instance, e.g., adding a custom transform or plugin.\n */\nexport function bundle(\n src: string,\n dest: string,\n argv: YargsArgs,\n bundlerTransform?: (bundler: BrowserifyObject) => void,\n): Promise<boolean> {\n const { sourceMaps: debug, transpilationMode } = argv;\n const babelifyOptions = processDependencies(argv as any);\n return new Promise((resolve, _reject) => {\n const bundler = browserify(src, {\n debug,\n extensions: ['.js', '.ts'],\n // Standalone is required to properly support Snaps using module.exports\n standalone: '<snap>',\n });\n\n if (transpilationMode !== TranspilationModes.none) {\n bundler.transform(require('babelify'), {\n global: transpilationMode === TranspilationModes.localAndDeps,\n extensions: ['.js', '.ts'],\n presets: [\n require('@babel/preset-typescript'),\n [\n require('@babel/preset-env'),\n {\n targets: {\n browsers: ['chrome >= 66', 'firefox >= 68'],\n },\n },\n ],\n ],\n plugins: [\n require('@babel/plugin-transform-runtime'),\n require('@babel/plugin-proposal-class-properties'),\n require('@babel/plugin-proposal-object-rest-spread'),\n require('@babel/plugin-proposal-optional-chaining'),\n require('@babel/plugin-proposal-nullish-coalescing-operator'),\n ],\n parserOpts: {\n attachComment: !argv.stripComments,\n },\n ...(babelifyOptions as any),\n });\n }\n\n bundlerTransform?.(bundler);\n\n bundler.plugin(plugin, {\n stripComments: argv.stripComments,\n });\n\n bundler.bundle(\n async (bundleError, bundleBuffer: Buffer) =>\n await writeBundleFile({\n bundleError,\n bundleBuffer,\n src,\n dest,\n resolve,\n }),\n );\n });\n}\n"]}
@@ -19,7 +19,6 @@ module.exports = {
19
19
  .option('stripComments', builders_1.default.stripComments)
20
20
  .option('transpilationMode', builders_1.default.transpilationMode)
21
21
  .option('depsToTranspile', builders_1.default.depsToTranspile)
22
- .option('transformHtmlComments', builders_1.default.transformHtmlComments)
23
22
  .option('writeManifest', builders_1.default.writeManifest)
24
23
  .implies('writeManifest', 'manifest')
25
24
  .implies('depsToTranspile', 'transpilationMode')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmds/build/index.ts"],"names":[],"mappings":";;;;AACA,8DAAsC;AAEtC,iDAAuC;AACvC,mCAAsD;AAEtD,iBAAS;IACP,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC;IACvB,IAAI,EAAE,wBAAwB;IAC9B,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE;QAC5B,IAAI;aACD,MAAM,CAAC,MAAM,EAAE,kBAAQ,CAAC,IAAI,CAAC;aAC7B,MAAM,CAAC,MAAM,EAAE,kBAAQ,CAAC,IAAI,CAAC;aAC7B,MAAM,CAAC,UAAU,EAAE,kBAAQ,CAAC,QAAQ,CAAC;aACrC,MAAM,CAAC,aAAa,EAAE,kBAAQ,CAAC,WAAW,CAAC;aAC3C,MAAM,CAAC,YAAY,EAAE,kBAAQ,CAAC,UAAU,CAAC;aACzC,MAAM,CAAC,KAAK,EAAE,kBAAQ,CAAC,GAAG,CAAC;aAC3B,MAAM,CAAC,eAAe,EAAE,kBAAQ,CAAC,aAAa,CAAC;aAC/C,MAAM,CAAC,mBAAmB,EAAE,kBAAQ,CAAC,iBAAiB,CAAC;aACvD,MAAM,CAAC,iBAAiB,EAAE,kBAAQ,CAAC,eAAe,CAAC;aACnD,MAAM,CAAC,uBAAuB,EAAE,kBAAQ,CAAC,qBAAqB,CAAC;aAC/D,MAAM,CAAC,eAAe,EAAE,kBAAQ,CAAC,aAAa,CAAC;aAC/C,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC;aACpC,OAAO,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;aAC/C,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mCAA2B,EAAC,IAAW,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,CAAC,IAAe,EAAE,EAAE,CAAC,IAAA,oBAAK,EAAC,IAAI,CAAC;CAC1C,CAAC","sourcesContent":["import yargs from 'yargs';\nimport builders from '../../builders';\nimport { YargsArgs } from '../../types/yargs';\nimport { build } from './buildHandler';\nimport { processInvalidTranspilation } from './utils';\n\nexport = {\n command: ['build', 'b'],\n desc: 'Build Snap from source',\n builder: (yarg: yargs.Argv) => {\n yarg\n .option('dist', builders.dist)\n .option('eval', builders.eval)\n .option('manifest', builders.manifest)\n .option('outfileName', builders.outfileName)\n .option('sourceMaps', builders.sourceMaps)\n .option('src', builders.src)\n .option('stripComments', builders.stripComments)\n .option('transpilationMode', builders.transpilationMode)\n .option('depsToTranspile', builders.depsToTranspile)\n .option('transformHtmlComments', builders.transformHtmlComments)\n .option('writeManifest', builders.writeManifest)\n .implies('writeManifest', 'manifest')\n .implies('depsToTranspile', 'transpilationMode')\n .middleware((argv) => processInvalidTranspilation(argv as any));\n },\n handler: (argv: YargsArgs) => build(argv),\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmds/build/index.ts"],"names":[],"mappings":";;;;AACA,8DAAsC;AAEtC,iDAAuC;AACvC,mCAAsD;AAEtD,iBAAS;IACP,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC;IACvB,IAAI,EAAE,wBAAwB;IAC9B,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE;QAC5B,IAAI;aACD,MAAM,CAAC,MAAM,EAAE,kBAAQ,CAAC,IAAI,CAAC;aAC7B,MAAM,CAAC,MAAM,EAAE,kBAAQ,CAAC,IAAI,CAAC;aAC7B,MAAM,CAAC,UAAU,EAAE,kBAAQ,CAAC,QAAQ,CAAC;aACrC,MAAM,CAAC,aAAa,EAAE,kBAAQ,CAAC,WAAW,CAAC;aAC3C,MAAM,CAAC,YAAY,EAAE,kBAAQ,CAAC,UAAU,CAAC;aACzC,MAAM,CAAC,KAAK,EAAE,kBAAQ,CAAC,GAAG,CAAC;aAC3B,MAAM,CAAC,eAAe,EAAE,kBAAQ,CAAC,aAAa,CAAC;aAC/C,MAAM,CAAC,mBAAmB,EAAE,kBAAQ,CAAC,iBAAiB,CAAC;aACvD,MAAM,CAAC,iBAAiB,EAAE,kBAAQ,CAAC,eAAe,CAAC;aACnD,MAAM,CAAC,eAAe,EAAE,kBAAQ,CAAC,aAAa,CAAC;aAC/C,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC;aACpC,OAAO,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;aAC/C,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mCAA2B,EAAC,IAAW,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,CAAC,IAAe,EAAE,EAAE,CAAC,IAAA,oBAAK,EAAC,IAAI,CAAC;CAC1C,CAAC","sourcesContent":["import yargs from 'yargs';\nimport builders from '../../builders';\nimport { YargsArgs } from '../../types/yargs';\nimport { build } from './buildHandler';\nimport { processInvalidTranspilation } from './utils';\n\nexport = {\n command: ['build', 'b'],\n desc: 'Build Snap from source',\n builder: (yarg: yargs.Argv) => {\n yarg\n .option('dist', builders.dist)\n .option('eval', builders.eval)\n .option('manifest', builders.manifest)\n .option('outfileName', builders.outfileName)\n .option('sourceMaps', builders.sourceMaps)\n .option('src', builders.src)\n .option('stripComments', builders.stripComments)\n .option('transpilationMode', builders.transpilationMode)\n .option('depsToTranspile', builders.depsToTranspile)\n .option('writeManifest', builders.writeManifest)\n .implies('writeManifest', 'manifest')\n .implies('depsToTranspile', 'transpilationMode')\n .middleware((argv) => processInvalidTranspilation(argv as any));\n },\n handler: (argv: YargsArgs) => build(argv),\n};\n"]}
@@ -6,4 +6,4 @@ import { YargsArgs } from '../../types/yargs';
6
6
  * @returns A promise that resolves once the eval has finished.
7
7
  * @throws If the eval failed.
8
8
  */
9
- export declare function snapEval(argv: YargsArgs): Promise<void>;
9
+ export declare function evalHandler(argv: YargsArgs): Promise<void>;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.snapEval = void 0;
3
+ exports.evalHandler = void 0;
4
+ const snap_utils_1 = require("@metamask/snap-utils");
4
5
  const utils_1 = require("../../utils");
5
- const workerEval_1 = require("./workerEval");
6
6
  /**
7
7
  * Runs the snap in a worker, to ensure SES compatibility.
8
8
  *
@@ -10,17 +10,16 @@ const workerEval_1 = require("./workerEval");
10
10
  * @returns A promise that resolves once the eval has finished.
11
11
  * @throws If the eval failed.
12
12
  */
13
- async function snapEval(argv) {
13
+ async function evalHandler(argv) {
14
14
  const { bundle: bundlePath } = argv;
15
- await (0, utils_1.validateFilePath)(bundlePath);
16
15
  try {
17
- await (0, workerEval_1.workerEval)(bundlePath);
16
+ await (0, snap_utils_1.evalBundle)(bundlePath);
18
17
  console.log(`Eval Success: evaluated '${bundlePath}' in SES!`);
19
18
  }
20
- catch (err) {
21
- (0, utils_1.logError)(`Snap evaluation error: ${err.message}`, err);
22
- throw err;
19
+ catch (error) {
20
+ (0, utils_1.logError)(`Snap evaluation error: ${error.message}`, error);
21
+ throw error;
23
22
  }
24
23
  }
25
- exports.snapEval = snapEval;
24
+ exports.evalHandler = evalHandler;
26
25
  //# sourceMappingURL=evalHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evalHandler.js","sourceRoot":"","sources":["../../../src/cmds/eval/evalHandler.ts"],"names":[],"mappings":";;;AACA,uCAAyD;AACzD,6CAA0C;AAE1C;;;;;;GAMG;AACI,KAAK,UAAU,QAAQ,CAAC,IAAe;IAC5C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,IAAA,wBAAgB,EAAC,UAAoB,CAAC,CAAC;IAC7C,IAAI;QACF,MAAM,IAAA,uBAAU,EAAC,UAAoB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,4BAA4B,UAAU,WAAW,CAAC,CAAC;KAChE;IAAC,OAAO,GAAG,EAAE;QACZ,IAAA,gBAAQ,EAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,GAAG,CAAC;KACX;AACH,CAAC;AAVD,4BAUC","sourcesContent":["import { YargsArgs } from '../../types/yargs';\nimport { logError, validateFilePath } from '../../utils';\nimport { workerEval } from './workerEval';\n\n/**\n * Runs the snap in a worker, to ensure SES compatibility.\n *\n * @param argv - The Yargs arguments object.\n * @returns A promise that resolves once the eval has finished.\n * @throws If the eval failed.\n */\nexport async function snapEval(argv: YargsArgs): Promise<void> {\n const { bundle: bundlePath } = argv;\n await validateFilePath(bundlePath as string);\n try {\n await workerEval(bundlePath as string);\n console.log(`Eval Success: evaluated '${bundlePath}' in SES!`);\n } catch (err) {\n logError(`Snap evaluation error: ${err.message}`, err);\n throw err;\n }\n}\n"]}
1
+ {"version":3,"file":"evalHandler.js","sourceRoot":"","sources":["../../../src/cmds/eval/evalHandler.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,uCAAuC;AAEvC;;;;;;GAMG;AACI,KAAK,UAAU,WAAW,CAAC,IAAe;IAC/C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEpC,IAAI;QACF,MAAM,IAAA,uBAAU,EAAC,UAAoB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,4BAA4B,UAAU,WAAW,CAAC,CAAC;KAChE;IAAC,OAAO,KAAK,EAAE;QACd,IAAA,gBAAQ,EAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAVD,kCAUC","sourcesContent":["import { evalBundle } from '@metamask/snap-utils';\nimport { YargsArgs } from '../../types/yargs';\nimport { logError } from '../../utils';\n\n/**\n * Runs the snap in a worker, to ensure SES compatibility.\n *\n * @param argv - The Yargs arguments object.\n * @returns A promise that resolves once the eval has finished.\n * @throws If the eval failed.\n */\nexport async function evalHandler(argv: YargsArgs): Promise<void> {\n const { bundle: bundlePath } = argv;\n\n try {\n await evalBundle(bundlePath as string);\n console.log(`Eval Success: evaluated '${bundlePath}' in SES!`);\n } catch (error) {\n logError(`Snap evaluation error: ${error.message}`, error);\n throw error;\n }\n}\n"]}
@@ -10,6 +10,6 @@ module.exports = {
10
10
  builder: (yarg) => {
11
11
  yarg.option('bundle', builders_1.default.bundle);
12
12
  },
13
- handler: (argv) => (0, evalHandler_1.snapEval)(argv),
13
+ handler: (argv) => (0, evalHandler_1.evalHandler)(argv),
14
14
  };
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmds/eval/index.ts"],"names":[],"mappings":";;;;AACA,8DAAsC;AAEtC,+CAAyC;AAEzC,iBAAS;IACP,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC;IACtB,IAAI,EAAE,wCAAwC;IAC9C,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,CAAC,IAAe,EAAE,EAAE,CAAC,IAAA,sBAAQ,EAAC,IAAI,CAAC;CAC7C,CAAC","sourcesContent":["import yargs from 'yargs';\nimport builders from '../../builders';\nimport { YargsArgs } from '../../types/yargs';\nimport { snapEval } from './evalHandler';\n\nexport = {\n command: ['eval', 'e'],\n desc: 'Attempt to evaluate Snap bundle in SES',\n builder: (yarg: yargs.Argv) => {\n yarg.option('bundle', builders.bundle);\n },\n handler: (argv: YargsArgs) => snapEval(argv),\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cmds/eval/index.ts"],"names":[],"mappings":";;;;AACA,8DAAsC;AAEtC,+CAA4C;AAE5C,iBAAS;IACP,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC;IACtB,IAAI,EAAE,wCAAwC;IAC9C,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,CAAC,IAAe,EAAE,EAAE,CAAC,IAAA,yBAAW,EAAC,IAAI,CAAC;CAChD,CAAC","sourcesContent":["import yargs from 'yargs';\nimport builders from '../../builders';\nimport { YargsArgs } from '../../types/yargs';\nimport { evalHandler } from './evalHandler';\n\nexport = {\n command: ['eval', 'e'],\n desc: 'Attempt to evaluate Snap bundle in SES',\n builder: (yarg: yargs.Argv) => {\n yarg.option('bundle', builders.bundle);\n },\n handler: (argv: YargsArgs) => evalHandler(argv),\n};\n"]}
@@ -6,10 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.updateManifestShasum = exports.initHandler = void 0;
7
7
  const fs_1 = require("fs");
8
8
  const path_1 = __importDefault(require("path"));
9
- const snap_controllers_1 = require("@metamask/snap-controllers");
9
+ const snap_utils_1 = require("@metamask/snap-utils");
10
10
  const mkdirp_1 = __importDefault(require("mkdirp"));
11
11
  const utils_1 = require("../../utils");
12
- const manifestHandler_1 = require("../manifest/manifestHandler");
13
12
  const init_template_json_1 = __importDefault(require("./init-template.json"));
14
13
  const initUtils_1 = require("./initUtils");
15
14
  /**
@@ -26,7 +25,7 @@ async function initHandler(argv) {
26
25
  console.log(`MetaMask Snaps: Initialize\n`);
27
26
  const packageJson = await (0, initUtils_1.asyncPackageInit)(argv);
28
27
  await (0, initUtils_1.prepareWorkingDirectory)();
29
- console.log(`\nInit: Building '${snap_controllers_1.NpmSnapFileNames.Manifest}'...\n`);
28
+ console.log(`\nInit: Building '${snap_utils_1.NpmSnapFileNames.Manifest}'...\n`);
30
29
  const [snapManifest, _newArgs] = await (0, initUtils_1.buildSnapManifest)(argv, packageJson);
31
30
  const newArgs = Object.keys(_newArgs)
32
31
  .sort()
@@ -36,13 +35,13 @@ async function initHandler(argv) {
36
35
  }, {});
37
36
  const isTypeScript = (0, initUtils_1.isTemplateTypescript)(argv.template);
38
37
  try {
39
- await fs_1.promises.writeFile(snap_controllers_1.NpmSnapFileNames.Manifest, `${JSON.stringify(snapManifest, null, 2)}\n`);
38
+ await fs_1.promises.writeFile(snap_utils_1.NpmSnapFileNames.Manifest, `${JSON.stringify(snapManifest, null, 2)}\n`);
40
39
  }
41
40
  catch (err) {
42
- (0, utils_1.logError)(`Init Error: Failed to write '${snap_controllers_1.NpmSnapFileNames.Manifest}'.`, err);
41
+ (0, utils_1.logError)(`Init Error: Failed to write '${snap_utils_1.NpmSnapFileNames.Manifest}'.`, err);
43
42
  throw err;
44
43
  }
45
- console.log(`\nInit: Created '${snap_controllers_1.NpmSnapFileNames.Manifest}'.`);
44
+ console.log(`\nInit: Created '${snap_utils_1.NpmSnapFileNames.Manifest}'.`);
46
45
  // Write main .js entry file
47
46
  const { src } = newArgs;
48
47
  try {
@@ -112,10 +111,10 @@ exports.initHandler = initHandler;
112
111
  * during the init command.
113
112
  */
114
113
  async function updateManifestShasum() {
115
- const manifest = (await (0, utils_1.readJsonFile)(snap_controllers_1.NpmSnapFileNames.Manifest));
114
+ const manifest = await (0, snap_utils_1.readJsonFile)(snap_utils_1.NpmSnapFileNames.Manifest);
116
115
  const bundleContents = await fs_1.promises.readFile(manifest.source.location.npm.filePath, 'utf8');
117
- manifest.source.shasum = (0, snap_controllers_1.getSnapSourceShasum)(bundleContents);
118
- await fs_1.promises.writeFile(snap_controllers_1.NpmSnapFileNames.Manifest, JSON.stringify((0, manifestHandler_1.getWritableManifest)(manifest), null, 2));
116
+ manifest.source.shasum = (0, snap_utils_1.getSnapSourceShasum)(bundleContents);
117
+ await fs_1.promises.writeFile(snap_utils_1.NpmSnapFileNames.Manifest, JSON.stringify((0, snap_utils_1.getWritableManifest)(manifest), null, 2));
119
118
  }
120
119
  exports.updateManifestShasum = updateManifestShasum;
121
120
  //# sourceMappingURL=initHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"initHandler.js","sourceRoot":"","sources":["../../../src/cmds/init/initHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { promises as fs } from 'fs';\nimport pathUtils from 'path';\nimport {\n getSnapSourceShasum,\n NpmSnapFileNames,\n SnapManifest,\n} from '@metamask/snap-controllers';\nimport mkdirp from 'mkdirp';\nimport { YargsArgs } from '../../types/yargs';\nimport {\n closePrompt,\n CONFIG_FILE,\n logError,\n readJsonFile,\n SnapConfig,\n} from '../../utils';\nimport { getWritableManifest } from '../manifest/manifestHandler';\nimport { TemplateType } from '../../builders';\nimport template from './init-template.json';\nimport {\n asyncPackageInit,\n buildSnapManifest,\n isTemplateTypescript,\n prepareWorkingDirectory,\n} from './initUtils';\n\n/**\n * Creates a new snap package, based on one of the provided templates. This\n * creates all the necessary files, like `package.json`, `snap.config.js`, etc.\n * to start developing a snap.\n *\n * @param argv - The Yargs arguments object.\n * @returns The Yargs arguments augmented with the new `dist`, `outfileName` and\n * `src` properties.\n * @throws If initialization of the snap package failed.\n */\nexport async function initHandler(argv: YargsArgs) {\n console.log(`MetaMask Snaps: Initialize\\n`);\n\n const packageJson = await asyncPackageInit(argv);\n\n await prepareWorkingDirectory();\n\n console.log(`\\nInit: Building '${NpmSnapFileNames.Manifest}'...\\n`);\n\n const [snapManifest, _newArgs] = await buildSnapManifest(argv, packageJson);\n\n const newArgs = Object.keys(_newArgs)\n .sort()\n .reduce((sorted, key) => {\n sorted[key] = _newArgs[key as keyof typeof _newArgs];\n return sorted;\n }, {} as YargsArgs);\n\n const isTypeScript = isTemplateTypescript(argv.template as TemplateType);\n try {\n await fs.writeFile(\n NpmSnapFileNames.Manifest,\n `${JSON.stringify(snapManifest, null, 2)}\\n`,\n );\n } catch (err) {\n logError(\n `Init Error: Failed to write '${NpmSnapFileNames.Manifest}'.`,\n err,\n );\n throw err;\n }\n\n console.log(`\\nInit: Created '${NpmSnapFileNames.Manifest}'.`);\n\n // Write main .js entry file\n const { src } = newArgs;\n\n try {\n if (pathUtils.basename(src) !== src) {\n await mkdirp(pathUtils.dirname(src));\n }\n\n await fs.writeFile(\n src,\n isTypeScript ? template.typescriptSource : template.source,\n );\n\n console.log(`Init: Created '${src}'.`);\n } catch (err) {\n logError(`Init Error: Failed to write '${src}'.`, err);\n throw err;\n }\n\n // Write index.html\n try {\n await fs.writeFile(\n 'index.html',\n isTypeScript ? template.typescriptHtml : template.html,\n );\n\n console.log(`Init: Created 'index.html'.`);\n } catch (err) {\n logError(`Init Error: Failed to write 'index.html'.`, err);\n throw err;\n }\n\n // Write tsconfig.json\n if (isTypeScript) {\n try {\n await fs.writeFile('tsconfig.json', template.typescriptConfig);\n console.log(`Init: Created 'tsconfig.json'.`);\n } catch (err) {\n logError(`Init Error: Failed to write 'tsconfig.json'.`, err);\n throw err;\n }\n }\n\n // Write config file\n try {\n const defaultConfig: SnapConfig = {\n cliOptions: newArgs,\n };\n const defaultConfigFile = `module.exports = ${JSON.stringify(\n defaultConfig,\n null,\n 2,\n )}\n `;\n await fs.writeFile(CONFIG_FILE, defaultConfigFile);\n console.log(`Init: Wrote '${CONFIG_FILE}' config file`);\n } catch (err) {\n logError(`Init Error: Failed to write '${CONFIG_FILE}'.`, err);\n throw err;\n }\n\n // Write icon\n const iconPath = 'images/icon.svg';\n try {\n if (pathUtils.basename(iconPath) !== iconPath) {\n await mkdirp(pathUtils.dirname(iconPath));\n }\n await fs.writeFile(iconPath, template.icon);\n\n console.log(`Init: Created '${iconPath}'.`);\n } catch (err) {\n logError(`Init Error: Failed to write '${iconPath}'.`, err);\n throw err;\n }\n\n closePrompt();\n return { ...argv, ...newArgs };\n}\n\n/**\n * This updates the Snap shasum value of the manifest after building the Snap\n * during the init command.\n */\nexport async function updateManifestShasum() {\n const manifest = (await readJsonFile(\n NpmSnapFileNames.Manifest,\n )) as SnapManifest;\n\n const bundleContents = await fs.readFile(\n manifest.source.location.npm.filePath,\n 'utf8',\n );\n\n manifest.source.shasum = getSnapSourceShasum(bundleContents);\n await fs.writeFile(\n NpmSnapFileNames.Manifest,\n JSON.stringify(getWritableManifest(manifest), null, 2),\n );\n}\n"]}
1
+ {"version":3,"file":"initHandler.js","sourceRoot":"","sources":["../../../src/cmds/init/initHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { promises as fs } from 'fs';\nimport pathUtils from 'path';\nimport {\n NpmSnapFileNames,\n SnapManifest,\n getSnapSourceShasum,\n getWritableManifest,\n readJsonFile,\n} from '@metamask/snap-utils';\nimport mkdirp from 'mkdirp';\nimport { YargsArgs } from '../../types/yargs';\nimport { closePrompt, CONFIG_FILE, logError, SnapConfig } from '../../utils';\nimport { TemplateType } from '../../builders';\nimport template from './init-template.json';\nimport {\n asyncPackageInit,\n buildSnapManifest,\n isTemplateTypescript,\n prepareWorkingDirectory,\n} from './initUtils';\n\n/**\n * Creates a new snap package, based on one of the provided templates. This\n * creates all the necessary files, like `package.json`, `snap.config.js`, etc.\n * to start developing a snap.\n *\n * @param argv - The Yargs arguments object.\n * @returns The Yargs arguments augmented with the new `dist`, `outfileName` and\n * `src` properties.\n * @throws If initialization of the snap package failed.\n */\nexport async function initHandler(argv: YargsArgs) {\n console.log(`MetaMask Snaps: Initialize\\n`);\n\n const packageJson = await asyncPackageInit(argv);\n\n await prepareWorkingDirectory();\n\n console.log(`\\nInit: Building '${NpmSnapFileNames.Manifest}'...\\n`);\n\n const [snapManifest, _newArgs] = await buildSnapManifest(argv, packageJson);\n\n const newArgs = Object.keys(_newArgs)\n .sort()\n .reduce((sorted, key) => {\n sorted[key] = _newArgs[key as keyof typeof _newArgs];\n return sorted;\n }, {} as YargsArgs);\n\n const isTypeScript = isTemplateTypescript(argv.template as TemplateType);\n try {\n await fs.writeFile(\n NpmSnapFileNames.Manifest,\n `${JSON.stringify(snapManifest, null, 2)}\\n`,\n );\n } catch (err) {\n logError(\n `Init Error: Failed to write '${NpmSnapFileNames.Manifest}'.`,\n err,\n );\n throw err;\n }\n\n console.log(`\\nInit: Created '${NpmSnapFileNames.Manifest}'.`);\n\n // Write main .js entry file\n const { src } = newArgs;\n\n try {\n if (pathUtils.basename(src) !== src) {\n await mkdirp(pathUtils.dirname(src));\n }\n\n await fs.writeFile(\n src,\n isTypeScript ? template.typescriptSource : template.source,\n );\n\n console.log(`Init: Created '${src}'.`);\n } catch (err) {\n logError(`Init Error: Failed to write '${src}'.`, err);\n throw err;\n }\n\n // Write index.html\n try {\n await fs.writeFile(\n 'index.html',\n isTypeScript ? template.typescriptHtml : template.html,\n );\n\n console.log(`Init: Created 'index.html'.`);\n } catch (err) {\n logError(`Init Error: Failed to write 'index.html'.`, err);\n throw err;\n }\n\n // Write tsconfig.json\n if (isTypeScript) {\n try {\n await fs.writeFile('tsconfig.json', template.typescriptConfig);\n console.log(`Init: Created 'tsconfig.json'.`);\n } catch (err) {\n logError(`Init Error: Failed to write 'tsconfig.json'.`, err);\n throw err;\n }\n }\n\n // Write config file\n try {\n const defaultConfig: SnapConfig = {\n cliOptions: newArgs,\n };\n const defaultConfigFile = `module.exports = ${JSON.stringify(\n defaultConfig,\n null,\n 2,\n )}\n `;\n await fs.writeFile(CONFIG_FILE, defaultConfigFile);\n console.log(`Init: Wrote '${CONFIG_FILE}' config file`);\n } catch (err) {\n logError(`Init Error: Failed to write '${CONFIG_FILE}'.`, err);\n throw err;\n }\n\n // Write icon\n const iconPath = 'images/icon.svg';\n try {\n if (pathUtils.basename(iconPath) !== iconPath) {\n await mkdirp(pathUtils.dirname(iconPath));\n }\n await fs.writeFile(iconPath, template.icon);\n\n console.log(`Init: Created '${iconPath}'.`);\n } catch (err) {\n logError(`Init Error: Failed to write '${iconPath}'.`, err);\n throw err;\n }\n\n closePrompt();\n return { ...argv, ...newArgs };\n}\n\n/**\n * This updates the Snap shasum value of the manifest after building the Snap\n * during the init command.\n */\nexport async function updateManifestShasum() {\n const manifest = await readJsonFile<SnapManifest>(NpmSnapFileNames.Manifest);\n\n const bundleContents = await fs.readFile(\n manifest.source.location.npm.filePath,\n 'utf8',\n );\n\n manifest.source.shasum = getSnapSourceShasum(bundleContents);\n await fs.writeFile(\n NpmSnapFileNames.Manifest,\n JSON.stringify(getWritableManifest(manifest), null, 2),\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { NpmSnapPackageJson, SnapManifest } from '@metamask/snap-controllers/dist/snaps';
1
+ import { SnapManifest, NpmSnapPackageJson } from '@metamask/snap-utils';
2
2
  import { Arguments } from 'yargs';
3
3
  import { YargsArgs } from '../../types/yargs';
4
4
  import { TemplateType } from '../../builders';
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.isTemplateTypescript = exports.correctDefaultArgs = exports.prepareWorkingDirectory = exports.buildSnapManifest = exports.asyncPackageInit = void 0;
7
7
  const fs_1 = require("fs");
8
8
  const path_1 = __importDefault(require("path"));
9
- const snaps_1 = require("@metamask/snap-controllers/dist/snaps");
9
+ const snap_utils_1 = require("@metamask/snap-utils");
10
10
  const init_package_json_1 = __importDefault(require("init-package-json"));
11
11
  const mkdirp_1 = __importDefault(require("mkdirp"));
12
12
  const slash_1 = __importDefault(require("slash"));
@@ -26,22 +26,22 @@ const NPM_PUBLIC_REGISTRY_URL = 'https://registry.npmjs.org';
26
26
  * @returns The contents of the `package.json` file.
27
27
  */
28
28
  async function asyncPackageInit(argv) {
29
- if ((0, fs_1.existsSync)(snaps_1.NpmSnapFileNames.PackageJson)) {
30
- console.log(`Init: Attempting to use existing '${snaps_1.NpmSnapFileNames.PackageJson}'...`);
29
+ if ((0, fs_1.existsSync)(snap_utils_1.NpmSnapFileNames.PackageJson)) {
30
+ console.log(`Init: Attempting to use existing '${snap_utils_1.NpmSnapFileNames.PackageJson}'...`);
31
31
  try {
32
- const packageJson = await (0, utils_1.readJsonFile)(snaps_1.NpmSnapFileNames.PackageJson);
33
- (0, snaps_1.validateSnapJsonFile)(snaps_1.NpmSnapFileNames.PackageJson, packageJson);
34
- console.log(`Init: Successfully parsed '${snaps_1.NpmSnapFileNames.PackageJson}'!`);
32
+ const packageJson = await (0, snap_utils_1.readJsonFile)(snap_utils_1.NpmSnapFileNames.PackageJson);
33
+ (0, snap_utils_1.validateSnapJsonFile)(snap_utils_1.NpmSnapFileNames.PackageJson, packageJson);
34
+ console.log(`Init: Successfully parsed '${snap_utils_1.NpmSnapFileNames.PackageJson}'!`);
35
35
  return packageJson;
36
36
  }
37
37
  catch (error) {
38
- (0, utils_1.logError)(`Init Error: Could not parse '${snaps_1.NpmSnapFileNames.PackageJson}'. Please verify that the file is correctly formatted and try again.`, error);
38
+ (0, utils_1.logError)(`Init Error: Could not parse '${snap_utils_1.NpmSnapFileNames.PackageJson}'. Please verify that the file is correctly formatted and try again.`, error);
39
39
  throw error;
40
40
  }
41
41
  }
42
42
  // Exit if yarn.lock is found, or we'll be in trouble
43
43
  if ((0, fs_1.existsSync)('yarn.lock')) {
44
- (0, utils_1.logError)(`Init Error: Found a 'yarn.lock' file but no '${snaps_1.NpmSnapFileNames.PackageJson}'. Please run 'yarn init' and try again.`);
44
+ (0, utils_1.logError)(`Init Error: Found a 'yarn.lock' file but no '${snap_utils_1.NpmSnapFileNames.PackageJson}'. Please run 'yarn init' and try again.`);
45
45
  throw new Error('Already existing yarn.lock file found');
46
46
  }
47
47
  // Run 'npm init'
@@ -127,7 +127,7 @@ async function buildSnapManifest(argv, packageJson) {
127
127
  });
128
128
  if (proposedName.length > 0 &&
129
129
  proposedName.length <= 214 &&
130
- snaps_1.PROPOSED_NAME_REGEX.test(proposedName)) {
130
+ snap_utils_1.PROPOSED_NAME_REGEX.test(proposedName)) {
131
131
  invalidProposedName = false;
132
132
  }
133
133
  else {
@@ -204,7 +204,7 @@ async function buildSnapManifest(argv, packageJson) {
204
204
  description,
205
205
  proposedName,
206
206
  repository: packageJson.repository
207
- ? (0, utils_1.deepClone)(packageJson.repository)
207
+ ? (0, snap_utils_1.deepClone)(packageJson.repository)
208
208
  : null,
209
209
  source: {
210
210
  shasum: PLACEHOLDER_SHASUM,
@@ -221,7 +221,7 @@ async function buildSnapManifest(argv, packageJson) {
221
221
  manifestVersion: '0.1',
222
222
  };
223
223
  try {
224
- (0, snaps_1.validateSnapJsonFile)(snaps_1.NpmSnapFileNames.Manifest, manifest);
224
+ (0, snap_utils_1.validateSnapJsonFile)(snap_utils_1.NpmSnapFileNames.Manifest, manifest);
225
225
  }
226
226
  catch (error) {
227
227
  /* istanbul ignore next */
@@ -239,7 +239,7 @@ const INIT_FILE_NAMES = new Set([
239
239
  'index.html',
240
240
  utils_1.CONFIG_FILE,
241
241
  'dist',
242
- snaps_1.NpmSnapFileNames.Manifest,
242
+ snap_utils_1.NpmSnapFileNames.Manifest,
243
243
  ]);
244
244
  /**
245
245
  * Checks whether any files in the current working directory will be overwritten
@@ -1 +1 @@
1
- {"version":3,"file":"initUtils.js","sourceRoot":"","sources":["../../../src/cmds/init/initUtils.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAgD;AAChD,gDAA6B;AAC7B,iEAM+C;AAC/C,0EAAgD;AAChD,oDAA4B;AAC5B,kDAA0B;AAG1B,uCAQqB;AACrB,6CAA8C;AAE9C;;GAEG;AACH,MAAM,kBAAkB,GAAG,8CAA8C,CAAC;AAE1E,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AAE7D;;;;;;;GAOG;AACI,KAAK,UAAU,gBAAgB,CACpC,IAAe;IAEf,IAAI,IAAA,eAAU,EAAC,wBAAgB,CAAC,WAAW,CAAC,EAAE;QAC5C,OAAO,CAAC,GAAG,CACT,qCAAqC,wBAAgB,CAAC,WAAW,MAAM,CACxE,CAAC;QAEF,IAAI;YACF,MAAM,WAAW,GAAG,MAAM,IAAA,oBAAY,EAAC,wBAAgB,CAAC,WAAW,CAAC,CAAC;YACrE,IAAA,4BAAoB,EAAC,wBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAEhE,OAAO,CAAC,GAAG,CACT,8BAA8B,wBAAgB,CAAC,WAAW,IAAI,CAC/D,CAAC;YACF,OAAO,WAAiC,CAAC;SAC1C;QAAC,OAAO,KAAK,EAAE;YACd,IAAA,gBAAQ,EACN,gCAAgC,wBAAgB,CAAC,WAAW,sEAAsE,EAClI,KAAK,CACN,CAAC;YACF,MAAM,KAAK,CAAC;SACb;KACF;IAED,qDAAqD;IACrD,IAAI,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE;QAC3B,IAAA,gBAAQ,EACN,gDAAgD,wBAAgB,CAAC,WAAW,0CAA0C,CACvH,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC1D;IAED,iBAAiB;IACjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAA,2BAAe,EACb,OAAO,CAAC,GAAG,EAAE,EACb,EAAE,EACF;YACE,WAAW,EAAE,IAAI,CAAC,GAAG;SACtB,EACD,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACZ,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAlDD,4CAkDC;AAED,MAAM,GAAG,GAAG,KAAK,CAAC;AAClB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEvC;;;;;;GAMG;AACH,SAAS,KAAK,CAAC,SAA6B;IAC1C,OAAO,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAE9C;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACjC,OAAO,EAAE,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1C,CAAC,CAAC;AAEF;;;;;;;GAOG;AACI,KAAK,UAAU,iBAAiB,CACrC,IAAe,EACf,WAA+B;IAE/B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACpB,IAAI,kBAAkB,GAA4B,qBAAqB,EAAE,CAAC;IAC1E,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC;IAEtD,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,OAAO,YAAY,QAAQ,CAAC;KAC3C;IAED,IAAI;QACF,MAAM,SAAS,GAAG,MAAM,IAAA,cAAM,EAAC;YAC7B,QAAQ,EAAE,mCAAmC;YAC7C,YAAY,EAAE,GAAG;YACjB,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,IAAI;gBACF,MAAM,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC;aACpB;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAA,gBAAQ,EACN,+CAA+C,IAAI,6BAA6B,mBAAW,QAAQ,CACpG,CAAC;gBACF,MAAM,GAAG,CAAC;aACX;YACD,OAAO,eAAe,EAAE,CAAC;SAC1B;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,IAAA,gBAAQ,EAAC,eAAe,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,GAAG,CAAC;KACX;IAED,IAAI,mBAAmB,GAAG,IAAI,CAAC;IAC/B,OAAO,mBAAmB,EAAE;QAC1B,kDAAkD;QAClD,YAAY,GAAG,MAAM,IAAA,cAAM,EAAC;YAC1B,QAAQ,EAAE,qBAAqB;YAC/B,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,IACE,YAAY,CAAC,MAAM,GAAG,CAAC;YACvB,YAAY,CAAC,MAAM,IAAI,GAAG;YAC1B,2BAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,EACtC;YACA,mBAAmB,GAAG,KAAK,CAAC;SAC7B;aAAM;YACL,IAAA,gBAAQ,EACN,6LAA6L,CAC9L,CAAC;SACH;KACF;IAED,IAAI,kBAAkB,GAAG,IAAI,CAAC;IAC9B,OAAO,kBAAkB,EAAE;QACzB,kDAAkD;QAClD,WAAW,GAAG,MAAM,IAAA,cAAM,EAAC;YACzB,QAAQ,EAAE,cAAc;YACxB,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,IAAI,GAAG,EAAE;YACzD,kBAAkB,GAAG,KAAK,CAAC;SAC5B;aAAM;YACL,IAAA,gBAAQ,EACN,kFAAkF,CACnF,CAAC;SACH;KACF;IAED,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,OAAO,WAAW,EAAE;QAClB,kDAAkD;QAClD,IAAI,GAAG,MAAM,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,IAAI;YACF,IAAI,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC;YACnB,WAAW,GAAG,KAAK,CAAC;SACrB;QAAC,OAAO,SAAS,EAAE;YAClB,IAAA,gBAAQ,EACN,+BAA+B,IAAI,iDAAiD,EACpF,SAAS,CACV,CAAC;SACH;KACF;IAED,IAAI,kBAAkB,GAAG,IAAI,CAAC;IAC9B,OAAO,kBAAkB,EAAE;QACzB,MAAM,gBAAgB,GAAG,MAAM,IAAA,cAAM,EAAC;YACpC,mDAAmD;YACnD,QAAQ,EAAE,yDAAyD;SACpE,CAAC,CAAC;QAEH,IACE,CAAC,gBAAgB;YACjB,gBAAgB,CAAC,IAAI,EAAE,KAAK,sBAAsB,EAClD;YACA,MAAM;SACP;QAED,IAAI;YACF,kBAAkB,GAAG,gBAAgB;iBAClC,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE;gBACrC,IACE,OAAO,UAAU,KAAK,QAAQ;oBAC9B,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,EACjC;oBACA,cAAc,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;iBACjC;qBAAM;oBACL,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;iBACtD;gBACD,OAAO,cAAc,CAAC;YACxB,CAAC,EAAE,EAA6B,CAAC,CAAC;YAEpC,kBAAkB,GAAG,KAAK,CAAC;SAC5B;QAAC,OAAO,GAAG,EAAE;YACZ,IAAA,gBAAQ,EACN,wBAAwB,gBAAgB,+IAA+I,EACvL,GAAG,CACJ,CAAC;SACH;KACF;IAED,OAAO,eAAe,EAAE,CAAC;IAEzB;;;;;;OAMG;IACH,SAAS,eAAe;QAQtB,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,WAAW;YACX,YAAY;YACZ,UAAU,EAAE,WAAW,CAAC,UAAU;gBAChC,CAAC,CAAC,IAAA,iBAAS,EAAC,WAAW,CAAC,UAAU,CAAC;gBACnC,CAAC,CAAC,IAAI;YACR,MAAM,EAAE;gBACN,MAAM,EAAE,kBAAkB;gBAC1B,QAAQ,EAAE;oBACR,GAAG,EAAE;wBACH,QAAQ,EAAE,IAAA,eAAK,EAAC,cAAS,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;wBAClD,WAAW,EAAE,WAAW,CAAC,IAAI;wBAC7B,QAAQ,EAAE,uBAAuB;wBACjC,QAAQ,EAAE,iBAAiB;qBACnB;iBACX;aACF;YACD,kBAAkB;YAClB,eAAe,EAAE,KAAc;SAChC,CAAC;QAEF,IAAI;YACF,IAAA,4BAAoB,EAAC,wBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAC3D;QAAC,OAAO,KAAK,EAAE;YACd,0BAA0B;YAC1B,MAAM,IAAI,KAAK,CACb,wGAAwG,KAAK,CAAC,OAAO,EAAE,CACxH,CAAC;SACH;QAED,OAAO;YACL,QAAQ;YACR,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,IAAI,cAAc,EAAE;SAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAtLD,8CAsLC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,KAAK;IACL,YAAY;IACZ,mBAAW;IACX,MAAM;IACN,wBAAgB,CAAC,QAAQ;CAC1B,CAAC,CAAC;AAEH;;;GAGG;AACI,KAAK,UAAU,uBAAuB;IAC3C,MAAM,aAAa,GAAG,CAAC,MAAM,aAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACtE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CACrC,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,IAAA,kBAAU,EACR,0EAA0E,aAAa,CAAC,MAAM,CAC5F,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE;YACvB,OAAO,GAAG,OAAO,KAAK,WAAW,IAAI,CAAC;QACxC,CAAC,EACD,EAAE,CACH,EAAE,CACJ,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,IAAA,cAAM,EAAC;YACjC,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAE7D,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAC7C;KACF;AACH,CAAC;AA1BD,0DA0BC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,SAAoB;IACrD,IACE,SAAS,CAAC,QAAQ,KAAK,uBAAY,CAAC,UAAU;QAC9C,SAAS,CAAC,GAAG,KAAK,cAAc,EAChC;QACA,SAAS,CAAC,GAAG,GAAG,cAAc,CAAC;QAC/B,SAAS,CAAC,CAAC,GAAG,cAAc,CAAC;KAC9B;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAVD,gDAUC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,YAA0B;IAC7D,OAAO,YAAY,KAAK,uBAAY,CAAC,UAAU,CAAC;AAClD,CAAC;AAFD,oDAEC","sourcesContent":["import { existsSync, promises as fs } from 'fs';\nimport pathUtils from 'path';\nimport {\n NpmSnapFileNames,\n NpmSnapPackageJson,\n PROPOSED_NAME_REGEX,\n SnapManifest,\n validateSnapJsonFile,\n} from '@metamask/snap-controllers/dist/snaps';\nimport initPackageJson from 'init-package-json';\nimport mkdirp from 'mkdirp';\nimport slash from 'slash';\nimport { Arguments } from 'yargs';\nimport { YargsArgs } from '../../types/yargs';\nimport {\n CONFIG_FILE,\n deepClone,\n logError,\n logWarning,\n prompt,\n readJsonFile,\n trimPathString,\n} from '../../utils';\nimport { TemplateType } from '../../builders';\n\n/**\n * This is a placeholder shasum that will be replaced at the end of the init command.\n */\nconst PLACEHOLDER_SHASUM = '2QqUxo5joo4kKKr7yiCjdYsZOZcIFBnIBEdwU9Yx7+M=';\n\nconst NPM_PUBLIC_REGISTRY_URL = 'https://registry.npmjs.org';\n\n/**\n * Initializes a `package.json` file for a Snap project. Will attempt to read\n * and parse the existing file if it already exists, otherwise will intialize\n * a brand new one.\n *\n * @param argv - Yargs arguments object.\n * @returns The contents of the `package.json` file.\n */\nexport async function asyncPackageInit(\n argv: YargsArgs,\n): Promise<Readonly<NpmSnapPackageJson>> {\n if (existsSync(NpmSnapFileNames.PackageJson)) {\n console.log(\n `Init: Attempting to use existing '${NpmSnapFileNames.PackageJson}'...`,\n );\n\n try {\n const packageJson = await readJsonFile(NpmSnapFileNames.PackageJson);\n validateSnapJsonFile(NpmSnapFileNames.PackageJson, packageJson);\n\n console.log(\n `Init: Successfully parsed '${NpmSnapFileNames.PackageJson}'!`,\n );\n return packageJson as NpmSnapPackageJson;\n } catch (error) {\n logError(\n `Init Error: Could not parse '${NpmSnapFileNames.PackageJson}'. Please verify that the file is correctly formatted and try again.`,\n error,\n );\n throw error;\n }\n }\n\n // Exit if yarn.lock is found, or we'll be in trouble\n if (existsSync('yarn.lock')) {\n logError(\n `Init Error: Found a 'yarn.lock' file but no '${NpmSnapFileNames.PackageJson}'. Please run 'yarn init' and try again.`,\n );\n throw new Error('Already existing yarn.lock file found');\n }\n\n // Run 'npm init'\n return new Promise((resolve, reject) => {\n initPackageJson(\n process.cwd(),\n '',\n {\n 'init.main': argv.src,\n },\n (err, data) => {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n },\n );\n });\n}\n\nconst YES = 'yes';\nconst YES_VALUES = new Set([YES, 'y']);\n\n/**\n * Checks if user input provided over a prompt is \"yes\", i.e., if the value is\n * truthy and in the {@link YES_VALUES} set.\n *\n * @param userInput - The user input to check.\n * @returns `true` if the user input is \"yes\", `false` otherwise.\n */\nfunction isYes(userInput: string | undefined) {\n return userInput && YES_VALUES.has(userInput.toLowerCase());\n}\n\nconst DEFAULT_PERMISSION_KEY = 'snap_confirm';\n\n/**\n * Get the default permissions to write to the snap manifest.\n *\n * @returns An object containing the default permissions.\n */\nconst getDefaultPermissions = () => {\n return { [DEFAULT_PERMISSION_KEY]: {} };\n};\n\n/**\n * Interactively constructs a Snap manifest file by prompting the user.\n *\n * @param argv - The `yargs` `argv` object.\n * @param packageJson - The `package.json` object.\n * @returns A tuple of the resulting Snap manifest object and a new `argv`\n * object with properties to match the manifest.\n */\nexport async function buildSnapManifest(\n argv: YargsArgs,\n packageJson: NpmSnapPackageJson,\n): Promise<[SnapManifest, { dist: string; outfileName: string; src: string }]> {\n const { outfileName } = argv;\n let { dist } = argv;\n let initialPermissions: Record<string, unknown> = getDefaultPermissions();\n let { description, name: proposedName } = packageJson;\n\n if (!description) {\n description = `The ${proposedName} Snap.`;\n }\n\n try {\n const userInput = await prompt({\n question: `Use default Snap manifest values?`,\n defaultValue: YES,\n shouldClose: false,\n });\n\n if (isYes(userInput)) {\n console.log('Using default values...');\n try {\n await mkdirp(dist);\n } catch (err) {\n logError(\n `Init Error: Could not write default 'dist' '${dist}'. Maybe check your local ${CONFIG_FILE} file?`,\n );\n throw err;\n }\n return endSnapManifest();\n }\n } catch (err) {\n logError(`Init Error: ${err.message}`, err);\n throw err;\n }\n\n let invalidProposedName = true;\n while (invalidProposedName) {\n // eslint-disable-next-line require-atomic-updates\n proposedName = await prompt({\n question: `Proposed Snap name:`,\n defaultValue: proposedName,\n });\n\n if (\n proposedName.length > 0 &&\n proposedName.length <= 214 &&\n PROPOSED_NAME_REGEX.test(proposedName)\n ) {\n invalidProposedName = false;\n } else {\n logError(\n `The proposed name must adhere to npm package naming conventions, except that capital letters are allowed. For details, see: https://docs.npmjs.com/cli/v6/configuring-npm/package-json#name`,\n );\n }\n }\n\n let invalidDescription = true;\n while (invalidDescription) {\n // eslint-disable-next-line require-atomic-updates\n description = await prompt({\n question: `Description:`,\n defaultValue: description,\n });\n\n if (description.length === 0 || description.length <= 280) {\n invalidDescription = false;\n } else {\n logError(\n `The description must be a non-empty string less than or equal to 280 characters.`,\n );\n }\n }\n\n let invalidDist = true;\n while (invalidDist) {\n // eslint-disable-next-line require-atomic-updates\n dist = await prompt({ question: `Output directory:`, defaultValue: dist });\n try {\n dist = trimPathString(dist);\n await mkdirp(dist);\n invalidDist = false;\n } catch (distError) {\n logError(\n `Unable to create directory '${dist}'. Ensure that the path is valid and try again.`,\n distError,\n );\n }\n }\n\n let invalidPermissions = true;\n while (invalidPermissions) {\n const inputPermissions = await prompt({\n // We add the parenthetical default value ourselves\n question: `Initial permissions: [perm1 perm2 ...] ([snap_confirm])`,\n });\n\n if (\n !inputPermissions ||\n inputPermissions.trim() === DEFAULT_PERMISSION_KEY\n ) {\n break;\n }\n\n try {\n initialPermissions = inputPermissions\n .split(' ')\n .reduce((allPermissions, permission) => {\n if (\n typeof permission === 'string' &&\n permission.match(/^[\\w\\d_:]+$/iu)\n ) {\n allPermissions[permission] = {};\n } else {\n throw new Error(`Invalid permission: ${permission}`);\n }\n return allPermissions;\n }, {} as Record<string, unknown>);\n\n invalidPermissions = false;\n } catch (err) {\n logError(\n `Invalid permissions '${inputPermissions}'.\\nThe permissions must be specified as a space-separated list of strings with only characters, digits, underscores ('_'), and colons (':').`,\n err,\n );\n }\n }\n\n return endSnapManifest();\n\n /**\n * Get the final snap manifest object and return it, along with the dist and\n * file names.\n *\n * @returns A tuple of the resulting snap manifest object and an object\n * containing the dist and file names.\n */\n function endSnapManifest(): [\n SnapManifest,\n {\n dist: string;\n outfileName: string;\n src: string;\n },\n ] {\n const manifest = {\n version: packageJson.version,\n description,\n proposedName,\n repository: packageJson.repository\n ? deepClone(packageJson.repository)\n : null,\n source: {\n shasum: PLACEHOLDER_SHASUM,\n location: {\n npm: {\n filePath: slash(pathUtils.join(dist, outfileName)),\n packageName: packageJson.name,\n registry: NPM_PUBLIC_REGISTRY_URL,\n iconPath: 'images/icon.svg',\n } as const,\n },\n },\n initialPermissions,\n manifestVersion: '0.1' as const,\n };\n\n try {\n validateSnapJsonFile(NpmSnapFileNames.Manifest, manifest);\n } catch (error) {\n /* istanbul ignore next */\n throw new Error(\n `Internal Error: Validation of constructed manifest failed. This is a bug, please report it. Reason:\\n${error.message}`,\n );\n }\n\n return [\n manifest,\n { dist, outfileName, src: packageJson.main || 'src/index.js' },\n ];\n }\n}\n\nconst INIT_FILE_NAMES = new Set([\n 'src',\n 'index.html',\n CONFIG_FILE,\n 'dist',\n NpmSnapFileNames.Manifest,\n]);\n\n/**\n * Checks whether any files in the current working directory will be overwritten\n * by the initialization process, and asks the user whether to continue if so.\n */\nexport async function prepareWorkingDirectory(): Promise<void> {\n const existingFiles = (await fs.readdir(process.cwd())).filter((item) =>\n INIT_FILE_NAMES.has(item.toString()),\n );\n\n if (existingFiles.length > 0) {\n logWarning(\n `\\nInit Warning: Existing files and/or directories may be overwritten:\\n${existingFiles.reduce(\n (message, currentFile) => {\n return `${message}\\t${currentFile}\\n`;\n },\n '',\n )}`,\n );\n\n const continueInput = await prompt({\n question: `Continue?`,\n defaultValue: YES,\n });\n const shouldContinue = continueInput && isYes(continueInput);\n\n if (!shouldContinue) {\n console.log(`Init: Exiting...`);\n throw new Error('User refused to continue');\n }\n }\n}\n\n/**\n * In case when TypeScript version is used, default source file\n * will be updated if previous was not correct.\n *\n * @param yargsArgv - The Yargs arguments object.\n * @returns Modified Yargs arguments object.\n */\nexport function correctDefaultArgs(yargsArgv: Arguments): Arguments {\n if (\n yargsArgv.template === TemplateType.TypeScript &&\n yargsArgv.src === 'src/index.js'\n ) {\n yargsArgv.src = 'src/index.ts';\n yargsArgv.s = 'src/index.ts';\n }\n\n return yargsArgv;\n}\n\n/**\n * Check if template argument is TemplateType.TypeScript.\n *\n * @param templateType - TemplateType value of the template argument passed from CLI.\n * @returns True or false.\n */\nexport function isTemplateTypescript(templateType: TemplateType): boolean {\n return templateType === TemplateType.TypeScript;\n}\n"]}
1
+ {"version":3,"file":"initUtils.js","sourceRoot":"","sources":["../../../src/cmds/init/initUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, promises as fs } from 'fs';\nimport pathUtils from 'path';\nimport {\n PROPOSED_NAME_REGEX,\n NpmSnapFileNames,\n SnapManifest,\n NpmSnapPackageJson,\n validateSnapJsonFile,\n readJsonFile,\n deepClone,\n} from '@metamask/snap-utils';\nimport initPackageJson from 'init-package-json';\nimport mkdirp from 'mkdirp';\nimport slash from 'slash';\nimport { Arguments } from 'yargs';\nimport { YargsArgs } from '../../types/yargs';\nimport {\n CONFIG_FILE,\n logError,\n logWarning,\n prompt,\n trimPathString,\n} from '../../utils';\nimport { TemplateType } from '../../builders';\n\n/**\n * This is a placeholder shasum that will be replaced at the end of the init command.\n */\nconst PLACEHOLDER_SHASUM = '2QqUxo5joo4kKKr7yiCjdYsZOZcIFBnIBEdwU9Yx7+M=';\n\nconst NPM_PUBLIC_REGISTRY_URL = 'https://registry.npmjs.org';\n\n/**\n * Initializes a `package.json` file for a Snap project. Will attempt to read\n * and parse the existing file if it already exists, otherwise will intialize\n * a brand new one.\n *\n * @param argv - Yargs arguments object.\n * @returns The contents of the `package.json` file.\n */\nexport async function asyncPackageInit(\n argv: YargsArgs,\n): Promise<Readonly<NpmSnapPackageJson>> {\n if (existsSync(NpmSnapFileNames.PackageJson)) {\n console.log(\n `Init: Attempting to use existing '${NpmSnapFileNames.PackageJson}'...`,\n );\n\n try {\n const packageJson = await readJsonFile(NpmSnapFileNames.PackageJson);\n validateSnapJsonFile(NpmSnapFileNames.PackageJson, packageJson);\n\n console.log(\n `Init: Successfully parsed '${NpmSnapFileNames.PackageJson}'!`,\n );\n return packageJson as NpmSnapPackageJson;\n } catch (error) {\n logError(\n `Init Error: Could not parse '${NpmSnapFileNames.PackageJson}'. Please verify that the file is correctly formatted and try again.`,\n error,\n );\n throw error;\n }\n }\n\n // Exit if yarn.lock is found, or we'll be in trouble\n if (existsSync('yarn.lock')) {\n logError(\n `Init Error: Found a 'yarn.lock' file but no '${NpmSnapFileNames.PackageJson}'. Please run 'yarn init' and try again.`,\n );\n throw new Error('Already existing yarn.lock file found');\n }\n\n // Run 'npm init'\n return new Promise((resolve, reject) => {\n initPackageJson(\n process.cwd(),\n '',\n {\n 'init.main': argv.src,\n },\n (err, data) => {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n },\n );\n });\n}\n\nconst YES = 'yes';\nconst YES_VALUES = new Set([YES, 'y']);\n\n/**\n * Checks if user input provided over a prompt is \"yes\", i.e., if the value is\n * truthy and in the {@link YES_VALUES} set.\n *\n * @param userInput - The user input to check.\n * @returns `true` if the user input is \"yes\", `false` otherwise.\n */\nfunction isYes(userInput: string | undefined) {\n return userInput && YES_VALUES.has(userInput.toLowerCase());\n}\n\nconst DEFAULT_PERMISSION_KEY = 'snap_confirm';\n\n/**\n * Get the default permissions to write to the snap manifest.\n *\n * @returns An object containing the default permissions.\n */\nconst getDefaultPermissions = () => {\n return { [DEFAULT_PERMISSION_KEY]: {} };\n};\n\n/**\n * Interactively constructs a Snap manifest file by prompting the user.\n *\n * @param argv - The `yargs` `argv` object.\n * @param packageJson - The `package.json` object.\n * @returns A tuple of the resulting Snap manifest object and a new `argv`\n * object with properties to match the manifest.\n */\nexport async function buildSnapManifest(\n argv: YargsArgs,\n packageJson: NpmSnapPackageJson,\n): Promise<[SnapManifest, { dist: string; outfileName: string; src: string }]> {\n const { outfileName } = argv;\n let { dist } = argv;\n let initialPermissions: Record<string, unknown> = getDefaultPermissions();\n let { description, name: proposedName } = packageJson;\n\n if (!description) {\n description = `The ${proposedName} Snap.`;\n }\n\n try {\n const userInput = await prompt({\n question: `Use default Snap manifest values?`,\n defaultValue: YES,\n shouldClose: false,\n });\n\n if (isYes(userInput)) {\n console.log('Using default values...');\n try {\n await mkdirp(dist);\n } catch (err) {\n logError(\n `Init Error: Could not write default 'dist' '${dist}'. Maybe check your local ${CONFIG_FILE} file?`,\n );\n throw err;\n }\n return endSnapManifest();\n }\n } catch (err) {\n logError(`Init Error: ${err.message}`, err);\n throw err;\n }\n\n let invalidProposedName = true;\n while (invalidProposedName) {\n // eslint-disable-next-line require-atomic-updates\n proposedName = await prompt({\n question: `Proposed Snap name:`,\n defaultValue: proposedName,\n });\n\n if (\n proposedName.length > 0 &&\n proposedName.length <= 214 &&\n PROPOSED_NAME_REGEX.test(proposedName)\n ) {\n invalidProposedName = false;\n } else {\n logError(\n `The proposed name must adhere to npm package naming conventions, except that capital letters are allowed. For details, see: https://docs.npmjs.com/cli/v6/configuring-npm/package-json#name`,\n );\n }\n }\n\n let invalidDescription = true;\n while (invalidDescription) {\n // eslint-disable-next-line require-atomic-updates\n description = await prompt({\n question: `Description:`,\n defaultValue: description,\n });\n\n if (description.length === 0 || description.length <= 280) {\n invalidDescription = false;\n } else {\n logError(\n `The description must be a non-empty string less than or equal to 280 characters.`,\n );\n }\n }\n\n let invalidDist = true;\n while (invalidDist) {\n // eslint-disable-next-line require-atomic-updates\n dist = await prompt({ question: `Output directory:`, defaultValue: dist });\n try {\n dist = trimPathString(dist);\n await mkdirp(dist);\n invalidDist = false;\n } catch (distError) {\n logError(\n `Unable to create directory '${dist}'. Ensure that the path is valid and try again.`,\n distError,\n );\n }\n }\n\n let invalidPermissions = true;\n while (invalidPermissions) {\n const inputPermissions = await prompt({\n // We add the parenthetical default value ourselves\n question: `Initial permissions: [perm1 perm2 ...] ([snap_confirm])`,\n });\n\n if (\n !inputPermissions ||\n inputPermissions.trim() === DEFAULT_PERMISSION_KEY\n ) {\n break;\n }\n\n try {\n initialPermissions = inputPermissions\n .split(' ')\n .reduce((allPermissions, permission) => {\n if (\n typeof permission === 'string' &&\n permission.match(/^[\\w\\d_:]+$/iu)\n ) {\n allPermissions[permission] = {};\n } else {\n throw new Error(`Invalid permission: ${permission}`);\n }\n return allPermissions;\n }, {} as Record<string, unknown>);\n\n invalidPermissions = false;\n } catch (err) {\n logError(\n `Invalid permissions '${inputPermissions}'.\\nThe permissions must be specified as a space-separated list of strings with only characters, digits, underscores ('_'), and colons (':').`,\n err,\n );\n }\n }\n\n return endSnapManifest();\n\n /**\n * Get the final snap manifest object and return it, along with the dist and\n * file names.\n *\n * @returns A tuple of the resulting snap manifest object and an object\n * containing the dist and file names.\n */\n function endSnapManifest(): [\n SnapManifest,\n {\n dist: string;\n outfileName: string;\n src: string;\n },\n ] {\n const manifest = {\n version: packageJson.version,\n description,\n proposedName,\n repository: packageJson.repository\n ? deepClone(packageJson.repository)\n : null,\n source: {\n shasum: PLACEHOLDER_SHASUM,\n location: {\n npm: {\n filePath: slash(pathUtils.join(dist, outfileName)),\n packageName: packageJson.name,\n registry: NPM_PUBLIC_REGISTRY_URL,\n iconPath: 'images/icon.svg',\n } as const,\n },\n },\n initialPermissions,\n manifestVersion: '0.1' as const,\n };\n\n try {\n validateSnapJsonFile(NpmSnapFileNames.Manifest, manifest);\n } catch (error) {\n /* istanbul ignore next */\n throw new Error(\n `Internal Error: Validation of constructed manifest failed. This is a bug, please report it. Reason:\\n${error.message}`,\n );\n }\n\n return [\n manifest,\n { dist, outfileName, src: packageJson.main || 'src/index.js' },\n ];\n }\n}\n\nconst INIT_FILE_NAMES = new Set([\n 'src',\n 'index.html',\n CONFIG_FILE,\n 'dist',\n NpmSnapFileNames.Manifest,\n]);\n\n/**\n * Checks whether any files in the current working directory will be overwritten\n * by the initialization process, and asks the user whether to continue if so.\n */\nexport async function prepareWorkingDirectory(): Promise<void> {\n const existingFiles = (await fs.readdir(process.cwd())).filter((item) =>\n INIT_FILE_NAMES.has(item.toString()),\n );\n\n if (existingFiles.length > 0) {\n logWarning(\n `\\nInit Warning: Existing files and/or directories may be overwritten:\\n${existingFiles.reduce(\n (message, currentFile) => {\n return `${message}\\t${currentFile}\\n`;\n },\n '',\n )}`,\n );\n\n const continueInput = await prompt({\n question: `Continue?`,\n defaultValue: YES,\n });\n const shouldContinue = continueInput && isYes(continueInput);\n\n if (!shouldContinue) {\n console.log(`Init: Exiting...`);\n throw new Error('User refused to continue');\n }\n }\n}\n\n/**\n * In case when TypeScript version is used, default source file\n * will be updated if previous was not correct.\n *\n * @param yargsArgv - The Yargs arguments object.\n * @returns Modified Yargs arguments object.\n */\nexport function correctDefaultArgs(yargsArgv: Arguments): Arguments {\n if (\n yargsArgv.template === TemplateType.TypeScript &&\n yargsArgv.src === 'src/index.js'\n ) {\n yargsArgv.src = 'src/index.ts';\n yargsArgv.s = 'src/index.ts';\n }\n\n return yargsArgv;\n}\n\n/**\n * Check if template argument is TemplateType.TypeScript.\n *\n * @param templateType - TemplateType value of the template argument passed from CLI.\n * @returns True or false.\n */\nexport function isTemplateTypescript(templateType: TemplateType): boolean {\n return templateType === TemplateType.TypeScript;\n}\n"]}
@@ -1,4 +1,3 @@
1
- import type { SnapManifest } from '@metamask/snap-controllers';
2
1
  import { YargsArgs } from '../../types/yargs';
3
2
  /**
4
3
  * Validates a snap.manifest.json file. Attempts to fix the manifest and write
@@ -8,12 +7,4 @@ import { YargsArgs } from '../../types/yargs';
8
7
  * @param argv - The Yargs `argv` object.
9
8
  * @param argv.writeManifest - Whether to write the fixed manifest to disk.
10
9
  */
11
- export declare function manifestHandler({ writeManifest, }: YargsArgs): Promise<void>;
12
- /**
13
- * Sorts the given manifest in our preferred sort order and removes the
14
- * `repository` field if it is falsy (it may be `null`).
15
- *
16
- * @param manifest - The manifest to sort and modify.
17
- * @returns The disk-ready manifest.
18
- */
19
- export declare function getWritableManifest(manifest: SnapManifest): SnapManifest;
10
+ export declare function manifestHandler({ writeManifest }: YargsArgs): Promise<void>;