vike 0.4.248 → 0.4.249-commit-55681da

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 (45) hide show
  1. package/bin.js +3 -0
  2. package/dist/client/runtime-client-routing/getPageContext.js +0 -2
  3. package/dist/client/runtime-client-routing/getPageContextFromHooks.d.ts +8 -8
  4. package/dist/client/runtime-client-routing/renderPageClient.d.ts +4 -4
  5. package/dist/node/api/utils.d.ts +2 -2
  6. package/dist/node/api/utils.js +2 -2
  7. package/dist/node/vite/plugins/build/pluginBuildConfig.js +2 -2
  8. package/dist/node/vite/plugins/pluginVirtualFiles.js +71 -113
  9. package/dist/node/vite/shared/loggerDev.d.ts +3 -0
  10. package/dist/node/vite/shared/loggerDev.js +29 -13
  11. package/dist/node/vite/shared/loggerVite.js +3 -3
  12. package/dist/node/vite/shared/resolveVikeConfigInternal/assertExtensions.d.ts +1 -1
  13. package/dist/node/vite/shared/resolveVikeConfigInternal/{crawlPlusFiles.d.ts → crawlPlusFilePaths.d.ts} +2 -2
  14. package/dist/node/vite/shared/resolveVikeConfigInternal/{crawlPlusFiles.js → crawlPlusFilePaths.js} +4 -4
  15. package/dist/node/vite/shared/resolveVikeConfigInternal/{getPlusFilesAll.d.ts → getPlusFilesByLocationId.d.ts} +8 -6
  16. package/dist/node/vite/shared/resolveVikeConfigInternal/{getPlusFilesAll.js → getPlusFilesByLocationId.js} +47 -59
  17. package/dist/node/vite/shared/resolveVikeConfigInternal/loadFileAtConfigTime.d.ts +1 -1
  18. package/dist/node/vite/shared/resolveVikeConfigInternal.d.ts +1 -1
  19. package/dist/node/vite/shared/resolveVikeConfigInternal.js +66 -64
  20. package/dist/server/runtime/asyncHook.d.ts +2 -2
  21. package/dist/server/runtime/asyncHook.js +2 -2
  22. package/dist/server/runtime/renderPageServer/html/stream.js +12 -13
  23. package/dist/server/utils.d.ts +2 -2
  24. package/dist/server/utils.js +2 -2
  25. package/dist/types/Config.d.ts +3 -2
  26. package/dist/types/PageConfig.d.ts +1 -1
  27. package/dist/utils/PROJECT_VERSION.d.ts +1 -1
  28. package/dist/utils/PROJECT_VERSION.js +1 -1
  29. package/dist/utils/assert.d.ts +7 -4
  30. package/dist/utils/assert.js +65 -50
  31. package/dist/utils/colorsClient.d.ts +6 -0
  32. package/dist/utils/colorsClient.js +16 -0
  33. package/dist/utils/{colors.js → colorsServer.js} +2 -0
  34. package/dist/utils/formatHintLog.js +1 -1
  35. package/dist/utils/getBetterError.js +11 -7
  36. package/dist/utils/shallowClone.d.ts +2 -0
  37. package/dist/utils/shallowClone.js +11 -0
  38. package/dist/utils/trimWithAnsi.js +1 -1
  39. package/package.json +6 -6
  40. package/dist/utils/colorVike.d.ts +0 -2
  41. package/dist/utils/colorVike.js +0 -5
  42. package/node/cli/bin.js +0 -3
  43. /package/dist/node/vite/shared/resolveVikeConfigInternal/{crawlPlusFiles → crawlPlusFilePaths}/ignorePatternsBuiltIn.d.ts +0 -0
  44. /package/dist/node/vite/shared/resolveVikeConfigInternal/{crawlPlusFiles → crawlPlusFilePaths}/ignorePatternsBuiltIn.js +0 -0
  45. /package/dist/utils/{colors.d.ts → colorsServer.d.ts} +0 -0
@@ -25,7 +25,7 @@ import type { ConfigValueSerialized } from '../shared-server-client/page-configs
25
25
  import type { LocationId } from '../node/vite/shared/resolveVikeConfigInternal/filesystemRouting.js';
26
26
  import type { FilePath } from './FilePath.js';
27
27
  import type { ConfigDefinitionsInternal } from '../node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js';
28
- import type { PlusFile } from '../node/vite/shared/resolveVikeConfigInternal/getPlusFilesAll.js';
28
+ import type { PlusFile } from '../node/vite/shared/resolveVikeConfigInternal/getPlusFilesByLocationId.js';
29
29
  import type { ApiOperation } from '../node/api/types.js';
30
30
  type PageConfigCommon = {
31
31
  pageId: string;
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.247-commit-1250e38";
1
+ export declare const PROJECT_VERSION: "0.4.249-commit-55681da";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.247-commit-1250e38';
2
+ export const PROJECT_VERSION = '0.4.249-commit-55681da';
@@ -3,10 +3,12 @@ export { assertUsage };
3
3
  export { assertWarning };
4
4
  export { assertInfo };
5
5
  export { getProjectError };
6
- export { addOnBeforeAssertLog };
7
- export { addOnBeforeAssertErr };
8
6
  export { isVikeBug };
7
+ export { setAssertOnBeforeLog };
8
+ export { setAssertOnBeforeErr };
9
9
  export { setAlwaysShowStackTrace };
10
+ export { setAssertAddTagsDev };
11
+ import type { AddTagsDev } from '../node/vite/shared/loggerDev.js';
10
12
  declare function assert(condition: unknown, debugInfo?: unknown): asserts condition;
11
13
  declare function assertUsage(condition: unknown, errMsg: string, { showStackTrace, exitOnError }?: {
12
14
  showStackTrace?: true;
@@ -20,7 +22,8 @@ declare function assertWarning(condition: unknown, msg: string, { onlyOnce, show
20
22
  declare function assertInfo(condition: unknown, msg: string, { onlyOnce }: {
21
23
  onlyOnce: boolean;
22
24
  }): void;
23
- declare function addOnBeforeAssertLog(onBeforeAssertLog: () => void): void;
24
- declare function addOnBeforeAssertErr(onBeforeAssertErr: (err: unknown) => void): void;
25
+ declare function setAssertOnBeforeLog(onBeforeAssertLog: () => void): void;
26
+ declare function setAssertOnBeforeErr(onBeforeAssertErr: (err: unknown) => void): void;
27
+ declare function setAssertAddTagsDev(addTagsDev: AddTagsDev): void;
25
28
  declare function isVikeBug(err: unknown): boolean;
26
29
  declare function setAlwaysShowStackTrace(): void;
@@ -3,24 +3,24 @@ export { assertUsage };
3
3
  export { assertWarning };
4
4
  export { assertInfo };
5
5
  export { getProjectError };
6
- export { addOnBeforeAssertLog };
7
- export { addOnBeforeAssertErr };
8
6
  export { isVikeBug };
7
+ export { setAssertOnBeforeLog };
8
+ export { setAssertOnBeforeErr };
9
9
  export { setAlwaysShowStackTrace };
10
+ export { setAssertAddTagsDev };
10
11
  import { assertSingleInstance_onAssertModuleLoad } from './assertSingleInstance.js';
11
12
  import { createErrorWithCleanStackTrace } from './createErrorWithCleanStackTrace.js';
12
13
  import { getGlobalObject } from './getGlobalObject.js';
13
14
  import { PROJECT_VERSION } from './PROJECT_VERSION.js';
14
- import { colorVike } from './colorVike.js';
15
+ import { colorVike, colorWarning, colorError } from './colorsClient.js';
15
16
  import pc from '@brillout/picocolors';
16
17
  const globalObject = getGlobalObject('utils/assert.ts', {
17
18
  alreadyLogged: new Set(),
18
19
  });
19
20
  assertSingleInstance_onAssertModuleLoad();
20
- const projectTag = `[vike]`;
21
- const projectTagWithVersion = `[vike@${PROJECT_VERSION}]`;
22
- const bugTag = 'Bug';
23
- const numberOfStackTraceLinesToRemove = 2;
21
+ const tagVike = `[vike]`;
22
+ const tagVikeWithVersion = `[vike@${PROJECT_VERSION}]`;
23
+ const tagTypeBug = 'Bug';
24
24
  function assert(condition, debugInfo) {
25
25
  if (condition)
26
26
  return;
@@ -38,24 +38,20 @@ function assert(condition, debugInfo) {
38
38
  ]
39
39
  .filter(Boolean)
40
40
  .join(' ');
41
- errMsg = addWhitespace(errMsg);
42
- errMsg = addPrefixAssertType(errMsg, bugTag);
43
- errMsg = addPrefixProjectName(errMsg, true);
44
- const internalError = createErrorWithCleanStackTrace(errMsg, numberOfStackTraceLinesToRemove);
45
- globalObject.onBeforeAssertLog?.();
46
- globalObject.onBeforeAssertErr?.(internalError);
41
+ errMsg = addTags(errMsg, tagTypeBug, true);
42
+ const internalError = createError(errMsg);
43
+ globalObject.onBeforeLog?.();
44
+ globalObject.onBeforeErr?.(internalError);
47
45
  throw internalError;
48
46
  }
49
47
  function assertUsage(condition, errMsg, { showStackTrace, exitOnError } = {}) {
50
48
  if (condition)
51
49
  return;
52
50
  showStackTrace = showStackTrace || globalObject.alwaysShowStackTrace;
53
- errMsg = addWhitespace(errMsg);
54
- errMsg = addPrefixAssertType(errMsg, 'Wrong Usage');
55
- errMsg = addPrefixProjectName(errMsg);
56
- const usageError = createErrorWithCleanStackTrace(errMsg, numberOfStackTraceLinesToRemove);
57
- globalObject.onBeforeAssertLog?.();
58
- globalObject.onBeforeAssertErr?.(usageError);
51
+ errMsg = addTags(errMsg, 'Wrong Usage');
52
+ const usageError = createError(errMsg);
53
+ globalObject.onBeforeLog?.();
54
+ globalObject.onBeforeErr?.(usageError);
59
55
  if (!exitOnError) {
60
56
  throw usageError;
61
57
  }
@@ -65,19 +61,14 @@ function assertUsage(condition, errMsg, { showStackTrace, exitOnError } = {}) {
65
61
  }
66
62
  }
67
63
  function getProjectError(errMsg) {
68
- errMsg = addWhitespace(errMsg);
69
- errMsg = addPrefixAssertType(errMsg, 'Error');
70
- errMsg = addPrefixProjectName(errMsg);
71
- const projectError = createErrorWithCleanStackTrace(errMsg, numberOfStackTraceLinesToRemove);
64
+ errMsg = addTags(errMsg, 'Error');
65
+ const projectError = createError(errMsg);
72
66
  return projectError;
73
67
  }
74
68
  function assertWarning(condition, msg, { onlyOnce, showStackTrace }) {
75
69
  if (condition)
76
70
  return;
77
71
  showStackTrace = showStackTrace || globalObject.alwaysShowStackTrace;
78
- msg = addWhitespace(msg);
79
- msg = addPrefixAssertType(msg, 'Warning');
80
- msg = addPrefixProjectName(msg);
81
72
  if (onlyOnce) {
82
73
  const { alreadyLogged } = globalObject;
83
74
  const key = onlyOnce === true ? msg : onlyOnce;
@@ -85,22 +76,22 @@ function assertWarning(condition, msg, { onlyOnce, showStackTrace }) {
85
76
  return;
86
77
  alreadyLogged.add(key);
87
78
  }
88
- globalObject.onBeforeAssertLog?.();
79
+ const msgWithTags = addTags(msg, 'Warning');
80
+ globalObject.onBeforeLog?.();
89
81
  if (showStackTrace) {
90
- const err = createErrorWithCleanStackTrace(msg, numberOfStackTraceLinesToRemove);
91
- globalObject.onBeforeAssertErr?.(err);
82
+ const err = createError(msgWithTags);
83
+ globalObject.onBeforeErr?.(err);
92
84
  console.warn(err);
93
85
  }
94
86
  else {
95
- console.warn(msg);
87
+ console.warn(msgWithTags);
96
88
  }
97
89
  }
98
90
  function assertInfo(condition, msg, { onlyOnce }) {
99
91
  if (condition) {
100
92
  return;
101
93
  }
102
- msg = addWhitespace(msg);
103
- msg = addPrefixProjectName(msg);
94
+ msg = addTags(msg, null);
104
95
  if (onlyOnce) {
105
96
  const { alreadyLogged } = globalObject;
106
97
  const key = msg;
@@ -111,41 +102,65 @@ function assertInfo(condition, msg, { onlyOnce }) {
111
102
  alreadyLogged.add(key);
112
103
  }
113
104
  }
114
- globalObject.onBeforeAssertLog?.();
105
+ globalObject.onBeforeLog?.();
115
106
  console.log(msg);
116
107
  }
117
- function addOnBeforeAssertLog(onBeforeAssertLog) {
118
- globalObject.onBeforeAssertLog = onBeforeAssertLog;
108
+ function setAssertOnBeforeLog(onBeforeAssertLog) {
109
+ globalObject.onBeforeLog = onBeforeAssertLog;
119
110
  }
120
- function addOnBeforeAssertErr(onBeforeAssertErr) {
121
- globalObject.onBeforeAssertErr = onBeforeAssertErr;
111
+ function setAssertOnBeforeErr(onBeforeAssertErr) {
112
+ globalObject.onBeforeErr = onBeforeAssertErr;
122
113
  }
123
- function addPrefixAssertType(msg, tag) {
124
- let prefix = `[${tag}]`;
125
- if (tag === 'Warning') {
126
- prefix = pc.yellow(prefix);
114
+ function setAssertAddTagsDev(addTagsDev) {
115
+ globalObject.addTagsDev = addTagsDev;
116
+ }
117
+ function addTags(msg, tagType, showProjectVersion = false) {
118
+ const tagVike = getTagVike(showProjectVersion);
119
+ const tagTypeOuter = getTagType(tagType);
120
+ const whitespace = getTagWhitespace(msg);
121
+ if (globalObject.addTagsDev) {
122
+ const tagsDev = globalObject.addTagsDev(tagVike, tagTypeOuter);
123
+ return `${tagsDev}${whitespace}${msg}`;
127
124
  }
128
125
  else {
129
- prefix = pc.bold(pc.red(prefix));
126
+ const tags = `${tagVike}${tagTypeOuter}`;
127
+ return `${tags}${whitespace}${msg}`;
130
128
  }
131
- return `${prefix}${msg}`;
132
129
  }
133
- function addWhitespace(msg) {
130
+ function getTagWhitespace(msg) {
134
131
  if (msg.startsWith('[')) {
135
- return msg;
132
+ return '';
133
+ }
134
+ else {
135
+ return ' ';
136
+ }
137
+ }
138
+ function getTagType(tagType) {
139
+ if (!tagType)
140
+ return '';
141
+ let tag = `[${tagType}]`;
142
+ if (tagType === 'Warning') {
143
+ tag = colorWarning(tag);
136
144
  }
137
145
  else {
138
- return ` ${msg}`;
146
+ tag = colorError(tag);
139
147
  }
148
+ return tag;
140
149
  }
141
- function addPrefixProjectName(msg, showProjectVersion = false) {
142
- const prefix = showProjectVersion ? projectTagWithVersion : projectTag;
143
- return `${colorVike(prefix)}${msg}`;
150
+ function getTagVike(showProjectVersion = false) {
151
+ const tag = showProjectVersion ? tagVikeWithVersion : tagVike;
152
+ return colorVike(tag);
144
153
  }
145
154
  function isVikeBug(err) {
146
- return String(err).includes(`[${bugTag}]`);
155
+ return String(err).includes(`[${tagTypeBug}]`);
147
156
  }
148
157
  // Called upon `DEBUG=vike:error`
149
158
  function setAlwaysShowStackTrace() {
150
159
  globalObject.alwaysShowStackTrace = true;
151
160
  }
161
+ function createError(errMsg) {
162
+ const err = createErrorWithCleanStackTrace(errMsg, 3);
163
+ if (globalObject.addTagsDev)
164
+ err.stack = err.stack?.replace(/^Error:\s*/, '');
165
+ return err;
166
+ }
@@ -0,0 +1,6 @@
1
+ export { colorVike };
2
+ export { colorError };
3
+ export { colorWarning };
4
+ declare function colorVike<Str extends string>(str: Str): Str;
5
+ declare function colorError<Str extends string>(str: Str): Str;
6
+ declare function colorWarning<Str extends string>(str: Str): Str;
@@ -0,0 +1,16 @@
1
+ // ./colorsServer.js => server only
2
+ // ./colorsClient.js => server & client
3
+ // !!!WARNING!!! KEEP THIS FILE MINIMAL: to save KBs sent to the browser
4
+ export { colorVike };
5
+ export { colorError };
6
+ export { colorWarning };
7
+ import pc from '@brillout/picocolors';
8
+ function colorVike(str) {
9
+ return pc.bold(pc.yellow(str));
10
+ }
11
+ function colorError(str) {
12
+ return pc.bold(pc.red(str));
13
+ }
14
+ function colorWarning(str) {
15
+ return pc.yellow(str);
16
+ }
@@ -1,3 +1,5 @@
1
+ // ./colorsServer.js => server only
2
+ // ./colorsClient.js => server & client
1
3
  export { stripAnsi };
2
4
  export { hasRed };
3
5
  export { hasGreen };
@@ -1,6 +1,6 @@
1
1
  export { formatHintLog };
2
2
  import { assert } from './assert.js';
3
- import { stripAnsi } from './colors.js';
3
+ import { stripAnsi } from './colorsServer.js';
4
4
  function formatHintLog(msg) {
5
5
  assert(msg.length > 0);
6
6
  const msgLength = stripAnsi(msg).length;
@@ -6,20 +6,24 @@ export { getBetterError };
6
6
  import { isObject } from './isObject.js';
7
7
  import { assertIsNotBrowser } from './assertIsNotBrowser.js';
8
8
  import { objectAssign } from './objectAssign.js';
9
+ import { shallowClone } from './shallowClone.js';
9
10
  assertIsNotBrowser();
10
11
  function getBetterError(err, modifications) {
12
+ const errOriginal = shallowClone(err);
11
13
  let errBetter;
12
14
  // Normalize
13
15
  if (!isObject(err)) {
14
- warnMalformed(err);
16
+ warnMalformed(errOriginal);
15
17
  errBetter = new Error(String(err));
16
18
  }
17
19
  else {
18
- errBetter = structuredClone(err);
20
+ // We mutate instead of structuredClone(err) to avoid breaking Vite's ssrFixStacktrace() internal rewroteStacktraces.has(err) check
21
+ // https://github.com/vitejs/vite/blob/dafd726032daa98d0e614f97aebe9d4dbffe2ea7/packages/vite/src/node/ssr/ssrStacktrace.ts#L95
22
+ errBetter = err;
19
23
  }
20
24
  errBetter.message ?? (errBetter.message = '');
21
25
  if (!errBetter.stack) {
22
- warnMalformed(err);
26
+ warnMalformed(errOriginal);
23
27
  errBetter.stack = new Error(errBetter.message).stack;
24
28
  }
25
29
  // Modifications: err.hideStack and err.stack
@@ -40,7 +44,7 @@ function getBetterError(err, modifications) {
40
44
  errBetter.stack = messageNext + stack;
41
45
  }
42
46
  else {
43
- warnMalformed(err);
47
+ warnMalformed(errOriginal);
44
48
  }
45
49
  }
46
50
  else {
@@ -57,10 +61,10 @@ function getBetterError(err, modifications) {
57
61
  }
58
62
  }
59
63
  // Enable users to retrieve the original error
60
- objectAssign(errBetter, { getOriginalError: () => err?.getOriginalError?.() ?? err });
64
+ objectAssign(errBetter, { getOriginalError: () => errOriginal?.getOriginalError?.() ?? errOriginal });
61
65
  return errBetter;
62
66
  }
63
67
  // TO-DO/eventually: think about whether logging this warning is a good idea
64
- function warnMalformed(err) {
65
- console.warn('Malformed error: ', err);
68
+ function warnMalformed(errOriginal) {
69
+ console.warn('Malformed error: ', errOriginal);
66
70
  }
@@ -0,0 +1,2 @@
1
+ export { shallowClone };
2
+ declare function shallowClone<Obj>(obj: Obj): Obj;
@@ -0,0 +1,11 @@
1
+ export { shallowClone };
2
+ import { isObject } from './isObject.js';
3
+ // - AFAICT it's the most accurate.
4
+ // - The structuredClone() built-in isn't usable: https://www.typescriptlang.org/play/?ssl=7&ssc=1&pln=9&pc=1#code/G4QwTgBApmkLwQHZQO4QKKwPZgBQHIBhAVwGcAXLAW2mzHwEoIRTnEBPAKAh95jAB0AYywATKBAT50AfUIBVAMoAVAPIBZfN149+AiiHJlCYiQgCsABkucRiCrTCEANlmSjJECmGJCjYKFEXNyhcfgZOAHpIiAAZLABzVgADYkRxADMAS3dk2zdSLGcoAVcEgn5g92FTfAAaRyrAmvEIqJjlAAswLBRWEERHHE5vX39AptwAby9qKAAxNKFcJimAXzWGIA
5
+ function shallowClone(obj) {
6
+ if (!isObject(obj))
7
+ return obj;
8
+ const clone = Object.create(Object.getPrototypeOf(obj));
9
+ Object.defineProperties(clone, Object.getOwnPropertyDescriptors(obj));
10
+ return clone;
11
+ }
@@ -1,7 +1,7 @@
1
1
  export { trimWithAnsi };
2
2
  export { trimWithAnsiTrailOnly };
3
3
  import { assert } from './assert.js';
4
- import { stripAnsi } from './colors.js';
4
+ import { stripAnsi } from './colorsServer.js';
5
5
  const whitespaceRegex = /(\s+)/; // Capturing parathesis so that split preserves separator
6
6
  /* Same as trim() but works with ANSI escape codes */
7
7
  function trimWithAnsi(str) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.248",
3
+ "version": "0.4.249-commit-55681da",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {
@@ -120,7 +120,7 @@
120
120
  "dependencies": {
121
121
  "@brillout/import": "^0.2.6",
122
122
  "@brillout/json-serializer": "^0.5.21",
123
- "@brillout/picocolors": "^1.0.29",
123
+ "@brillout/picocolors": "^1.0.30",
124
124
  "@brillout/require-shim": "^0.1.2",
125
125
  "@brillout/vite-plugin-server-entry": "^0.7.15",
126
126
  "acorn": "^8.0.0",
@@ -221,10 +221,10 @@
221
221
  "types": "./dist/server/runtime/index.d.ts",
222
222
  "type": "module",
223
223
  "bin": {
224
- "vike": "./node/cli/bin.js"
224
+ "vike": "./bin.js"
225
225
  },
226
226
  "files": [
227
- "./node/cli/bin.js",
227
+ "./bin.js",
228
228
  "./dist/",
229
229
  "./abort.js",
230
230
  "./api.js",
@@ -244,13 +244,13 @@
244
244
  "./universal-middleware.js"
245
245
  ],
246
246
  "devDependencies": {
247
- "@brillout/release-me": "^0.4.9",
247
+ "@brillout/release-me": "^0.4.12",
248
248
  "@types/estree": "^1.0.5",
249
249
  "@types/node": "^20.10.5",
250
250
  "@types/picomatch": "^3.0.2",
251
251
  "@types/semver": "^7.5.8",
252
252
  "@types/source-map-support": "^0.5.10",
253
- "react-streaming": "^0.4.14",
253
+ "react-streaming": "^0.4.15",
254
254
  "rimraf": "^5.0.5",
255
255
  "typescript": "^5.9.3",
256
256
  "vite": "^7.2.6"
@@ -1,2 +0,0 @@
1
- export { colorVike };
2
- declare function colorVike<Str extends string>(str: Str): Str;
@@ -1,5 +0,0 @@
1
- export { colorVike };
2
- import pc from '@brillout/picocolors';
3
- function colorVike(str) {
4
- return pc.bold(pc.yellow(str));
5
- }
package/node/cli/bin.js DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import '../../dist/node/cli/entry.js'
File without changes