@sasjs/cli 3.6.6 → 3.7.5

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.
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ // game.js from SASjs/Mario
3
+ // https://github.com/sasjs/mario/blob/main/src/js/game.js
4
+ var requestAnimFrame = (function () {
5
+ return (window.requestAnimationFrame ||
6
+ window.webkitRequestAnimationFrame ||
7
+ window.mozRequestAnimationFrame ||
8
+ window.oRequestAnimationFrame ||
9
+ window.msRequestAnimationFrame ||
10
+ function (callback) {
11
+ window.setTimeout(callback, 1000 / 60);
12
+ });
13
+ })();
14
+ //create the canvas
15
+ var canvas = document.createElement('canvas');
16
+ var ctx = canvas.getContext('2d');
17
+ var updateables = [];
18
+ var fireballs = [];
19
+ var player = new Mario.Player([0, 0]);
20
+ //we might have to get the size and calculate the scaling
21
+ //but this method should let us make it however big.
22
+ //Cool!
23
+ //TODO: Automatically scale the game to work and look good on widescreen.
24
+ //TODO: fiddling with scaled sprites looks BETTER, but not perfect. Hmm.
25
+ canvas.width = 762;
26
+ canvas.height = 720;
27
+ ctx.scale(3, 3);
28
+ document.body.appendChild(canvas);
29
+ //viewport
30
+ var vX = 0, vY = 0, vWidth = 256, vHeight = 240;
31
+ //load our images
32
+ resources.load([
33
+ 'sprites/player.png',
34
+ 'sprites/enemy.png',
35
+ 'sprites/tiles.png',
36
+ 'sprites/playerl.png',
37
+ 'sprites/items.png',
38
+ 'sprites/enemyr.png'
39
+ ]);
40
+ resources.onReady(init);
41
+ var level;
42
+ var sounds;
43
+ var music;
44
+ //initialize
45
+ var lastTime;
46
+ function init() {
47
+ music = {
48
+ overworld: new Audio('sounds/aboveground_bgm.ogg'),
49
+ underground: new Audio('sounds/underground_bgm.ogg'),
50
+ clear: new Audio('sounds/stage_clear.wav'),
51
+ death: new Audio('sounds/mariodie.wav')
52
+ };
53
+ sounds = {
54
+ smallJump: new Audio('sounds/jump-small.wav'),
55
+ bigJump: new Audio('sounds/jump-super.wav'),
56
+ breakBlock: new Audio('sounds/breakblock.wav'),
57
+ bump: new Audio('sounds/bump.wav'),
58
+ coin: new Audio('sounds/coin.wav'),
59
+ fireball: new Audio('sounds/fireball.wav'),
60
+ flagpole: new Audio('sounds/flagpole.wav'),
61
+ kick: new Audio('sounds/kick.wav'),
62
+ pipe: new Audio('sounds/pipe.wav'),
63
+ itemAppear: new Audio('sounds/itemAppear.wav'),
64
+ powerup: new Audio('sounds/powerup.wav'),
65
+ stomp: new Audio('sounds/stomp.wav')
66
+ };
67
+ Mario.oneone();
68
+ lastTime = Date.now();
69
+ main();
70
+ }
71
+ var gameTime = 0;
72
+ //set up the game loop
73
+ function main() {
74
+ var now = Date.now();
75
+ var dt = (now - lastTime) / 1000.0;
76
+ update(dt);
77
+ render();
78
+ lastTime = now;
79
+ requestAnimFrame(main);
80
+ }
81
+ function update(dt) {
82
+ gameTime += dt;
83
+ handleInput(dt);
84
+ updateEntities(dt, gameTime);
85
+ checkCollisions();
86
+ }
87
+ function handleInput(dt) {
88
+ if (player.piping || player.dying || player.noInput)
89
+ return; //don't accept input
90
+ if (input.isDown('RUN')) {
91
+ player.run();
92
+ }
93
+ else {
94
+ player.noRun();
95
+ }
96
+ if (input.isDown('JUMP')) {
97
+ player.jump();
98
+ }
99
+ else {
100
+ //we need this to handle the timing for how long you hold it
101
+ player.noJump();
102
+ }
103
+ if (input.isDown('DOWN')) {
104
+ player.crouch();
105
+ }
106
+ else {
107
+ player.noCrouch();
108
+ }
109
+ if (input.isDown('LEFT')) {
110
+ // 'd' or left arrow
111
+ player.moveLeft();
112
+ }
113
+ else if (input.isDown('RIGHT')) {
114
+ // 'k' or right arrow
115
+ player.moveRight();
116
+ }
117
+ else {
118
+ player.noWalk();
119
+ }
120
+ }
121
+ //update all the moving stuff
122
+ function updateEntities(dt, gameTime) {
123
+ player.update(dt, vX);
124
+ updateables.forEach(function (ent) {
125
+ ent.update(dt, gameTime);
126
+ });
127
+ //This should stop the jump when he switches sides on the flag.
128
+ if (player.exiting) {
129
+ if (player.pos[0] > vX + 96)
130
+ vX = player.pos[0] - 96;
131
+ }
132
+ else if (level.scrolling && player.pos[0] > vX + 80) {
133
+ vX = player.pos[0] - 80;
134
+ }
135
+ if (player.powering.length !== 0 || player.dying) {
136
+ return;
137
+ }
138
+ level.items.forEach(function (ent) {
139
+ ent.update(dt);
140
+ });
141
+ level.enemies.forEach(function (ent) {
142
+ ent.update(dt, vX);
143
+ });
144
+ fireballs.forEach(function (fireball) {
145
+ fireball.update(dt);
146
+ });
147
+ level.pipes.forEach(function (pipe) {
148
+ pipe.update(dt);
149
+ });
150
+ }
151
+ //scan for collisions
152
+ function checkCollisions() {
153
+ if (player.powering.length !== 0 || player.dying) {
154
+ return;
155
+ }
156
+ player.checkCollisions();
157
+ //Apparently for each will just skip indices where things were deleted.
158
+ level.items.forEach(function (item) {
159
+ item.checkCollisions();
160
+ });
161
+ level.enemies.forEach(function (ent) {
162
+ ent.checkCollisions();
163
+ });
164
+ fireballs.forEach(function (fireball) {
165
+ fireball.checkCollisions();
166
+ });
167
+ level.pipes.forEach(function (pipe) {
168
+ pipe.checkCollisions();
169
+ });
170
+ }
171
+ //draw the game!
172
+ function render() {
173
+ updateables = [];
174
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
175
+ ctx.fillStyle = level.background;
176
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
177
+ //scenery gets drawn first to get layering right.
178
+ for (var i = 0; i < 15; i++) {
179
+ for (var j = Math.floor(vX / 16) - 1; j < Math.floor(vX / 16) + 20; j++) {
180
+ if (level.scenery[i][j]) {
181
+ renderEntity(level.scenery[i][j]);
182
+ }
183
+ }
184
+ }
185
+ //then items
186
+ level.items.forEach(function (item) {
187
+ renderEntity(item);
188
+ });
189
+ level.enemies.forEach(function (enemy) {
190
+ renderEntity(enemy);
191
+ });
192
+ fireballs.forEach(function (fireball) {
193
+ renderEntity(fireball);
194
+ });
195
+ //then we draw every static object.
196
+ for (var i = 0; i < 15; i++) {
197
+ for (var j = Math.floor(vX / 16) - 1; j < Math.floor(vX / 16) + 20; j++) {
198
+ if (level.statics[i][j]) {
199
+ renderEntity(level.statics[i][j]);
200
+ }
201
+ if (level.blocks[i][j]) {
202
+ renderEntity(level.blocks[i][j]);
203
+ updateables.push(level.blocks[i][j]);
204
+ }
205
+ }
206
+ }
207
+ //then the player
208
+ if (player.invincibility % 2 === 0) {
209
+ renderEntity(player);
210
+ }
211
+ //Mario goes INTO pipes, so naturally they go after.
212
+ level.pipes.forEach(function (pipe) {
213
+ renderEntity(pipe);
214
+ });
215
+ }
216
+ function renderEntity(entity) {
217
+ entity.render(ctx, vX, vY);
218
+ }
@@ -26,7 +26,7 @@ describe('updateLinkTag', function () {
26
26
  source: 'image.jpeg',
27
27
  target: sasProgramPath
28
28
  });
29
- (0, updateLinkTag_1.updateLinkTag)(imgTag, assetPathMap, 'image');
29
+ (0, updateLinkTag_1.updateLinkTag)(imgTag, assetPathMap, 'src');
30
30
  expect(imgTag.getAttribute('src')).toEqual(sasProgramPath);
31
31
  });
32
32
  });
@@ -38,6 +38,31 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
39
39
  }
40
40
  };
41
+ var __read = (this && this.__read) || function (o, n) {
42
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
43
+ if (!m) return o;
44
+ var i = m.call(o), r, ar = [], e;
45
+ try {
46
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
47
+ }
48
+ catch (error) { e = { error: error }; }
49
+ finally {
50
+ try {
51
+ if (r && !r.done && (m = i["return"])) m.call(i);
52
+ }
53
+ finally { if (e) throw e.error; }
54
+ }
55
+ return ar;
56
+ };
57
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
58
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
59
+ if (ar || !(i in from)) {
60
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
61
+ ar[i] = from[i];
62
+ }
63
+ }
64
+ return to.concat(ar || Array.prototype.slice.call(from));
65
+ };
41
66
  var __importDefault = (this && this.__importDefault) || function (mod) {
42
67
  return (mod && mod.__esModule) ? mod : { "default": mod };
43
68
  };
@@ -79,7 +104,7 @@ describe('updateScriptTag', function () {
79
104
  return __generator(this, function (_a) {
80
105
  switch (_a.label) {
81
106
  case 0:
82
- scriptTag = document.createElement('link');
107
+ scriptTag = document.createElement('script');
83
108
  sourcePath = path_1.default.join(__dirname, 'testFiles');
84
109
  target = { serverType: utils_1.ServerType.Sas9 };
85
110
  assetPathMap = [];
@@ -121,4 +146,124 @@ describe('updateScriptTag', function () {
121
146
  }
122
147
  });
123
148
  }); });
149
+ it("should update links in js script", function () { return __awaiter(void 0, void 0, void 0, function () {
150
+ var sourcePath, gameTestFilePath, target, assetPathMap, scriptTag, _a, updatedContent;
151
+ return __generator(this, function (_b) {
152
+ switch (_b.label) {
153
+ case 0:
154
+ sourcePath = path_1.default.join(__dirname, 'testFiles');
155
+ gameTestFilePath = path_1.default.join(sourcePath, 'script3.js');
156
+ target = { serverType: utils_1.ServerType.SasViya };
157
+ assetPathMap = __spreadArray(__spreadArray([], __read(gameJSSpriteLinks), false), __read(gameJSSoundLinks), false);
158
+ scriptTag = document.createElement('script');
159
+ _a = scriptTag;
160
+ return [4 /*yield*/, (0, utils_1.readFile)(gameTestFilePath)];
161
+ case 1:
162
+ _a.innerHTML = _b.sent();
163
+ return [4 /*yield*/, (0, updateScriptTag_1.updateScriptTag)(scriptTag, sourcePath, destinationPath, target.serverType, assetPathMap)];
164
+ case 2:
165
+ _b.sent();
166
+ updatedContent = scriptTag.innerHTML;
167
+ gameJSSpriteLinks.forEach(function (link) {
168
+ return expect(updatedContent).toContain(link.target);
169
+ });
170
+ gameJSSoundLinks.forEach(function (link) {
171
+ return expect(updatedContent).toContain(link.target);
172
+ });
173
+ return [2 /*return*/];
174
+ }
175
+ });
176
+ }); });
124
177
  });
178
+ var gameJSSpriteLinks = [
179
+ {
180
+ source: 'sprites/enemy.png',
181
+ target: 'link-to-compiled-webv/sprites/enemy.png'
182
+ },
183
+ {
184
+ source: 'sprites/enemyr.png',
185
+ target: 'link-to-compiled-webv/sprites/enemyr.png'
186
+ },
187
+ {
188
+ source: 'sprites/items.png',
189
+ target: 'link-to-compiled-webv/sprites/items.png'
190
+ },
191
+ {
192
+ source: 'sprites/player.png',
193
+ target: 'link-to-compiled-webv/sprites/player.png'
194
+ },
195
+ {
196
+ source: 'sprites/playerl.png',
197
+ target: 'link-to-compiled-webv/sprites/playerl.png'
198
+ },
199
+ {
200
+ source: 'sprites/tiles.png',
201
+ target: 'link-to-compiled-webv/sprites/tiles.png'
202
+ }
203
+ ];
204
+ var gameJSSoundLinks = [
205
+ {
206
+ source: 'sounds/aboveground_bgm.ogg',
207
+ target: 'link-to-compiled-webv/sounds/aboveground_bgm.ogg'
208
+ },
209
+ {
210
+ source: 'sounds/breakblock.wav',
211
+ target: 'link-to-compiled-webv/sounds/breakblock.wav'
212
+ },
213
+ {
214
+ source: 'sounds/bump.wav',
215
+ target: 'link-to-compiled-webv/sounds/bump.wav'
216
+ },
217
+ {
218
+ source: 'sounds/coin.wav',
219
+ target: 'link-to-compiled-webv/sounds/coin.wav'
220
+ },
221
+ {
222
+ source: 'sounds/fireball.wav',
223
+ target: 'link-to-compiled-webv/sounds/fireball.wav'
224
+ },
225
+ {
226
+ source: 'sounds/flagpole.wav',
227
+ target: 'link-to-compiled-webv/sounds/flagpole.wav'
228
+ },
229
+ {
230
+ source: 'sounds/itemAppear.wav',
231
+ target: 'link-to-compiled-webv/sounds/itemAppear.wav'
232
+ },
233
+ {
234
+ source: 'sounds/jump-small.wav',
235
+ target: 'link-to-compiled-webv/sounds/jump-small.wav'
236
+ },
237
+ {
238
+ source: 'sounds/jump-super.wav',
239
+ target: 'link-to-compiled-webv/sounds/jump-super.wav'
240
+ },
241
+ {
242
+ source: 'sounds/kick.wav',
243
+ target: 'link-to-compiled-webv/sounds/kick.wav'
244
+ },
245
+ {
246
+ source: 'sounds/mariodie.wav',
247
+ target: 'link-to-compiled-webv/sounds/mariodie.wav'
248
+ },
249
+ {
250
+ source: 'sounds/pipe.wav',
251
+ target: 'link-to-compiled-webv/sounds/pipe.wav'
252
+ },
253
+ {
254
+ source: 'sounds/powerup.wav',
255
+ target: 'link-to-compiled-webv/sounds/powerup.wav'
256
+ },
257
+ {
258
+ source: 'sounds/stage_clear.wav',
259
+ target: 'link-to-compiled-webv/sounds/stage_clear.wav'
260
+ },
261
+ {
262
+ source: 'sounds/stomp.wav',
263
+ target: 'link-to-compiled-webv/sounds/stomp.wav'
264
+ },
265
+ {
266
+ source: 'sounds/underground_bgm.ogg',
267
+ target: 'link-to-compiled-webv/sounds/underground_bgm.ogg'
268
+ }
269
+ ];
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+ export {};
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ /**
3
+ * @jest-environment jsdom
4
+ */
5
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
+ return new (P || (P = Promise))(function (resolve, reject) {
8
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
12
+ });
13
+ };
14
+ var __generator = (this && this.__generator) || function (thisArg, body) {
15
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
16
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
17
+ function verb(n) { return function (v) { return step([n, v]); }; }
18
+ function step(op) {
19
+ if (f) throw new TypeError("Generator is already executing.");
20
+ while (_) try {
21
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
22
+ if (y = 0, t) op = [op[0] & 2, t.value];
23
+ switch (op[0]) {
24
+ case 0: case 1: t = op; break;
25
+ case 4: _.label++; return { value: op[1], done: false };
26
+ case 5: _.label++; y = op[1]; op = [0]; continue;
27
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
28
+ default:
29
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
30
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
31
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
32
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
33
+ if (t[2]) _.ops.pop();
34
+ _.trys.pop(); continue;
35
+ }
36
+ op = body.call(thisArg, _);
37
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
38
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
39
+ }
40
+ };
41
+ var __read = (this && this.__read) || function (o, n) {
42
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
43
+ if (!m) return o;
44
+ var i = m.call(o), r, ar = [], e;
45
+ try {
46
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
47
+ }
48
+ catch (error) { e = { error: error }; }
49
+ finally {
50
+ try {
51
+ if (r && !r.done && (m = i["return"])) m.call(i);
52
+ }
53
+ finally { if (e) throw e.error; }
54
+ }
55
+ return ar;
56
+ };
57
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
58
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
59
+ if (ar || !(i in from)) {
60
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
61
+ ar[i] = from[i];
62
+ }
63
+ }
64
+ return to.concat(ar || Array.prototype.slice.call(from));
65
+ };
66
+ var __importDefault = (this && this.__importDefault) || function (mod) {
67
+ return (mod && mod.__esModule) ? mod : { "default": mod };
68
+ };
69
+ Object.defineProperty(exports, "__esModule", { value: true });
70
+ var path_1 = __importDefault(require("path"));
71
+ var utils_1 = require("@sasjs/utils");
72
+ var updateStyleTag_1 = require("../updateStyleTag");
73
+ var utils_2 = require("../../../../utils");
74
+ describe('updateStyleTag', function () {
75
+ var destinationPath;
76
+ beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
77
+ return __generator(this, function (_a) {
78
+ switch (_a.label) {
79
+ case 0:
80
+ destinationPath = path_1.default.join(__dirname, "cli-test-web-updateStyleTag-".concat((0, utils_1.generateTimestamp)()));
81
+ return [4 /*yield*/, (0, utils_1.createFolder)(destinationPath)];
82
+ case 1:
83
+ _a.sent();
84
+ process.projectDir = destinationPath;
85
+ return [4 /*yield*/, (0, utils_2.setConstants)()];
86
+ case 2:
87
+ _a.sent();
88
+ return [2 /*return*/];
89
+ }
90
+ });
91
+ }); });
92
+ afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
93
+ return __generator(this, function (_a) {
94
+ switch (_a.label) {
95
+ case 0: return [4 /*yield*/, (0, utils_1.deleteFolder)(destinationPath)];
96
+ case 1:
97
+ _a.sent();
98
+ return [2 /*return*/];
99
+ }
100
+ });
101
+ }); });
102
+ it("should update links in css script", function () { return __awaiter(void 0, void 0, void 0, function () {
103
+ var sourcePath, styleFilePath, target, assetPathMap, scriptTag, _a, updatedContent;
104
+ return __generator(this, function (_b) {
105
+ switch (_b.label) {
106
+ case 0:
107
+ sourcePath = path_1.default.join(__dirname, 'testFiles');
108
+ styleFilePath = path_1.default.join(sourcePath, 'style1.css');
109
+ target = { serverType: utils_1.ServerType.SasViya };
110
+ assetPathMap = __spreadArray([], __read(assetLinks), false);
111
+ scriptTag = document.createElement('style');
112
+ _a = scriptTag;
113
+ return [4 /*yield*/, (0, utils_1.readFile)(styleFilePath)];
114
+ case 1:
115
+ _a.innerHTML = _b.sent();
116
+ return [4 /*yield*/, (0, updateStyleTag_1.updateStyleTag)(scriptTag, sourcePath, destinationPath, target.serverType, assetPathMap)];
117
+ case 2:
118
+ _b.sent();
119
+ updatedContent = scriptTag.innerHTML;
120
+ assetLinks.forEach(function (link) { return expect(updatedContent).toContain(link.target); });
121
+ return [2 /*return*/];
122
+ }
123
+ });
124
+ }); });
125
+ });
126
+ var assetLinks = [
127
+ {
128
+ source: 'assets/fa-solid-900.ttf',
129
+ target: 'link-to-compiled-webv/assets/fa-solid-900.ttf'
130
+ }
131
+ ];
@@ -66,10 +66,11 @@ var utils_1 = require("@sasjs/utils");
66
66
  var getTags_1 = require("./getTags");
67
67
  var updateScriptTag_1 = require("./updateScriptTag");
68
68
  var updateLinkTag_1 = require("./updateLinkTag");
69
+ var updateStyleTag_1 = require("./updateStyleTag");
69
70
  var updateAllTags = function (parsedHtml, _a) {
70
71
  var webSourcePathFull = _a.webSourcePathFull, destinationPath = _a.destinationPath, serverType = _a.serverType, assetPathMap = _a.assetPathMap;
71
72
  return __awaiter(void 0, void 0, void 0, function () {
72
- var assetsNotFound, scriptTags, styleTags, faviconTags, linkTags, imgTags, notFoundErrors;
73
+ var assetsNotFound, scriptTags, styleExternalTags, styleInPageTags, styleTags, faviconTags, imgTags, sourceTags, srcTags, notFoundErrors;
73
74
  return __generator(this, function (_b) {
74
75
  switch (_b.label) {
75
76
  case 0:
@@ -87,25 +88,38 @@ var updateAllTags = function (parsedHtml, _a) {
87
88
  }); })];
88
89
  case 1:
89
90
  _b.sent();
90
- styleTags = (0, getTags_1.getStyleTags)(parsedHtml);
91
+ styleExternalTags = (0, getTags_1.getStyleTags)(parsedHtml);
92
+ styleInPageTags = (0, getTags_1.getStyleInPageTags)(parsedHtml);
93
+ styleTags = __spreadArray(__spreadArray([], __read(styleExternalTags), false), __read(styleInPageTags), false);
94
+ return [4 /*yield*/, (0, utils_1.asyncForEach)(styleTags, function (tag) { return __awaiter(void 0, void 0, void 0, function () {
95
+ return __generator(this, function (_a) {
96
+ switch (_a.label) {
97
+ case 0: return [4 /*yield*/, (0, updateStyleTag_1.updateStyleTag)(tag, webSourcePathFull, destinationPath, serverType, assetPathMap).catch(function (e) { return assetsNotFound.push(e); })];
98
+ case 1:
99
+ _a.sent();
100
+ return [2 /*return*/];
101
+ }
102
+ });
103
+ }); })];
104
+ case 2:
105
+ _b.sent();
91
106
  faviconTags = (0, getTags_1.getFaviconTags)(parsedHtml);
92
- linkTags = __spreadArray(__spreadArray([], __read(styleTags), false), __read(faviconTags), false);
93
- linkTags.forEach(function (tag) {
107
+ faviconTags.forEach(function (tag) {
94
108
  try {
95
109
  (0, updateLinkTag_1.updateLinkTag)(tag, assetPathMap);
96
110
  }
97
111
  catch (error) {
98
- console.log(tag, error);
99
112
  assetsNotFound.push(error);
100
113
  }
101
114
  });
102
115
  imgTags = (0, getTags_1.getImgTags)(parsedHtml);
103
- imgTags.forEach(function (tag) {
116
+ sourceTags = (0, getTags_1.getSourceTags)(parsedHtml);
117
+ srcTags = __spreadArray(__spreadArray([], __read(imgTags), false), __read(sourceTags), false);
118
+ srcTags.forEach(function (tag) {
104
119
  try {
105
- (0, updateLinkTag_1.updateLinkTag)(tag, assetPathMap, 'image');
120
+ (0, updateLinkTag_1.updateLinkTag)(tag, assetPathMap, 'src');
106
121
  }
107
122
  catch (error) {
108
- console.log(tag, error);
109
123
  assetsNotFound.push(error);
110
124
  }
111
125
  });
@@ -1,4 +1,4 @@
1
- export declare const updateLinkTag: (linkTag: HTMLLinkElement | HTMLImageElement, assetPathMap: {
1
+ export declare const updateLinkTag: (linkTag: HTMLLinkElement | HTMLSourceElement | HTMLImageElement, assetPathMap: {
2
2
  source: string;
3
3
  target: string;
4
- }[], tagType?: 'link' | 'image') => void;
4
+ }[], tagType?: 'link' | 'src') => void;
@@ -1,5 +1,5 @@
1
1
  import { ServerType } from '@sasjs/utils';
2
- export declare const updateScriptTag: (tag: HTMLLinkElement, webSourcePathFull: string, destinationPath: string, serverType: ServerType, assetPathMap: {
2
+ export declare const updateScriptTag: (tag: HTMLScriptElement, webSourcePathFull: string, destinationPath: string, serverType: ServerType, assetPathMap: {
3
3
  source: string;
4
4
  target: string;
5
5
  }[]) => Promise<void>;
@@ -45,28 +45,26 @@ var utils_1 = require("@sasjs/utils");
45
45
  var js_base64_1 = require("js-base64");
46
46
  var getWebServiceContent_1 = require("./getWebServiceContent");
47
47
  var updateScriptTag = function (tag, webSourcePathFull, destinationPath, serverType, assetPathMap) { return __awaiter(void 0, void 0, void 0, function () {
48
- var scriptPath, isUrl, content_1, serviceContent;
48
+ var scriptPath, isUrl, _content, content, serviceContent, _content, content;
49
49
  return __generator(this, function (_a) {
50
50
  switch (_a.label) {
51
51
  case 0:
52
52
  scriptPath = tag.getAttribute('src');
53
- isUrl = scriptPath && (scriptPath.startsWith('http') || scriptPath.startsWith('//'));
54
- if (!scriptPath) return [3 /*break*/, 7];
53
+ if (!scriptPath) return [3 /*break*/, 8];
54
+ isUrl = scriptPath.startsWith('http') || scriptPath.startsWith('//');
55
55
  if (!!isUrl) return [3 /*break*/, 7];
56
56
  return [4 /*yield*/, (0, utils_1.readFile)(path_1.default.join(webSourcePathFull, scriptPath)).catch(function (_) {
57
57
  throw new Error("Unable to find file: ".concat(scriptPath));
58
58
  })];
59
59
  case 1:
60
- content_1 = _a.sent();
61
- assetPathMap.forEach(function (pathEntry) {
62
- content_1 = content_1.replace(new RegExp(pathEntry.source, 'g'), pathEntry.target);
63
- });
60
+ _content = _a.sent();
61
+ content = modifyLinksInContent(_content, assetPathMap);
64
62
  if (!(serverType === utils_1.ServerType.SasViya)) return [3 /*break*/, 3];
65
- return [4 /*yield*/, (0, utils_1.createFile)(path_1.default.join(destinationPath, scriptPath), content_1)];
63
+ return [4 /*yield*/, (0, utils_1.createFile)(path_1.default.join(destinationPath, scriptPath), content)];
66
64
  case 2:
67
65
  _a.sent();
68
66
  return [3 /*break*/, 6];
69
- case 3: return [4 /*yield*/, (0, getWebServiceContent_1.getWebServiceContent)((0, js_base64_1.encode)(content_1), 'JS', serverType)];
67
+ case 3: return [4 /*yield*/, (0, getWebServiceContent_1.getWebServiceContent)((0, js_base64_1.encode)(content), 'JS', serverType)];
70
68
  case 4:
71
69
  serviceContent = _a.sent();
72
70
  return [4 /*yield*/, (0, utils_1.createFile)(path_1.default.join(destinationPath, "".concat(scriptPath.replace(/\.js$/, '-js'), ".sas")), serviceContent)];
@@ -78,8 +76,21 @@ var updateScriptTag = function (tag, webSourcePathFull, destinationPath, serverT
78
76
  return entry.source === scriptPath || "./".concat(entry.source) === scriptPath;
79
77
  }).target);
80
78
  _a.label = 7;
81
- case 7: return [2 /*return*/];
79
+ case 7: return [3 /*break*/, 9];
80
+ case 8:
81
+ _content = tag.innerHTML;
82
+ content = modifyLinksInContent(_content, assetPathMap);
83
+ tag.innerHTML = content;
84
+ _a.label = 9;
85
+ case 9: return [2 /*return*/];
82
86
  }
83
87
  });
84
88
  }); };
85
89
  exports.updateScriptTag = updateScriptTag;
90
+ var modifyLinksInContent = function (_content, assetPathMap) {
91
+ var content = _content;
92
+ assetPathMap.forEach(function (pathEntry) {
93
+ content = content.replace(new RegExp(pathEntry.source, 'g'), pathEntry.target);
94
+ });
95
+ return content;
96
+ };
@@ -0,0 +1,5 @@
1
+ import { ServerType } from '@sasjs/utils';
2
+ export declare const updateStyleTag: (tag: HTMLStyleElement | HTMLLinkElement, webSourcePathFull: string, destinationPath: string, serverType: ServerType, assetPathMap: {
3
+ source: string;
4
+ target: string;
5
+ }[]) => Promise<void>;