@madebyseed/seed-cli-tools 2.3.1 → 2.4.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 (100) hide show
  1. package/lib/commands/build.d.ts +2 -0
  2. package/lib/commands/build.js +30 -29
  3. package/lib/commands/build.js.map +1 -0
  4. package/lib/commands/deploy.d.ts +2 -0
  5. package/lib/commands/deploy.js +42 -30
  6. package/lib/commands/deploy.js.map +1 -0
  7. package/lib/commands/pull.d.ts +2 -0
  8. package/lib/commands/pull.js +39 -29
  9. package/lib/commands/pull.js.map +1 -0
  10. package/lib/commands/watch.d.ts +2 -0
  11. package/lib/commands/watch.js +44 -40
  12. package/lib/commands/watch.js.map +1 -0
  13. package/lib/commands/zip.d.ts +2 -0
  14. package/lib/commands/zip.js +23 -25
  15. package/lib/commands/zip.js.map +1 -0
  16. package/lib/config.d.ts +3 -0
  17. package/lib/config.js +21 -28
  18. package/lib/config.js.map +1 -0
  19. package/lib/gulpfile.d.ts +1 -0
  20. package/lib/gulpfile.js +26 -33
  21. package/lib/gulpfile.js.map +1 -0
  22. package/lib/tasks/build-assets.d.ts +1 -0
  23. package/lib/tasks/build-assets.js +80 -72
  24. package/lib/tasks/build-assets.js.map +1 -0
  25. package/lib/tasks/build-css.d.ts +1 -0
  26. package/lib/tasks/build-css.js +88 -82
  27. package/lib/tasks/build-css.js.map +1 -0
  28. package/lib/tasks/build-js.d.ts +1 -0
  29. package/lib/tasks/build-js.js +77 -83
  30. package/lib/tasks/build-js.js.map +1 -0
  31. package/lib/tasks/build-svg.d.ts +1 -0
  32. package/lib/tasks/build-svg.js +51 -54
  33. package/lib/tasks/build-svg.js.map +1 -0
  34. package/lib/tasks/build-utils.d.ts +1 -0
  35. package/lib/tasks/build-utils.js +68 -49
  36. package/lib/tasks/build-utils.js.map +1 -0
  37. package/lib/tasks/includes/config.d.ts +70 -0
  38. package/lib/tasks/includes/config.js +117 -163
  39. package/lib/tasks/includes/config.js.map +1 -0
  40. package/lib/tasks/includes/messages.d.ts +19 -0
  41. package/lib/tasks/includes/messages.js +80 -72
  42. package/lib/tasks/includes/messages.js.map +1 -0
  43. package/lib/tasks/includes/utilities.d.ts +71 -0
  44. package/lib/tasks/includes/utilities.js +127 -141
  45. package/lib/tasks/includes/utilities.js.map +1 -0
  46. package/lib/tasks/shopify-cli.d.ts +1 -0
  47. package/lib/tasks/shopify-cli.js +106 -93
  48. package/lib/tasks/shopify-cli.js.map +1 -0
  49. package/lib/tasks/watchers.d.ts +1 -0
  50. package/lib/tasks/watchers.js +29 -29
  51. package/lib/tasks/watchers.js.map +1 -0
  52. package/lib/types.d.ts +48 -0
  53. package/lib/types.js +3 -0
  54. package/lib/types.js.map +1 -0
  55. package/lib/utils.d.ts +90 -0
  56. package/lib/utils.js +194 -189
  57. package/lib/utils.js.map +1 -0
  58. package/package.json +36 -16
  59. package/src/commands/build.ts +39 -0
  60. package/src/commands/deploy.ts +70 -0
  61. package/src/commands/pull.ts +58 -0
  62. package/src/commands/watch.ts +72 -0
  63. package/src/commands/zip.ts +28 -0
  64. package/src/config.ts +28 -0
  65. package/src/gulpfile.ts +134 -0
  66. package/src/tasks/build-assets.ts +135 -0
  67. package/src/tasks/build-css.ts +129 -0
  68. package/src/tasks/build-js.ts +108 -0
  69. package/src/tasks/build-svg.ts +92 -0
  70. package/src/tasks/build-utils.ts +137 -0
  71. package/src/tasks/includes/config.ts +222 -0
  72. package/src/tasks/includes/messages.ts +157 -0
  73. package/src/tasks/includes/utilities.ts +170 -0
  74. package/src/tasks/shopify-cli.ts +197 -0
  75. package/src/tasks/watchers.ts +50 -0
  76. package/src/types/declarations.d.ts +72 -0
  77. package/src/types.ts +74 -0
  78. package/src/utils.ts +304 -0
  79. package/{src → src-legacy}/tasks/build-js.js +5 -6
  80. package/tsconfig.json +14 -0
  81. package/tsconfig.tsbuildinfo +1 -0
  82. package/.babelrc +0 -3
  83. package/.eslintrc +0 -8
  84. /package/{src → src-legacy}/commands/build.js +0 -0
  85. /package/{src → src-legacy}/commands/deploy.js +0 -0
  86. /package/{src → src-legacy}/commands/pull.js +0 -0
  87. /package/{src → src-legacy}/commands/watch.js +0 -0
  88. /package/{src → src-legacy}/commands/zip.js +0 -0
  89. /package/{src → src-legacy}/config.js +0 -0
  90. /package/{src → src-legacy}/gulpfile.js +0 -0
  91. /package/{src → src-legacy}/tasks/build-assets.js +0 -0
  92. /package/{src → src-legacy}/tasks/build-css.js +0 -0
  93. /package/{src → src-legacy}/tasks/build-svg.js +0 -0
  94. /package/{src → src-legacy}/tasks/build-utils.js +0 -0
  95. /package/{src → src-legacy}/tasks/includes/config.js +0 -0
  96. /package/{src → src-legacy}/tasks/includes/messages.js +0 -0
  97. /package/{src → src-legacy}/tasks/includes/utilities.js +0 -0
  98. /package/{src → src-legacy}/tasks/shopify-cli.js +0 -0
  99. /package/{src → src-legacy}/tasks/watchers.js +0 -0
  100. /package/{src → src-legacy}/utils.js +0 -0
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
-
3
- var chalk = require("chalk");
4
-
5
- var log = require("fancy-log");
6
-
7
- var _ = require("lodash");
8
-
9
- var Promise = require("bluebird");
10
-
11
- var errors = [];
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 chalk_1 = __importDefault(require("chalk"));
7
+ const fancy_log_1 = __importDefault(require("fancy-log"));
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const bluebird_1 = __importDefault(require("bluebird"));
10
+ let errors = [];
12
11
  /**
13
12
  * Utility and reusable functions used by our Gulp Tasks
14
13
  *
@@ -16,140 +15,127 @@ var errors = [];
16
15
  * @namespace seed-cli.utilities
17
16
  * @memberof seed-cli
18
17
  */
19
-
20
- var utilities = {
21
- /**
22
- * Indicates whether there are errors during build/watch
23
- *
24
- * @returns {Boolean}
25
- */
26
- hasErrors: function hasErrors() {
27
- return errors.length > 0;
28
- },
29
-
30
- /**
31
- * Handles the output for any errors that might have been captured
32
- * during the build and zip Gulp tasks.
33
- *
34
- * @memberof seed-cli.utilities
35
- */
36
- outputErrors: function outputErrors() {
37
- if (!errors.length) {
38
- return;
39
- }
40
-
41
- log(chalk.red("There were errors during the build:\n"));
42
- errors.forEach(function (err) {
43
- log(chalk.red(err));
44
- });
45
- errors = [];
46
- },
47
-
48
- /**
49
- * Generic error handler for streams called in `watch` tasks (used by gulp-plumber).
50
- * Any error that is thrown inside of a task is added to the errors array.
51
- *
52
- * @memberof seed-cli.utilities
53
- * @param {Error} err
54
- */
55
- errorHandler: function errorHandler(err) {
56
- log(chalk.red(err));
57
- errors.push(err);
58
- },
59
-
60
- /**
61
- * Executes an array of promises in series
62
- *
63
- * @param promiseArrayFactory {Function} - an array of promise factories
64
- * @returns {Promise} - promise.all() style array of results from each promise
65
- */
66
- promiseSeries: function promiseSeries(promiseArrayFactory) {
67
- var results = [];
68
- return Promise.each(promiseArrayFactory, function (factory) {
69
- var result = factory();
70
- results.push(result);
71
- return result;
72
- }).thenReturn(results).all();
73
- },
74
-
75
- /**
76
- * Factory for creating an event cache - used with a short debounce to batch any
77
- * file changes that occur in rapid succession during Watch tasks.
78
- *
79
- * @memberof seed-cli.utilities
80
- * @param {Object} options
81
- * @returns {eventCache} see type definition for more robust documentation
82
- */
83
- createEventCache: function createEventCache(options) {
84
- _.defaults(options = options || {}, {
85
- // eslint-disable-line no-param-reassign
86
- changeEvents: ["add", "change"],
87
- unlinkEvents: ["unlink"]
88
- });
18
+ const utilities = {
19
+ /**
20
+ * Indicates whether there are errors during build/watch
21
+ *
22
+ * @returns {Boolean}
23
+ */
24
+ hasErrors: () => errors.length > 0,
89
25
  /**
90
- * A cache object used for caching `[chokidar]{@link https://github.com/paulmillr/chokidar}`
91
- * events - used with a short `debounce` to batch any file changes that occur in rapid
92
- * succession during Watch tasks.
26
+ * Handles the output for any errors that might have been captured
27
+ * during the build and zip Gulp tasks.
93
28
  *
94
- * @typedef {Object} eventCache
95
- * @prop {Array} change - an array for caching `add` and `change` events
96
- * @prop {Array} unlink - an array for caching `unlink` events
97
- * @prop {Function} addEvent - a function to push events to the appropriate `cache` array
29
+ * @memberof seed-cli.utilities
98
30
  */
99
-
100
-
101
- return {
102
- change: [],
103
- unlink: [],
104
-
105
- /**
106
- * Pushes events to upload & remove caches for later batch deployment
107
- *
108
- * @function addEvent
109
- * @memberof eventCache
110
- * @param {String} event - chokidar event type - only cares about `(add|change|unlink)`
111
- * @param {String} path - relative path to file passed via event
112
- */
113
- addEvent: function addEvent(event, path) {
114
- var _this = this;
115
-
116
- _.each(options.changeEvents, function (eventType) {
117
- if (event === eventType) {
118
- _this.change.push(path);
119
- }
31
+ outputErrors: () => {
32
+ if (!errors.length) {
33
+ return;
34
+ }
35
+ (0, fancy_log_1.default)(chalk_1.default.red("There were errors during the build:\n"));
36
+ errors.forEach((err) => {
37
+ (0, fancy_log_1.default)(chalk_1.default.red(err));
120
38
  });
121
-
122
- _.each(options.unlinkEvents, function (eventType) {
123
- if (event === eventType) {
124
- _this.unlink.push(path);
125
- }
39
+ errors = [];
40
+ },
41
+ /**
42
+ * Generic error handler for streams called in `watch` tasks (used by gulp-plumber).
43
+ * Any error that is thrown inside of a task is added to the errors array.
44
+ *
45
+ * @memberof seed-cli.utilities
46
+ * @param {Error} err
47
+ */
48
+ errorHandler: (err) => {
49
+ (0, fancy_log_1.default)(chalk_1.default.red(err));
50
+ errors.push(err);
51
+ },
52
+ /**
53
+ * Executes an array of promises in series
54
+ *
55
+ * @param promiseArrayFactory {Function} - an array of promise factories
56
+ * @returns {Promise} - promise.all() style array of results from each promise
57
+ */
58
+ promiseSeries: (promiseArrayFactory) => {
59
+ const results = [];
60
+ return bluebird_1.default.each(promiseArrayFactory, (factory) => {
61
+ const result = factory();
62
+ // @ts-ignore
63
+ results.push(result);
64
+ return result;
65
+ })
66
+ .thenReturn(results)
67
+ .all();
68
+ },
69
+ /**
70
+ * Factory for creating an event cache - used with a short debounce to batch any
71
+ * file changes that occur in rapid succession during Watch tasks.
72
+ *
73
+ * @memberof seed-cli.utilities
74
+ * @param {Object} options
75
+ * @returns {eventCache} see type definition for more robust documentation
76
+ */
77
+ createEventCache: (options) => {
78
+ const opts = lodash_1.default.defaults(options || {}, {
79
+ changeEvents: ["add", "change"],
80
+ unlinkEvents: ["unlink"],
126
81
  });
127
- }
128
- };
129
- },
130
-
131
- /**
132
- * Debounced (320ms) delegator function passing an {@link eventCache} object
133
- * through to a pair of custom functions for processing batch add/change or unlink events.
134
- * Clears the appropriate cache array after a change/delete function has been
135
- * called.
136
- *
137
- * @memberof seed-cli.utilities
138
- * @method
139
- * @param {eventCache} cache - a specific cache object for tracking file events
140
- * @param {Function} changeFn - a custom function to process the set of files that have changed
141
- * @param {Function} delFn - a custom function to remove the set of files that have changed from the `dist` directory
142
- */
143
- processCache: _.debounce(function (cache, changeFn, delFn) {
144
- if (cache.change.length) {
145
- changeFn(cache.change);
146
- cache.change = [];
147
- }
148
-
149
- if (cache.unlink.length) {
150
- delFn(cache.unlink);
151
- cache.unlink = [];
152
- }
153
- }, 320)
82
+ /**
83
+ * A cache object used for caching `[chokidar]{@link https://github.com/paulmillr/chokidar}`
84
+ * events - used with a short `debounce` to batch any file changes that occur in rapid
85
+ * succession during Watch tasks.
86
+ *
87
+ * @typedef {Object} eventCache
88
+ * @prop {Array} change - an array for caching `add` and `change` events
89
+ * @prop {Array} unlink - an array for caching `unlink` events
90
+ * @prop {Function} addEvent - a function to push events to the appropriate `cache` array
91
+ */
92
+ return {
93
+ change: [],
94
+ unlink: [],
95
+ /**
96
+ * Pushes events to upload & remove caches for later batch deployment
97
+ *
98
+ * @function addEvent
99
+ * @memberof eventCache
100
+ * @param {String} event - chokidar event type - only cares about `(add|change|unlink)`
101
+ * @param {String} path - relative path to file passed via event
102
+ */
103
+ addEvent: function (event, path) {
104
+ lodash_1.default.each(opts.changeEvents, (eventType) => {
105
+ if (event === eventType) {
106
+ this.change.push(path);
107
+ }
108
+ });
109
+ lodash_1.default.each(opts.unlinkEvents, (eventType) => {
110
+ if (event === eventType) {
111
+ this.unlink.push(path);
112
+ }
113
+ });
114
+ },
115
+ };
116
+ },
117
+ /**
118
+ * Debounced (320ms) delegator function passing an {@link eventCache} object
119
+ * through to a pair of custom functions for processing batch add/change or unlink events.
120
+ * Clears the appropriate cache array after a change/delete function has been
121
+ * called.
122
+ *
123
+ * @memberof seed-cli.utilities
124
+ * @method
125
+ * @param {eventCache} cache - a specific cache object for tracking file events
126
+ * @param {Function} changeFn - a custom function to process the set of files that have changed
127
+ * @param {Function} delFn - a custom function to remove the set of files that have changed from the `dist` directory
128
+ */
129
+ processCache: lodash_1.default.debounce((cache, changeFn, delFn) => {
130
+ if (cache.change.length) {
131
+ changeFn(cache.change);
132
+ cache.change = [];
133
+ }
134
+ if (cache.unlink.length) {
135
+ delFn(cache.unlink);
136
+ cache.unlink = [];
137
+ }
138
+ }, 320),
154
139
  };
155
- module.exports = utilities;
140
+ exports.default = utilities;
141
+ //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/tasks/includes/utilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,23 +1,34 @@
1
1
  "use strict";
2
-
3
- var gulp = require("gulp");
4
-
5
- var _require = require("../utils"),
6
- shopifyCLI = _require.shopifyCLI,
7
- extractThemeId = _require.extractThemeId,
8
- logChildProcessOutput = _require.logChildProcessOutput,
9
- getDevThemeID = _require.getDevThemeID,
10
- setDevThemeID = _require.setDevThemeID,
11
- getThemeID = _require.getThemeID,
12
- getStoreName = _require.getStoreName;
13
-
14
- var config = require("./includes/config");
15
-
16
- var messages = require("./includes/messages");
17
-
18
- var environment = config.environment.split(/\s*,\s*|\s+/)[0];
19
- var store = config.store;
20
- var storePassword = config.storePassword;
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 gulp_1 = __importDefault(require("gulp"));
7
+ const utils_1 = require("../utils");
8
+ const config_1 = __importDefault(require("./includes/config"));
9
+ const messages_1 = __importDefault(require("./includes/messages"));
10
+ const environment = config_1.default.environment.split(/\s*,\s*|\s+/)[0];
11
+ const store = config_1.default.store || undefined;
12
+ const storePassword = config_1.default.storePassword;
13
+ /**
14
+ * Takes the output of shopify cli serve, extracts dev theme ID and persists
15
+ * in seed.config.js
16
+ *
17
+ * @param {child_process} serveProcess shopify cli serve spawned child process
18
+ */
19
+ function persistDevThemeID(serveProcess) {
20
+ serveProcess.stdout?.on("data", (data) => {
21
+ const devThemeId = (0, utils_1.extractThemeId)(data.toString());
22
+ const currentDevThemeId = (0, utils_1.getDevThemeID)(config_1.default.themeRoot);
23
+ // If we already have latest dev theme ID, we got nothing left to do
24
+ if (devThemeId === currentDevThemeId)
25
+ return;
26
+ // Else, write dev theme ID into seed.config.js
27
+ if (devThemeId) {
28
+ (0, utils_1.setDevThemeID)(devThemeId);
29
+ }
30
+ });
31
+ }
21
32
  /**
22
33
  * Initiates shopify's cli command 'shopify theme serve' on the dist folder,
23
34
  * watching files and uploading them to development store
@@ -26,17 +37,20 @@ var storePassword = config.storePassword;
26
37
  * @memberof seed-cli.tasks.watch
27
38
  * @static
28
39
  */
29
-
30
- gulp.task("shopify:serve:dist", function () {
31
- var domain = getStoreName(config.themeRoot, store);
32
- messages.logChildProcess("'shopify theme dev --store ".concat(domain).concat(storePassword ? " --store-password ".concat(storePassword) : '', "' on dist..."));
33
- var childProcess = shopifyCLI.serve(domain, {
34
- stdio: ["inherit", "pipe", "inherit"]
35
- });
36
- childProcess.stdout.setEncoding("utf8");
37
- logChildProcessOutput(childProcess);
38
- persistDevThemeID(childProcess);
39
- return childProcess;
40
+ gulp_1.default.task("shopify:serve:dist", () => {
41
+ const domain = (0, utils_1.getStoreName)(config_1.default.themeRoot, store);
42
+ if (!domain) {
43
+ messages_1.default.logStoreNotFound();
44
+ process.exit(1);
45
+ }
46
+ messages_1.default.logChildProcess(`'shopify theme dev --store ${domain}${storePassword ? ` --store-password ${storePassword}` : ""}' on dist...`);
47
+ const childProcess = utils_1.shopifyCLI.serve(domain, {
48
+ stdio: ["inherit", "pipe", "inherit"],
49
+ });
50
+ childProcess.stdout?.setEncoding("utf8");
51
+ (0, utils_1.logChildProcessOutput)(childProcess);
52
+ persistDevThemeID(childProcess);
53
+ return childProcess;
40
54
  });
41
55
  /**
42
56
  * Pulls theme files from the development theme specified in seed config into src
@@ -45,17 +59,18 @@ gulp.task("shopify:serve:dist", function () {
45
59
  * @memberof seed-cli.tasks.deploy
46
60
  * @static
47
61
  */
48
-
49
- gulp.task("shopify:pull:dev", function (done) {
50
- var domain = getStoreName(config.themeRoot, store);
51
- messages.logChildProcess("'shopify theme pull --store ".concat(domain, "' on development theme..."));
52
- var devThemeId = getDevThemeID(config.themeRoot);
53
-
54
- if (!devThemeId || devThemeId === 'false') {
55
- return done();
56
- }
57
-
58
- return shopifyCLI.pull(domain, devThemeId);
62
+ gulp_1.default.task("shopify:pull:dev", (done) => {
63
+ const domain = (0, utils_1.getStoreName)(config_1.default.themeRoot, store);
64
+ if (!domain) {
65
+ messages_1.default.logStoreNotFound();
66
+ process.exit(1);
67
+ }
68
+ messages_1.default.logChildProcess(`'shopify theme pull --store ${domain}' on development theme...`);
69
+ const devThemeId = (0, utils_1.getDevThemeID)(config_1.default.themeRoot);
70
+ if (!devThemeId || devThemeId === "false") {
71
+ return done();
72
+ }
73
+ return utils_1.shopifyCLI.pull(domain, devThemeId);
59
74
  });
60
75
  /**
61
76
  * Pulls theme files from the development theme specified in seed config into tmp
@@ -64,17 +79,16 @@ gulp.task("shopify:pull:dev", function (done) {
64
79
  * @memberof seed-cli.tasks.deploy
65
80
  * @static
66
81
  */
67
-
68
- gulp.task("shopify:pull:dev:tmp", function (done) {
69
- var domain = getStoreName(config.themeRoot, store);
70
- messages.logChildProcess("'shopify theme pull --store ".concat(domain, "' on tmp folder..."));
71
- var devThemeId = getDevThemeID(config.themeRoot);
72
-
73
- if (!devThemeId || devThemeId === 'false') {
74
- return done();
75
- }
76
-
77
- return shopifyCLI.pull(domain, devThemeId, config.tmp.root);
82
+ gulp_1.default.task("shopify:pull:dev:tmp", (done) => {
83
+ const domain = (0, utils_1.getStoreName)(config_1.default.themeRoot, store);
84
+ if (!domain)
85
+ return done();
86
+ messages_1.default.logChildProcess(`'shopify theme pull --store ${domain}' on tmp folder...`);
87
+ const devThemeId = (0, utils_1.getDevThemeID)(config_1.default.themeRoot);
88
+ if (!devThemeId || devThemeId === "false") {
89
+ return done();
90
+ }
91
+ return utils_1.shopifyCLI.pull(domain, devThemeId, config_1.default.tmp.root);
78
92
  });
79
93
  /**
80
94
  * Pulls theme files from the seed config theme environment into tmp
@@ -83,11 +97,15 @@ gulp.task("shopify:pull:dev:tmp", function (done) {
83
97
  * @memberof seed-cli.tasks.deploy
84
98
  * @static
85
99
  */
86
-
87
- gulp.task("shopify:pull:origin:tmp", function () {
88
- var domain = getStoreName(config.themeRoot, store);
89
- messages.logChildProcess("'shopify theme pull --store ".concat(domain, " ").concat(environment).concat(config.nodelete ? ' --nodelete' : '', "' into tmp..."));
90
- return shopifyCLI.pull(domain, getThemeID(config.themeRoot, environment, store), config.tmp.root);
100
+ gulp_1.default.task("shopify:pull:origin:tmp", () => {
101
+ const domain = (0, utils_1.getStoreName)(config_1.default.themeRoot, store);
102
+ if (!domain) {
103
+ messages_1.default.logStoreNotFound();
104
+ process.exit(1);
105
+ }
106
+ messages_1.default.logChildProcess(`'shopify theme pull --store ${domain} ${environment}${config_1.default.nodelete ? " --nodelete" : ""}' into tmp...`);
107
+ const themeId = (0, utils_1.getThemeID)(config_1.default.themeRoot, environment, store);
108
+ return utils_1.shopifyCLI.pull(domain, themeId, config_1.default.tmp.root);
91
109
  });
92
110
  /**
93
111
  * Pulls theme files from the seed config theme environment into src
@@ -96,11 +114,15 @@ gulp.task("shopify:pull:origin:tmp", function () {
96
114
  * @memberof seed-cli.tasks.deploy
97
115
  * @static
98
116
  */
99
-
100
- gulp.task("shopify:pull:origin:src", function () {
101
- var domain = getStoreName(config.themeRoot, store);
102
- messages.logChildProcess("'shopify theme pull --store ".concat(domain, " ").concat(environment).concat(config.nodelete ? ' --nodelete' : '', "' into src..."));
103
- return shopifyCLI.pull(domain, getThemeID(config.themeRoot, environment, store), config.tmp.src, config.nodelete);
117
+ gulp_1.default.task("shopify:pull:origin:src", () => {
118
+ const domain = (0, utils_1.getStoreName)(config_1.default.themeRoot, store);
119
+ if (!domain) {
120
+ messages_1.default.logStoreNotFound();
121
+ process.exit(1);
122
+ }
123
+ messages_1.default.logChildProcess(`'shopify theme pull --store ${domain} ${environment}${config_1.default.nodelete ? " --nodelete" : ""}' into src...`);
124
+ const themeId = (0, utils_1.getThemeID)(config_1.default.themeRoot, environment, store);
125
+ return utils_1.shopifyCLI.pull(domain, themeId, config_1.default.src.root, config_1.default.nodelete);
104
126
  });
105
127
  /**
106
128
  * Initiates shopify's cli command 'shopify theme push' on the dist folder,
@@ -110,39 +132,30 @@ gulp.task("shopify:pull:origin:src", function () {
110
132
  * @memberof seed-cli.tasks.deploy
111
133
  * @static
112
134
  */
113
-
114
- gulp.task("shopify:push:dist", function () {
115
- var domain = getStoreName(config.themeRoot, store);
116
- messages.logChildProcess("'shopify theme push --store ".concat(domain).concat(config.nodelete ? ' --nodelete' : '', "' on dist folder..."));
117
- return shopifyCLI.push(domain, getThemeID(config.themeRoot, config.environment, store), config.nodelete);
135
+ gulp_1.default.task("shopify:push:dist", () => {
136
+ const domain = (0, utils_1.getStoreName)(config_1.default.themeRoot, store);
137
+ if (!domain) {
138
+ messages_1.default.logStoreNotFound();
139
+ process.exit(1);
140
+ }
141
+ messages_1.default.logChildProcess(`'shopify theme push --store ${domain}${config_1.default.nodelete ? " --nodelete" : ""}' on dist folder...`);
142
+ const themeId = (0, utils_1.getThemeID)(config_1.default.themeRoot, config_1.default.environment, store);
143
+ return utils_1.shopifyCLI.push(domain, themeId, config_1.default.nodelete);
118
144
  });
119
145
  /**
120
146
  * Initiates 'shopify theme package' on the dist folder, creating a zip.
121
- *
122
- * @function shopify:package:dist
123
- * @memberof seed-cli.tasks.zip
124
- * @static
125
- */
126
-
127
- gulp.task("shopify:package:dist", function () {
128
- var domain = getStoreName(config.themeRoot, store);
129
- messages.logChildProcess("shopify theme package on dist folder...");
130
- return shopifyCLI["package"](domain);
131
- });
132
- /**
133
- * Takes the output of shopify cli serve, extracts dev theme ID and persists
134
- * in seed.config.js
135
147
  *
136
- * @param {child_process} serveProcess shopify cli serve spawned child process
148
+ * @function shopify:package:dist
149
+ * @memberof seed-cli.tasks.zip
150
+ * @static
137
151
  */
138
-
139
- function persistDevThemeID(serveProcess) {
140
- serveProcess.stdout.on("data", function (data) {
141
- var devThemeId = extractThemeId(data.toString());
142
- var currentDevThemeId = getDevThemeID(config.themeRoot); // If we already have latest dev theme ID, we got nothing left to do
143
-
144
- if (devThemeId === currentDevThemeId) return; // Else, write dev theme ID into seed.config.js
145
-
146
- setDevThemeID(devThemeId);
147
- });
148
- }
152
+ gulp_1.default.task("shopify:package:dist", () => {
153
+ const domain = (0, utils_1.getStoreName)(config_1.default.themeRoot, store);
154
+ if (!domain) {
155
+ messages_1.default.logStoreNotFound();
156
+ process.exit(1);
157
+ }
158
+ messages_1.default.logChildProcess("shopify theme package on dist folder...");
159
+ return utils_1.shopifyCLI.package();
160
+ });
161
+ //# sourceMappingURL=shopify-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify-cli.js","sourceRoot":"","sources":["../../src/tasks/shopify-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,16 +1,14 @@
1
1
  "use strict";
2
-
3
- var gulp = require("gulp");
4
-
5
- var config = require("./includes/config");
6
-
7
- var chokidar = require("chokidar");
8
-
9
- var utils = require("./includes/utilities");
10
-
11
- var messages = require("./includes/messages.js");
12
-
13
- var cache = utils.createEventCache();
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 gulp_1 = __importDefault(require("gulp"));
7
+ const chokidar_1 = __importDefault(require("chokidar"));
8
+ const config_1 = __importDefault(require("./includes/config"));
9
+ const utilities_1 = __importDefault(require("./includes/utilities"));
10
+ const messages_1 = __importDefault(require("./includes/messages"));
11
+ const cache = utilities_1.default.createEventCache();
14
12
  /**
15
13
  * Aggregate task watching for file changes in `src` and
16
14
  * building/cleaning/updating `dist` accordingly. *Made up of individual tasks
@@ -20,9 +18,11 @@ var cache = utils.createEventCache();
20
18
  * @memberof seed-cli.tasks.watch
21
19
  * @static
22
20
  */
23
-
24
- gulp.task("watch:src", function () {
25
- return gulp.parallel("watch:css", "watch:js", "watch:vendor-js", "watch:assets", "watch:svg")();
21
+ gulp_1.default.task("watch:src", () => {
22
+ return gulp_1.default.parallel("watch:css", "watch:js", "watch:vendor-js", "watch:assets", "watch:svg")((err) => {
23
+ if (err)
24
+ console.error(err);
25
+ });
26
26
  });
27
27
  /**
28
28
  * Watches for changes in the `./dist` folder and passes event data to the
@@ -31,17 +31,17 @@ gulp.task("watch:src", function () {
31
31
  * @memberof seed-cli.tasks.watch
32
32
  * @static
33
33
  */
34
-
35
- gulp.task("watch:dist", function () {
36
- var watcher = chokidar.watch(["./"], {
37
- cwd: config.dist.root,
38
- ignored: /(^|[/\\])\../,
39
- ignoreInitial: true
40
- });
41
- watcher.on("all", function (event, path) {
42
- if (!utils.hasErrors()) {
43
- messages.logFileEvent(event, path, true);
44
- cache.addEvent(event, path);
45
- }
46
- });
47
- });
34
+ gulp_1.default.task("watch:dist", () => {
35
+ const watcher = chokidar_1.default.watch(["./"], {
36
+ cwd: config_1.default.dist.root,
37
+ ignored: /(^|[/\\])\../,
38
+ ignoreInitial: true,
39
+ });
40
+ watcher.on("all", (event, path) => {
41
+ if (!utilities_1.default.hasErrors()) {
42
+ messages_1.default.logFileEvent(event, path, true);
43
+ cache.addEvent(event, path);
44
+ }
45
+ });
46
+ });
47
+ //# sourceMappingURL=watchers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchers.js","sourceRoot":"","sources":["../../src/tasks/watchers.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,wDAAgC;AAChC,+DAAuC;AACvC,qEAAyC;AACzC,mEAA2C;AAE3C,MAAM,KAAK,GAAG,mBAAK,CAAC,gBAAgB,EAAE,CAAC;AAEvC;;;;;;;;GAQG;AACH,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IAC1B,OAAO,cAAI,CAAC,QAAQ,CAClB,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,WAAW,CACZ,CAAC,CAAC,GAAG,EAAE,EAAE;QACR,IAAI,GAAG;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,MAAM,OAAO,GAAG,kBAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;QACrC,GAAG,EAAE,gBAAM,CAAC,IAAI,CAAC,IAAI;QACrB,OAAO,EAAE,cAAc;QACvB,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;QAChD,IAAI,CAAC,mBAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YACvB,kBAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACzC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}