vaderjs 1.7.6 → 1.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bundler/index.js CHANGED
@@ -42,19 +42,23 @@ try {
42
42
  format: "esm",
43
43
  ...(process.env.DEV ? { sourcemap: "inline" } : {}),
44
44
  packages: "bundle",
45
+ external:["vaderjs"]
45
46
  });
46
47
  } catch (error) {
47
48
  console.error(error)
48
49
  }
49
50
 
50
51
 
51
- let builtCode = fs.readFileSync(path.join(process.cwd(), 'dist', process.env.filePath), 'utf-8')
52
+ let builtCode = fs.readFileSync(path.join(process.cwd(), 'dist', process.env.filePath), 'utf-8')
53
+ console.log({builtCode, path:path.join(process.cwd(), 'dist', process.env.filePath) })
52
54
  const handleReplacements = (code) => {
53
55
  let lines = code.split('\n')
54
56
  let newLines = []
55
57
  for (let line of lines) {
56
58
  let hasImport = line.includes('import')
57
-
59
+ if(hasImport && line.includes('vaderjs')){
60
+ line = line.replace('vaderjs', '/src/vader/index.js')
61
+ }
58
62
  if (hasImport && line.includes('.css')) {
59
63
  try {
60
64
  let isSmallColon = line.includes("'")
package/index.ts CHANGED
@@ -322,33 +322,62 @@ export class Component {
322
322
  executeCallback();
323
323
  }
324
324
  }
325
- } useState(key, defaultValue, persist = false) {
325
+ }
326
+ useState(key, defaultValue, persist = false) {
326
327
  if (typeof window === "undefined")
327
- return [defaultValue, () => {
328
- }];
329
- let value = sessionStorage.getItem("state_" + key) ? JSON.parse(sessionStorage.getItem("state_" + key)).value : defaultValue;
328
+ return [defaultValue, () => {}];
329
+
330
+ // Retrieve initial value from sessionStorage or defaultValue
331
+ let value = sessionStorage.getItem("state_" + key)
332
+ ? JSON.parse(sessionStorage.getItem("state_" + key)).value
333
+ : defaultValue;
334
+
335
+ // Parse stringified values safely
330
336
  if (typeof value === "string") {
331
337
  try {
332
338
  value = JSON.parse(value);
333
- } catch (error) {
339
+ } catch {
340
+ // Value remains a string if parsing fails
334
341
  }
335
342
  }
336
- if (!window["listener" + key] && !isServer) {
337
- window["listener" + key] = true;
343
+
344
+ // Ensure event listener is added only once
345
+ if (!window[`listener_${key}`]) {
346
+ window[`listener_${key}`] = true;
338
347
  window.addEventListener("beforeunload", () => {
339
- !persist && sessionStorage.removeItem("state_" + key);
348
+ if (!persist) sessionStorage.removeItem("state_" + key);
340
349
  });
341
350
  }
351
+
342
352
  const setValue = (newValue) => {
343
353
  if (typeof newValue === "function") {
344
354
  newValue = newValue(value);
345
355
  }
346
- sessionStorage.setItem("state_" + key, JSON.stringify({ value: newValue }));
347
- this.forceUpdate(this.key);
356
+
357
+ const currentValue = sessionStorage.getItem("state_" + key)
358
+ ? JSON.parse(sessionStorage.getItem("state_" + key)).value
359
+ : defaultValue;
360
+
361
+ if (JSON.stringify(currentValue) === JSON.stringify(newValue)) {
362
+ return; // Skip if the value hasn't changed
363
+ }
364
+
365
+ sessionStorage.setItem(
366
+ "state_" + key,
367
+ JSON.stringify({ value: newValue })
368
+ );
369
+
370
+ if (this.forceUpdate) {
371
+ this.forceUpdate(this.key);
372
+ }
348
373
  };
374
+
349
375
  const getVal = () => {
350
- return sessionStorage.getItem("state_" + key) ? JSON.parse(sessionStorage.getItem("state_" + key)).value : defaultValue;
376
+ return sessionStorage.getItem("state_" + key)
377
+ ? JSON.parse(sessionStorage.getItem("state_" + key)).value
378
+ : defaultValue;
351
379
  };
380
+
352
381
  return [getVal, setValue];
353
382
  }
354
383
  useFetch(url, options) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vaderjs",
3
- "version": "1.7.6",
3
+ "version": "1.7.7",
4
4
  "description": "A simple and powerful JavaScript library for building modern web applications.",
5
5
  "bin": {
6
6
  "vaderjs": "./main.js"