alicezetion 1.5.3 → 1.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/.cache/replit/__replit_disk_meta.json +1 -1
  2. package/.cache/replit/nix/env.json +1 -1
  3. package/index.js +601 -386
  4. package/leiamnash/addExternalModule.js +19 -16
  5. package/leiamnash/addUserToGroup.js +113 -79
  6. package/leiamnash/changeAdminStatus.js +79 -79
  7. package/leiamnash/changeArchivedStatus.js +55 -41
  8. package/leiamnash/changeBio.js +77 -65
  9. package/leiamnash/changeBlockedStatus.js +47 -36
  10. package/leiamnash/changeGroupImage.js +129 -106
  11. package/leiamnash/changeNickname.js +59 -45
  12. package/leiamnash/changeThreadColor.js +71 -62
  13. package/leiamnash/changeThreadEmoji.js +55 -42
  14. package/leiamnash/chat.js +459 -374
  15. package/leiamnash/createNewGroup.js +86 -70
  16. package/leiamnash/createPoll.js +71 -60
  17. package/leiamnash/deleteMessage.js +56 -45
  18. package/leiamnash/deleteThread.js +56 -43
  19. package/leiamnash/forwardAttachment.js +60 -48
  20. package/leiamnash/getCurrentUserID.js +7 -7
  21. package/leiamnash/getEmojiUrl.js +29 -27
  22. package/leiamnash/getFriendsList.js +84 -73
  23. package/leiamnash/getThreadHistory.js +645 -537
  24. package/leiamnash/getThreadHistoryDeprecated.js +93 -0
  25. package/leiamnash/getThreadInfo.js +206 -425
  26. package/leiamnash/getThreadInfoDeprecated.js +80 -0
  27. package/leiamnash/getThreadList.js +238 -213
  28. package/leiamnash/getThreadListDeprecated.js +75 -0
  29. package/leiamnash/getThreadPictures.js +79 -59
  30. package/leiamnash/getUserID.js +66 -62
  31. package/leiamnash/getUserInfo.js +72 -113
  32. package/leiamnash/handleFriendRequest.js +61 -46
  33. package/leiamnash/handleMessageRequest.js +65 -49
  34. package/leiamnash/httpGet.js +52 -49
  35. package/leiamnash/httpPost.js +52 -48
  36. package/leiamnash/listenMqtt.js +789 -787
  37. package/leiamnash/logout.js +75 -68
  38. package/leiamnash/markAsDelivered.js +58 -48
  39. package/leiamnash/markAsRead.js +80 -70
  40. package/leiamnash/markAsReadAll.js +49 -42
  41. package/leiamnash/markAsSeen.js +59 -51
  42. package/leiamnash/muteThread.js +52 -47
  43. package/leiamnash/removeUserFromGroup.js +79 -49
  44. package/leiamnash/resolvePhotoUrl.js +45 -37
  45. package/leiamnash/searchForThread.js +53 -43
  46. package/leiamnash/sendTypingIndicator.js +103 -80
  47. package/leiamnash/setMessageReaction.js +117 -109
  48. package/leiamnash/setPostReaction.js +76 -102
  49. package/leiamnash/setTitle.js +86 -74
  50. package/leiamnash/threadColors.js +57 -39
  51. package/leiamnash/unfriend.js +52 -43
  52. package/leiamnash/unsendMessage.js +49 -40
  53. package/package.json +72 -90
  54. package/utils.js +1356 -1684
  55. package/Extra/Database/index.js +0 -469
  56. package/Extra/ExtraAddons.js +0 -82
  57. package/Extra/ExtraFindUID.js +0 -62
  58. package/Extra/ExtraGetThread.js +0 -340
  59. package/Extra/ExtraScreenShot.js +0 -430
  60. package/Extra/ExtraUptimeRobot.js +0 -38
  61. package/Extra/Html/Classic/script.js +0 -119
  62. package/Extra/Html/Classic/style.css +0 -8
  63. package/Extra/Security/AES_256_GCM/index.js +0 -0
  64. package/Extra/Security/Base/Step_1.js +0 -6
  65. package/Extra/Security/Base/Step_2.js +0 -22
  66. package/Extra/Security/Base/Step_3.js +0 -22
  67. package/Extra/Security/Base/index.js +0 -174
  68. package/Extra/Security/Index.js +0 -5
  69. package/Extra/Security/Step_1.js +0 -6
  70. package/Extra/Security/Step_2.js +0 -22
  71. package/Extra/Security/Step_3.js +0 -22
  72. package/Extra/Src/Change_Environment.js +0 -24
  73. package/Extra/Src/Check_Update.js +0 -67
  74. package/Extra/Src/History.js +0 -115
  75. package/Extra/Src/Instant_Update.js +0 -65
  76. package/Extra/Src/Last-Run.js +0 -65
  77. package/Extra/Src/Premium.js +0 -81
  78. package/Extra/Src/Release_Memory.js +0 -41
  79. package/Extra/Src/Websocket.js +0 -213
  80. package/Extra/Src/image/checkmate.jpg +0 -0
  81. package/Extra/Src/uuid.js +0 -137
  82. package/Func/AcceptAgreement.js +0 -31
  83. package/Func/ClearCache.js +0 -64
  84. package/Func/ReportV1.js +0 -54
  85. package/Language/index.json +0 -217
  86. package/Main.js +0 -1270
  87. package/broadcast.js +0 -40
  88. package/leiamnash/Dev_Horizon_Data.js +0 -125
  89. package/leiamnash/Premium.js +0 -25
  90. package/leiamnash/Screenshot.js +0 -83
  91. package/leiamnash/changeAvt.js +0 -85
  92. package/leiamnash/getAccessToken.js +0 -28
  93. package/leiamnash/getMessage.js +0 -80
  94. package/leiamnash/getThreadMain.js +0 -220
  95. package/leiamnash/getUID.js +0 -59
  96. package/leiamnash/getUserInfoMain.js +0 -65
  97. package/leiamnash/getUserInfoV2.js +0 -32
  98. package/leiamnash/getUserInfoV3.js +0 -63
  99. package/leiamnash/getUserInfoV4.js +0 -55
  100. package/leiamnash/getUserInfoV5.js +0 -61
  101. package/leiamnash/httpPostFormData.js +0 -41
  102. package/leiamnash/sendMessage.js +0 -379
  103. package/logger.js +0 -66
@@ -1,430 +0,0 @@
1
- /* global document */
2
- 'use strict';
3
- const {promisify} = require('util');
4
- const fs = require('fs');
5
- const fileUrl = require('file-url');
6
- const puppeteer = require('puppeteer');
7
- const toughCookie = require('tough-cookie');
8
-
9
- const writeFile = promisify(fs.writeFile);
10
-
11
- const isUrl = string => /^(https?|file):\/\/|^data:/.test(string);
12
-
13
- const scrollToElement = (element, options) => {
14
- const isOverflown = element => {
15
- return (
16
- element.scrollHeight > element.clientHeight ||
17
- element.scrollWidth > element.clientWidth
18
- );
19
- };
20
-
21
- const findScrollParent = element => {
22
- if (element === undefined) {
23
- return;
24
- }
25
-
26
- if (isOverflown(element)) {
27
- return element;
28
- }
29
-
30
- return findScrollParent(element.parentElement);
31
- };
32
-
33
- const calculateOffset = (rect, options) => {
34
- if (options === undefined) {
35
- return {
36
- x: rect.left,
37
- y: rect.top
38
- };
39
- }
40
-
41
- const offset = options.offset || 0;
42
-
43
- switch (options.offsetFrom) {
44
- case 'top':
45
- return {
46
- x: rect.left,
47
- y: rect.top + offset
48
- };
49
- case 'right':
50
- return {
51
- x: rect.left - offset,
52
- y: rect.top
53
- };
54
- case 'bottom':
55
- return {
56
- x: rect.left,
57
- y: rect.top - offset
58
- };
59
- case 'left':
60
- return {
61
- x: rect.left + offset,
62
- y: rect.top
63
- };
64
- default:
65
- throw new Error('Invalid `scrollToElement.offsetFrom` value');
66
- }
67
- };
68
-
69
- const rect = element.getBoundingClientRect();
70
- const offset = calculateOffset(rect, options);
71
- const parent = findScrollParent(element);
72
-
73
- if (parent !== undefined) {
74
- parent.scrollIntoView(true);
75
- parent.scrollTo(offset.x, offset.y);
76
- }
77
- };
78
-
79
- const disableAnimations = () => {
80
- const rule = `
81
- *,
82
- ::before,
83
- ::after {
84
- animation: initial !important;
85
- transition: initial !important;
86
- }
87
- `;
88
-
89
- const style = document.createElement('style');
90
- document.body.append(style);
91
-
92
- style.sheet.insertRule(rule);
93
- };
94
-
95
- const getBoundingClientRect = element => {
96
- const {top, left, height, width, x, y} = element.getBoundingClientRect();
97
- return {top, left, height, width, x, y};
98
- };
99
-
100
- const parseCookie = (url, cookie) => {
101
- if (typeof cookie === 'object') {
102
- return cookie;
103
- }
104
-
105
- const jar = new toughCookie.CookieJar(undefined, {rejectPublicSuffixes: false});
106
- jar.setCookieSync(cookie, url);
107
- const returnValue = jar.serializeSync().cookies[0];
108
-
109
- // Use this instead of the above when the following issue is fixed:
110
- // https://github.com/salesforce/tough-cookie/issues/149
111
- // const ret = toughCookie.parse(cookie).serializeSync();
112
-
113
- returnValue.name = returnValue.key;
114
- delete returnValue.key;
115
-
116
- if (returnValue.expires) {
117
- returnValue.expires = Math.floor(new Date(returnValue.expires) / 1000);
118
- }
119
-
120
- return returnValue;
121
- };
122
-
123
- const imagesHaveLoaded = () => [...document.images].map(element => element.complete);
124
-
125
- const captureWebsite = async (input, options) => {
126
- options = {
127
- inputType: 'url',
128
- width: 1920,
129
- height: 1080,
130
- scaleFactor: 2,
131
- fullPage: false,
132
- defaultBackground: true,
133
- timeout: 60, // The Puppeteer default of 30 is too short
134
- delay: 0,
135
- debug: false,
136
- darkMode: true,
137
- launchOptions: { devtools:true },
138
- _keepAlive: true,
139
- isJavaScriptEnabled: true,
140
- inset: 0,
141
- args: ["--webview-disable-safebrowsing-support",
142
- "--disable-web-security"],
143
- ignoreHTTPSErrors: true,
144
- ...options
145
- };
146
-
147
- const isHTMLContent = options.inputType === 'html';
148
-
149
- input = isHTMLContent || isUrl(input) ? input : fileUrl(input);
150
-
151
- const timeoutInSeconds = options.timeout * 1000;
152
-
153
- const viewportOptions = {
154
- width: options.width,
155
- height: options.height,
156
- deviceScaleFactor: options.scaleFactor
157
- };
158
-
159
- const screenshotOptions = {};
160
-
161
- if (options.type) {
162
- screenshotOptions.type = options.type;
163
- }
164
-
165
- if (options.quality) {
166
- screenshotOptions.quality = options.quality * 100;
167
- }
168
-
169
- if (options.fullPage) {
170
- screenshotOptions.fullPage = options.fullPage;
171
- }
172
-
173
- if (typeof options.defaultBackground === 'boolean') {
174
- screenshotOptions.omitBackground = !options.defaultBackground;
175
- }
176
-
177
- const launchOptions = {...options.launchOptions};
178
-
179
- if (options.debug) {
180
- launchOptions.headless = false;
181
- launchOptions.slowMo = 100;
182
- }
183
-
184
- const browser = options._browser || await puppeteer.launch(launchOptions);
185
- const page = await browser.newPage();
186
-
187
- if (options.preloadFunction) {
188
- await page.evaluateOnNewDocument(options.preloadFunction);
189
- }
190
-
191
- await page.setJavaScriptEnabled(options.isJavaScriptEnabled);
192
-
193
- if (options.debug) {
194
- page.on('console', message => {
195
- let {url, lineNumber, columnNumber} = message.location();
196
- lineNumber = lineNumber ? `:${lineNumber}` : '';
197
- columnNumber = columnNumber ? `:${columnNumber}` : '';
198
- const location = url ? ` (${url}${lineNumber}${columnNumber})` : '';
199
- console.log(`\nPage log:${location}\n${message.text()}\n`);
200
- });
201
-
202
- page.on('pageerror', error => {
203
- console.log('\nPage error:', error, '\n');
204
- });
205
-
206
- // TODO: Add more events from https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#event-requestfailed
207
- }
208
-
209
- if (options.authentication) {
210
- await page.authenticate(options.authentication);
211
- }
212
-
213
- if (options.cookies) {
214
- const cookies = options.cookies.map(cookie => parseCookie(isHTMLContent ? 'about:blank' : input, cookie));
215
- await page.setCookie(...cookies);
216
- }
217
-
218
- if (options.headers) {
219
- await page.setExtraHTTPHeaders(options.headers);
220
- }
221
-
222
- if (options.userAgent) {
223
- await page.setUserAgent(options.userAgent);
224
- }
225
-
226
- await page.setViewport(viewportOptions);
227
-
228
- if (options.emulateDevice) {
229
- if (!(options.emulateDevice in puppeteer.devices)) {
230
- throw new Error(`The device name \`${options.emulateDevice}\` is not supported`);
231
- }
232
-
233
- await page.emulate(puppeteer.devices[options.emulateDevice]);
234
- }
235
-
236
- await page.emulateMediaFeatures([{
237
- name: 'prefers-color-scheme',
238
- value: options.darkMode ? 'dark' : 'light'
239
- }]);
240
-
241
- await page[isHTMLContent ? 'setContent' : 'goto'](input, {
242
- timeout: timeoutInSeconds,
243
- waitUntil: 'networkidle2'
244
- });
245
- if (options.disableAnimations) {
246
- await page.evaluate(disableAnimations, options.disableAnimations);
247
- }
248
-
249
- if (options.hideElements) {
250
- await page.addStyleTag({
251
- content: `${options.hideElements.join(', ')} { visibility: hidden !important; }`
252
- });
253
- }
254
-
255
- if (options.removeElements) {
256
- await page.addStyleTag({
257
- content: `${options.removeElements.join(', ')} { display: none !important; }`
258
- });
259
- }
260
-
261
- if (options.clickElement) {
262
- await page.click(options.clickElement);
263
- }
264
-
265
- const getInjectKey = (ext, value) => isUrl(value) ? 'url' : (value.endsWith(`.${ext}`) ? 'path' : 'content');
266
-
267
- if (!options.isJavaScriptEnabled) {
268
- // Enable JavaScript again for `modules` and `scripts`.
269
- await page.setJavaScriptEnabled(true);
270
- }
271
-
272
- if (options.modules) {
273
- await Promise.all(options.modules.map(module_ => {
274
- return page.addScriptTag({
275
- [getInjectKey('js', module_)]: module_,
276
- type: 'module'
277
- });
278
- }));
279
- }
280
-
281
- if (options.scripts) {
282
- await Promise.all(options.scripts.map(script => {
283
- return page.addScriptTag({
284
- [getInjectKey('js', script)]: script
285
- });
286
- }));
287
- }
288
-
289
- if (options.styles) {
290
- await Promise.all(options.styles.map(style => {
291
- return page.addStyleTag({
292
- [getInjectKey('css', style)]: style
293
- });
294
- }));
295
- }
296
-
297
- if (options.waitForElement) {
298
- await page.waitForSelector(options.waitForElement, {
299
- visible: true,
300
- timeout: timeoutInSeconds
301
- });
302
- }
303
-
304
- if (options.beforeScreenshot) {
305
- await options.beforeScreenshot(page, browser);
306
- }
307
-
308
- if (options.element) {
309
- await page.waitForSelector(options.element, {
310
- visible: true,
311
- timeout: timeoutInSeconds
312
- });
313
- screenshotOptions.clip = await page.$eval(options.element, getBoundingClientRect);
314
- screenshotOptions.fullPage = false;
315
- }
316
-
317
- if (options.delay) {
318
- await page.waitForTimeout(options.delay * 1000);
319
- }
320
-
321
- if (options.scrollToElement) {
322
- // eslint-disable-next-line unicorn/prefer-ternary
323
- if (typeof options.scrollToElement === 'object') {
324
- await page.$eval(options.scrollToElement.element, scrollToElement, options.scrollToElement);
325
- } else {
326
- await page.$eval(options.scrollToElement, scrollToElement);
327
- }
328
- }
329
-
330
- if (screenshotOptions.fullPage) {
331
- // Get the height of the rendered page
332
- const bodyHandle = await page.$('body');
333
- const bodyBoundingHeight = await bodyHandle.boundingBox();
334
- await bodyHandle.dispose();
335
-
336
- // Scroll one viewport at a time, pausing to let content load
337
- const viewportHeight = viewportOptions.height;
338
- let viewportIncrement = 0;
339
- while (viewportIncrement + viewportHeight < bodyBoundingHeight) {
340
- const navigationPromise = page.waitForNavigation({waitUntil: 'networkidle0'});
341
- /* eslint-disable no-await-in-loop */
342
- await page.evaluate(_viewportHeight => {
343
- /* eslint-disable no-undef */
344
- window.scrollBy(0, _viewportHeight);
345
- /* eslint-enable no-undef */
346
- }, viewportHeight);
347
- await navigationPromise;
348
- /* eslint-enable no-await-in-loop */
349
- viewportIncrement += viewportHeight;
350
- }
351
-
352
- // Scroll back to top
353
- await page.evaluate(_ => {
354
- /* eslint-disable no-undef */
355
- window.scrollTo(0, 0);
356
- /* eslint-enable no-undef */
357
- });
358
-
359
- // Some extra delay to let images load
360
- await page.waitForFunction(imagesHaveLoaded, {timeout: timeoutInSeconds});
361
- }
362
-
363
- if (options.inset && !screenshotOptions.fullPage) {
364
- const inset = {top: 0, right: 0, bottom: 0, left: 0};
365
- for (const key of Object.keys(inset)) {
366
- if (typeof options.inset === 'number') {
367
- inset[key] = options.inset;
368
- } else {
369
- inset[key] = options.inset[key] || 0;
370
- }
371
- }
372
-
373
- let clipOptions = screenshotOptions.clip;
374
-
375
- if (!clipOptions) {
376
- clipOptions = await page.evaluate(() => ({
377
- x: 0,
378
- y: 0,
379
- /* eslint-disable no-undef */
380
- height: window.innerHeight,
381
- width: window.innerWidth
382
- /* eslint-enable no-undef */
383
- }));
384
- }
385
-
386
- const x = clipOptions.x + inset.left;
387
- const y = clipOptions.y + inset.top;
388
- const width = clipOptions.width - (inset.left + inset.right);
389
- const height = clipOptions.height - (inset.top + inset.bottom);
390
-
391
- if (width === 0 || height === 0) {
392
- await page.close();
393
-
394
- throw new Error('When using the `clip` option, the width or height of the screenshot cannot be equal to 0.');
395
- }
396
-
397
- screenshotOptions.clip = {x, y, width, height};
398
- }
399
-
400
- const buffer = await page.screenshot(screenshotOptions);
401
-
402
- await page.close();
403
-
404
- if (!options._keepAlive) {
405
- await browser.close();
406
- }
407
-
408
- return buffer;
409
- };
410
-
411
- module.exports.file = async (url, filePath, options = {}) => {
412
- const screenshot = await captureWebsite(url, options);
413
-
414
- await writeFile(filePath, screenshot, {
415
- flag: options.overwrite ? 'w' : 'wx'
416
- });
417
- };
418
-
419
- module.exports.buffer = async (url, options) => captureWebsite(url, options);
420
-
421
- module.exports.base64 = async (url, options) => {
422
- const screenshot = await captureWebsite(url, options);
423
- return screenshot.toString('base64');
424
- };
425
-
426
- module.exports.devices = Object.values(puppeteer.devices).map(device => device.name);
427
-
428
- if (process.env.NODE_ENV === 'test') {
429
- module.exports._startBrowser = puppeteer.launch.bind(puppeteer);
430
- }
@@ -1,38 +0,0 @@
1
- 'use strict';
2
-
3
- const logger = require("../logger");
4
- module.exports = function() {
5
- var Logger = global.Fca.Require.logger;
6
- switch (process.platform) {
7
- case 'win32': {
8
- if (global.Fca.Require.FastConfig.Uptime) {
9
- logger.Warning(global.Fca.Require.Language.ExtraUpTime.NotSupport);
10
- }
11
- break;
12
- }
13
- case 'darwin': {
14
- if (global.Fca.Require.FastConfig.Uptime) {
15
- logger.Warning(global.Fca.Require.Language.ExtraUpTime.NotSupport);
16
- }
17
- break;
18
- }
19
- case 'linux':
20
- if (process.env.REPL_SLUG) {
21
- var Value = global.Fca.Require.FastConfig;
22
- var Fetch = global.Fca.Require.Fetch;
23
- if (Value.Uptime) {
24
- logger.Normal(global.Fca.Require.Language.ExtraUpTime.Uptime);//
25
- return setInterval(function() {
26
- Fetch.get(`https://${process.env.REPL_SLUG}.${process.env.REPL_OWNER}.repl.co`);
27
- },10*1000);
28
- }
29
- else return;
30
- }
31
- else {
32
- Logger.Warning(global.Fca.Require.Language.ExtraUpTime.NotSupport);
33
- }
34
- break;
35
- default:
36
- Logger.Warning(global.Fca.Require.Language.ExtraUpTime.NotSupport);
37
- }
38
- };
@@ -1,119 +0,0 @@
1
- var c = document.getElementById("myCanvas");
2
- var ctx = c.getContext("2d");
3
- var mask;
4
-
5
- var pointCount = 500;
6
- var str = "Horizon";
7
- var fontStr = "bold 100pt Helvetica Neue, Helvetica, Arial, sans-serif";
8
-
9
- ctx.font = fontStr;
10
- ctx.textAlign = "auto";
11
- c.width = (ctx.measureText(str).width);
12
- c.height = 100; // Set to font size
13
-
14
- var whitePixels = [];
15
- var points = [];
16
- var point = function(x,y,vx,vy){
17
- this.x = x;
18
- this.y = y;
19
- this.vx = vx || 1;
20
- this.vy = vy || 1;
21
- };
22
- point.prototype.update = function() {
23
- ctx.beginPath();
24
- ctx.fillStyle = "#95a5a6";
25
- ctx.arc(this.x,this.y,1,0,2*Math.PI);
26
- ctx.fill();
27
- ctx.closePath();
28
-
29
- // Change direction if running into black pixel
30
- if (this.x+this.vx >= c.width || this.x+this.vx < 0 || mask.data[coordsToI(this.x+this.vx, this.y, mask.width)] != 255) {
31
- this.vx *= -1;
32
- this.x += this.vx*2;
33
- }
34
- if (this.y+this.vy >= c.height || this.y+this.vy < 0 || mask.data[coordsToI(this.x, this.y+this.vy, mask.width)] != 255) {
35
- this.vy *= -1;
36
- this.y += this.vy*2;
37
- }
38
-
39
- for (var k = 0, m = points.length; k<m; k++) {
40
- if (points[k]===this) continue;
41
-
42
- var d = Math.sqrt(Math.pow(this.x-points[k].x,2)+Math.pow(this.y-points[k].y,2));
43
- if (d < 5) {
44
- ctx.lineWidth = .2;
45
- ctx.beginPath();
46
- ctx.moveTo(this.x,this.y);
47
- ctx.lineTo(points[k].x,points[k].y);
48
- ctx.stroke();
49
- }
50
- if (d < 20) {
51
- ctx.lineWidth = .1;
52
- ctx.beginPath();
53
- ctx.moveTo(this.x,this.y);
54
- ctx.lineTo(points[k].x,points[k].y);
55
- ctx.stroke();
56
- }
57
- }
58
-
59
- this.x += this.vx;
60
- this.y += this.vy;
61
- };
62
-
63
- function loop() {
64
- ctx.clearRect(0,0,c.width,c.height);
65
- for (var k = 0, m = points.length; k < m; k++) {
66
- points[k].update();
67
- }
68
- }
69
-
70
- function init() {
71
- // Draw text
72
- ctx.beginPath();
73
- ctx.fillStyle = "#000";
74
- ctx.rect(0,0,c.width,c.height);
75
- ctx.fill();
76
- ctx.font = fontStr;
77
- ctx.textAlign = "left";
78
- ctx.fillStyle = "#fff";
79
- ctx.fillText(str,0,c.height/2+(c.height / 2));
80
- ctx.closePath();
81
-
82
- // Save mask
83
- mask = ctx.getImageData(0,0,c.width,c.height);
84
-
85
- // Draw background
86
- ctx.clearRect(0,0,c.width,c.height);
87
-
88
- // Save all white pixels in an array
89
- for (var i = 0; i < mask.data.length; i += 4) {
90
- if (mask.data[i] == 255 && mask.data[i+1] == 255 && mask.data[i+2] == 255 && mask.data[i+3] == 255) {
91
- whitePixels.push([iToX(i,mask.width),iToY(i,mask.width)]);
92
- }
93
- }
94
-
95
- for (var k = 0; k < pointCount; k++) {
96
- addPoint();
97
- }
98
- }
99
-
100
- function addPoint() {
101
- var spawn = whitePixels[Math.floor(Math.random()*whitePixels.length)];
102
-
103
- var p = new point(spawn[0],spawn[1], Math.floor(Math.random()*2-1), Math.floor(Math.random()*2-1));
104
- points.push(p);
105
- }
106
-
107
- function iToX(i,w) {
108
- return ((i%(4*w))/4);
109
- }
110
- function iToY(i,w) {
111
- return (Math.floor(i/(4*w)));
112
- }
113
- function coordsToI(x,y,w) {
114
- return ((mask.width*y)+x)*4;
115
-
116
- }
117
-
118
- setInterval(loop,50);
119
- init();
@@ -1,8 +0,0 @@
1
- html {
2
- background:#ecf0f1;
3
- }
4
- canvas {
5
- display:block;
6
- margin:auto;
7
- background:#ecf0f1;
8
- }
File without changes
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var CryptoJS = require("crypto-js");
4
- module.exports.EncryptState = function EncryptState(Data,PassWord) { return CryptoJS.AES.encrypt(Data, PassWord).toString(); };
5
-
6
- module.exports.DecryptState = function DecryptState(Data,PassWord) { return CryptoJS.AES.decrypt(Data, PassWord).toString(CryptoJS.enc.Utf8); };
@@ -1,22 +0,0 @@
1
- 'use strict';
2
-
3
- var CryptoJS = require("crypto-js");
4
-
5
- /**
6
- * Encrypt the text using the CryptoJS library and return the encrypted text as a Base64 string.
7
- * @param Data - The data to be encrypted.
8
- * @returns A string of characters that represent the encrypted data.
9
- */
10
- module.exports.Encrypt = function Encrypt(Data) {
11
- return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(Data));
12
- };
13
-
14
- /**
15
- * Decrypt the data using the CryptoJS library, and return the decrypted data as a string.
16
- * @param Data - The data to be decrypted.
17
- * @returns The decrypted data.
18
- */
19
-
20
- module.exports.Decrypt = function Decrypt(Data) {
21
- return CryptoJS.enc.Base64.parse(Data).toString(CryptoJS.enc.Utf8);
22
- };
@@ -1,22 +0,0 @@
1
- 'use strict';
2
-
3
- const crypto = require('crypto');
4
- const aes = require("aes-js");
5
-
6
- module.exports.encryptState = function encryptState(data, key) {
7
- let hashEngine = crypto.createHash("sha256");
8
- let hashKey = hashEngine.update(key).digest();
9
- let bytes = aes.utils.utf8.toBytes(data);
10
- let aesCtr = new aes.ModeOfOperation.ctr(hashKey);
11
- let encryptedData = aesCtr.encrypt(bytes);
12
- return aes.utils.hex.fromBytes(encryptedData);
13
- };
14
-
15
- module.exports.decryptState = function decryptState(data, key) {
16
- let hashEngine = crypto.createHash("sha256");
17
- let hashKey = hashEngine.update(key).digest();
18
- let encryptedBytes = aes.utils.hex.toBytes(data);
19
- let aesCtr = new aes.ModeOfOperation.ctr(hashKey);
20
- let decryptedData = aesCtr.decrypt(encryptedBytes);
21
- return aes.utils.utf8.fromBytes(decryptedData);
22
- };