elegance-js 1.12.0 → 1.13.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.
package/dist/build.mjs CHANGED
@@ -266,7 +266,7 @@ var generateHTMLTemplate = ({
266
266
  let HTMLTemplate = `<head><meta name="viewport" content="width=device-width, initial-scale=1.0">`;
267
267
  HTMLTemplate += '<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"><meta charset="UTF-8">';
268
268
  for (const module of requiredClientModules) {
269
- HTMLTemplate += `<script src="/shipped/${module}.js" defer="true"></script>`;
269
+ HTMLTemplate += `<script data-module="true" src="/shipped/${module}.js" defer="true"></script>`;
270
270
  }
271
271
  if (addPageScriptTag === true) {
272
272
  HTMLTemplate += `<script data-tag="true" type="module" src="${pageURL === "" ? "" : "/"}${pageURL}/${name}_data.js" defer="true"></script>`;
@@ -156,26 +156,6 @@ Object.assign(window, {
156
156
  type: 2 /* OBSERVER */
157
157
  };
158
158
  },
159
- /*
160
- observe: (subjects: ClientSubject[], updateCallback: () => any) => {
161
- const pageData = pd[currentPage];
162
-
163
- const keys = [];
164
-
165
- for (const subject of subjects) {
166
- const key = subject.id + Date.now();
167
-
168
- keys.push({
169
- key: key,
170
- subject: subject.id,
171
- });
172
-
173
- pageData.stateManager.observe(subject, updateCallback, key);
174
- }
175
-
176
- return { keys }
177
- },
178
- */
179
159
  eventListener: (subjects, eventListener) => {
180
160
  return {
181
161
  subjects,
@@ -377,13 +357,26 @@ var fetchPage = async (targetURL) => {
377
357
  console.info(`Fetching ${pathname}`);
378
358
  const res = await fetch(targetURL);
379
359
  const newDOM = domParser.parseFromString(await res.text(), "text/html");
380
- const pageDataScript = newDOM.querySelector('script[data-tag="true"]');
381
- if (!pageDataScript) {
382
- return;
360
+ {
361
+ const dataScripts = Array.from(newDOM.querySelectorAll('script[data-module="true"]'));
362
+ const currentScripts = Array.from(document.head.querySelectorAll('script[data-module="true"]'));
363
+ for (const dataScript of dataScripts) {
364
+ const existing = currentScripts.find((s) => s.src === dataScript.src);
365
+ if (existing) {
366
+ continue;
367
+ }
368
+ document.head.appendChild(dataScript);
369
+ }
383
370
  }
384
- if (!pd[pathname]) {
385
- const { data } = await import(pageDataScript.src);
386
- pd[pathname] = data;
371
+ {
372
+ const pageDataScript = newDOM.querySelector('script[data-tag="true"]');
373
+ if (!pageDataScript) {
374
+ return;
375
+ }
376
+ if (!pd[pathname]) {
377
+ const { data } = await import(pageDataScript.src);
378
+ pd[pathname] = data;
379
+ }
387
380
  }
388
381
  pageStringCache.set(pathname, xmlSerializer.serializeToString(newDOM));
389
382
  return newDOM;
@@ -269,7 +269,7 @@ var generateHTMLTemplate = ({
269
269
  let HTMLTemplate = `<head><meta name="viewport" content="width=device-width, initial-scale=1.0">`;
270
270
  HTMLTemplate += '<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"><meta charset="UTF-8">';
271
271
  for (const module of requiredClientModules) {
272
- HTMLTemplate += `<script src="/shipped/${module}.js" defer="true"></script>`;
272
+ HTMLTemplate += `<script data-module="true" src="/shipped/${module}.js" defer="true"></script>`;
273
273
  }
274
274
  if (addPageScriptTag === true) {
275
275
  HTMLTemplate += `<script data-tag="true" type="module" src="${pageURL === "" ? "" : "/"}${pageURL}/${name}_data.js" defer="true"></script>`;
@@ -223,7 +223,7 @@ var generateHTMLTemplate = ({
223
223
  let HTMLTemplate = `<head><meta name="viewport" content="width=device-width, initial-scale=1.0">`;
224
224
  HTMLTemplate += '<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"><meta charset="UTF-8">';
225
225
  for (const module of requiredClientModules) {
226
- HTMLTemplate += `<script src="/shipped/${module}.js" defer="true"></script>`;
226
+ HTMLTemplate += `<script data-module="true" src="/shipped/${module}.js" defer="true"></script>`;
227
227
  }
228
228
  if (addPageScriptTag === true) {
229
229
  HTMLTemplate += `<script data-tag="true" type="module" src="${pageURL === "" ? "" : "/"}${pageURL}/${name}_data.js" defer="true"></script>`;
@@ -223,7 +223,7 @@ var generateHTMLTemplate = ({
223
223
  let HTMLTemplate = `<head><meta name="viewport" content="width=device-width, initial-scale=1.0">`;
224
224
  HTMLTemplate += '<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"><meta charset="UTF-8">';
225
225
  for (const module of requiredClientModules) {
226
- HTMLTemplate += `<script src="/shipped/${module}.js" defer="true"></script>`;
226
+ HTMLTemplate += `<script data-module="true" src="/shipped/${module}.js" defer="true"></script>`;
227
227
  }
228
228
  if (addPageScriptTag === true) {
229
229
  HTMLTemplate += `<script data-tag="true" type="module" src="${pageURL === "" ? "" : "/"}${pageURL}/${name}_data.js" defer="true"></script>`;
@@ -798,7 +798,7 @@ var shipPlugin = {
798
798
  name: "ship",
799
799
  setup(build2) {
800
800
  build2.onLoad({ filter: /\.(js|ts|jsx|tsx)$/ }, async (args) => {
801
- const contents = await fs.promises.readFile(args.path, "utf8");
801
+ let contents = await fs.promises.readFile(args.path, "utf8");
802
802
  const lines = contents.split(/\r?\n/);
803
803
  let prepender = "";
804
804
  for (let i = 0; i < lines.length - 1; i++) {
@@ -830,11 +830,15 @@ var shipPlugin = {
830
830
  path: pkgPath,
831
831
  globalName: importName
832
832
  });
833
+ const replacement = `const ${importName} = globalThis.${importName};`;
834
+ lines.splice(i, 2, replacement);
835
+ i--;
833
836
  }
834
837
  }
835
838
  if (prepender !== "") {
836
839
  prepender += "];";
837
840
  }
841
+ contents = lines.join("\n");
838
842
  return {
839
843
  contents: prepender + contents,
840
844
  loader: path.extname(args.path).slice(1)
@@ -906,7 +910,9 @@ var build = async () => {
906
910
  outfile: path.join(DIST_DIR, "shipped", plugin.globalName + ".js"),
907
911
  format: "iife",
908
912
  platform: "browser",
909
- globalName: plugin.globalName
913
+ globalName: plugin.globalName,
914
+ minify: true,
915
+ treeShaking: true
910
916
  });
911
917
  log("Built a client module.");
912
918
  }
@@ -205,7 +205,7 @@ var generateHTMLTemplate = ({
205
205
  let HTMLTemplate = `<head><meta name="viewport" content="width=device-width, initial-scale=1.0">`;
206
206
  HTMLTemplate += '<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"><meta charset="UTF-8">';
207
207
  for (const module of requiredClientModules) {
208
- HTMLTemplate += `<script src="/shipped/${module}.js" defer="true"></script>`;
208
+ HTMLTemplate += `<script data-module="true" src="/shipped/${module}.js" defer="true"></script>`;
209
209
  }
210
210
  if (addPageScriptTag === true) {
211
211
  HTMLTemplate += `<script data-tag="true" type="module" src="${pageURL === "" ? "" : "/"}${pageURL}/${name}_data.js" defer="true"></script>`;
@@ -223,7 +223,7 @@ var generateHTMLTemplate = ({
223
223
  let HTMLTemplate = `<head><meta name="viewport" content="width=device-width, initial-scale=1.0">`;
224
224
  HTMLTemplate += '<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"><meta charset="UTF-8">';
225
225
  for (const module of requiredClientModules) {
226
- HTMLTemplate += `<script src="/shipped/${module}.js" defer="true"></script>`;
226
+ HTMLTemplate += `<script data-module="true" src="/shipped/${module}.js" defer="true"></script>`;
227
227
  }
228
228
  if (addPageScriptTag === true) {
229
229
  HTMLTemplate += `<script data-tag="true" type="module" src="${pageURL === "" ? "" : "/"}${pageURL}/${name}_data.js" defer="true"></script>`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elegance-js",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "description": "Web-Framework",
5
5
  "type": "module",
6
6
  "bin": {