@joist/ssr 4.0.0-next.8 → 4.0.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/package.json CHANGED
@@ -1,21 +1,15 @@
1
1
  {
2
2
  "name": "@joist/ssr",
3
- "version": "4.0.0-next.8",
3
+ "version": "4.0.0",
4
4
  "type": "module",
5
5
  "main": "./target/lib.js",
6
6
  "module": "./target/lib.js",
7
7
  "exports": {
8
- ".": {
9
- "import": "./target/lib.js"
10
- },
11
- "./*": {
12
- "import": "./target/lib/*.js"
13
- }
8
+ ".": "./target/lib.js",
9
+ "./*": "./target/lib/*",
10
+ "./package.json": "./package.json"
14
11
  },
15
- "files": [
16
- "src",
17
- "target"
18
- ],
12
+ "files": ["src", "target"],
19
13
  "sideEffects": false,
20
14
  "description": "server side render shadow dom (Declarative Shadow DOM)",
21
15
  "repository": {
@@ -39,24 +33,14 @@
39
33
  "build": {
40
34
  "command": "tsc --build --pretty",
41
35
  "clean": "if-file-deleted",
42
- "files": [
43
- "src/**",
44
- "tsconfig.json"
45
- ],
46
- "output": [
47
- "target/**",
48
- "tsconfig.tsbuildinfo"
49
- ]
36
+ "files": ["src/**", "tsconfig.json"],
37
+ "output": ["target/**", "tsconfig.tsbuildinfo"]
50
38
  },
51
39
  "test": {
52
40
  "command": "mocha target/**/*.test.js",
53
- "files": [
54
- "target/**"
55
- ],
41
+ "files": ["target/**"],
56
42
  "output": [],
57
- "dependencies": [
58
- "build"
59
- ]
43
+ "dependencies": ["build"]
60
44
  }
61
45
  },
62
46
  "dependencies": {
@@ -1,10 +1,10 @@
1
- import { assert } from 'chai';
1
+ import { assert } from "chai";
2
2
 
3
- import { Applicator } from './applicator.js';
4
- import { NoopTemplateCache } from './template-cache.js';
5
- import { TemplateLoader } from './template-loader.js';
3
+ import { Applicator } from "./applicator.js";
4
+ import { NoopTemplateCache } from "./template-cache.js";
5
+ import type { TemplateLoader } from "./template-loader.js";
6
6
 
7
- it('should apply declarative shadow dom to specified elements', async () => {
7
+ it("should apply declarative shadow dom to specified elements", async () => {
8
8
  class MockTemplateLoader implements TemplateLoader {
9
9
  loadCSS(tag: string): Promise<string | null> {
10
10
  return Promise.resolve(`:host { content: 'css for ${tag}' }`);
@@ -14,7 +14,10 @@ it('should apply declarative shadow dom to specified elements', async () => {
14
14
  }
15
15
  }
16
16
 
17
- const applicator = new Applicator(new NoopTemplateCache(), new MockTemplateLoader());
17
+ const applicator = new Applicator(
18
+ new NoopTemplateCache(),
19
+ new MockTemplateLoader(),
20
+ );
18
21
 
19
22
  const document = /*html*/ `
20
23
  <html>
@@ -28,7 +31,11 @@ it('should apply declarative shadow dom to specified elements', async () => {
28
31
  </html>
29
32
  `;
30
33
 
31
- const res = await applicator.apply(document, ['mock-header', 'mock-content', 'mock-footer']);
34
+ const res = await applicator.apply(document, [
35
+ "mock-header",
36
+ "mock-content",
37
+ "mock-footer",
38
+ ]);
32
39
 
33
40
  assert.equal(
34
41
  trim(res),
@@ -59,11 +66,11 @@ it('should apply declarative shadow dom to specified elements', async () => {
59
66
  </mock-footer>
60
67
  </body>
61
68
  </html>
62
- `)
69
+ `),
63
70
  );
64
71
  });
65
72
 
66
- it('should apply declarative shadow dom recursively', async () => {
73
+ it("should apply declarative shadow dom recursively", async () => {
67
74
  class MockTemplateLoader implements TemplateLoader {
68
75
  async loadCSS(tag: string): Promise<string | null> {
69
76
  return `:host { content: 'css for ${tag}' }`;
@@ -71,22 +78,29 @@ it('should apply declarative shadow dom recursively', async () => {
71
78
 
72
79
  async loadHTML(tag: string): Promise<string | null> {
73
80
  switch (tag) {
74
- case 'mock-foo':
75
- return `<mock-bar></mock-bar>`;
81
+ case "mock-foo":
82
+ return "<mock-bar></mock-bar>";
76
83
 
77
- case 'mock-bar':
78
- return `<mock-baz></mock-baz>`;
84
+ case "mock-bar":
85
+ return "<mock-baz></mock-baz>";
79
86
  }
80
87
 
81
88
  return `<div>html for ${tag}</div>`;
82
89
  }
83
90
  }
84
91
 
85
- const applicator = new Applicator(new NoopTemplateCache(), new MockTemplateLoader());
92
+ const applicator = new Applicator(
93
+ new NoopTemplateCache(),
94
+ new MockTemplateLoader(),
95
+ );
86
96
 
87
- const document = `<mock-foo></mock-foo>`;
97
+ const document = "<mock-foo></mock-foo>";
88
98
 
89
- const res = await applicator.apply(document, ['mock-foo', 'mock-bar', 'mock-baz']);
99
+ const res = await applicator.apply(document, [
100
+ "mock-foo",
101
+ "mock-bar",
102
+ "mock-baz",
103
+ ]);
90
104
 
91
105
  assert.equal(
92
106
  trim(res),
@@ -113,10 +127,10 @@ it('should apply declarative shadow dom recursively', async () => {
113
127
  </mock-foo>
114
128
  </body>
115
129
  </html>
116
- `)
130
+ `),
117
131
  );
118
132
  });
119
133
 
120
134
  function trim(value: string) {
121
- return value.replace(/\s+/g, '').replace(/(\r\n|\n|\r)/gm, '');
135
+ return value.replace(/\s+/g, "").replace(/(\r\n|\n|\r)/gm, "");
122
136
  }
@@ -1,7 +1,7 @@
1
- import { CheerioAPI, load } from 'cheerio';
1
+ import { type CheerioAPI, load } from "cheerio";
2
2
 
3
- import { TemplateCache } from './template-cache.js';
4
- import { TemplateLoader } from './template-loader.js';
3
+ import type { TemplateCache } from "./template-cache.js";
4
+ import type { TemplateLoader } from "./template-loader.js";
5
5
 
6
6
  export interface ApplicatorOpts {
7
7
  templateCache: TemplateCache;
@@ -17,7 +17,7 @@ export class Applicator {
17
17
  this.#templateLoader = templateLoader;
18
18
  }
19
19
 
20
- async apply(document: string, elements: string[]) {
20
+ async apply(document: string, elements: string[]): Promise<string> {
21
21
  const $ = load(document);
22
22
 
23
23
  return this.build($, elements);
@@ -33,12 +33,15 @@ export class Applicator {
33
33
 
34
34
  if (!elementTemplate) {
35
35
  const template = await this.#buildTemplate(element);
36
- elementTemplate = await this.build(load(template, null, false), elements);
36
+ elementTemplate = await this.build(
37
+ load(template, null, false),
38
+ elements,
39
+ );
37
40
 
38
41
  await this.#templateCache.set(element, elementTemplate);
39
42
  }
40
43
 
41
- if (node.find('> template[shadowrootmode]').length === 0) {
44
+ if (node.find("> template[shadowrootmode]").length === 0) {
42
45
  node.prepend(elementTemplate);
43
46
  }
44
47
  }
@@ -50,12 +53,12 @@ export class Applicator {
50
53
  async #buildTemplate(tag: string) {
51
54
  const [html, styles] = await Promise.all([
52
55
  this.#templateLoader.loadHTML(tag),
53
- this.#templateLoader.loadCSS(tag)
56
+ this.#templateLoader.loadCSS(tag),
54
57
  ]);
55
58
 
56
59
  return `<template shadowroot="open" shadowrootmode="open">
57
- ${styles ? `<style>${styles}</style>` : ''}
58
- ${html || ''}
60
+ ${styles ? `<style>${styles}</style>` : ""}
61
+ ${html || ""}
59
62
  </template>
60
63
  `;
61
64
  }
@@ -1,19 +1,19 @@
1
- import { assert } from 'chai';
1
+ import { assert } from "chai";
2
2
 
3
- import { NoopTemplateCache, TemplateCache } from './template-cache.js';
3
+ import { NoopTemplateCache, TemplateCache } from "./template-cache.js";
4
4
 
5
- it('should cache (in memory)', async () => {
5
+ it("should cache (in memory)", async () => {
6
6
  const cache = new TemplateCache();
7
7
 
8
- await cache.set('foo-bar', '<h1>Hello World</h1>');
8
+ await cache.set("foo-bar", "<h1>Hello World</h1>");
9
9
 
10
- assert.equal(await cache.get('foo-bar'), '<h1>Hello World</h1>');
10
+ assert.equal(await cache.get("foo-bar"), "<h1>Hello World</h1>");
11
11
  });
12
12
 
13
- it('should never cache (noop)', async () => {
13
+ it("should never cache (noop)", async () => {
14
14
  const cache = new NoopTemplateCache();
15
15
 
16
- await cache.set('foo-bar', '<h1>Hello World</h1>');
16
+ await cache.set("foo-bar", "<h1>Hello World</h1>");
17
17
 
18
- assert.equal(await cache.get('foo-bar'), undefined);
18
+ assert.equal(await cache.get("foo-bar"), undefined);
19
19
  });
@@ -1,11 +1,11 @@
1
1
  export class TemplateCache {
2
2
  #cache = new Map<string, string>();
3
3
 
4
- async get(key: string) {
4
+ async get(key: string): Promise<string | undefined> {
5
5
  return this.#cache.get(key);
6
6
  }
7
7
 
8
- async set(key: string, val: string) {
8
+ async set(key: string, val: string): Promise<this> {
9
9
  this.#cache.set(key, val);
10
10
 
11
11
  return this;
@@ -13,11 +13,11 @@ export class TemplateCache {
13
13
  }
14
14
 
15
15
  export class NoopTemplateCache extends TemplateCache {
16
- async get(_: string) {
16
+ async get(_: string): Promise<undefined> {
17
17
  return undefined;
18
18
  }
19
19
 
20
- async set(_key: string, _val: string) {
20
+ async set(_key: string, _val: string): Promise<this> {
21
21
  return this;
22
22
  }
23
23
  }
@@ -1,20 +1,23 @@
1
- import { assert } from 'chai';
2
- import { fileURLToPath } from 'node:url';
3
- import { join } from 'node:path';
1
+ import { join } from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import { assert } from "chai";
4
4
 
5
- import { FileSysTemplateLoader } from './template-loader.js';
5
+ import { FileSysTemplateLoader } from "./template-loader.js";
6
6
 
7
- const dirname = join(fileURLToPath(new URL('.', import.meta.url)), '../../src/testing');
7
+ const dirname = join(
8
+ fileURLToPath(new URL(".", import.meta.url)),
9
+ "../../src/testing",
10
+ );
8
11
 
9
- it('FileSysTemplateLoader: should read from defined paths', async () => {
12
+ it("FileSysTemplateLoader: should read from defined paths", async () => {
10
13
  const loader = new FileSysTemplateLoader(
11
- (tag) => join(dirname, 'elements', tag, tag + '.html'),
12
- (tag) => join(dirname, 'elements', tag, tag + '.css')
14
+ (tag) => join(dirname, "elements", tag, `${tag}.html`),
15
+ (tag) => join(dirname, "elements", tag, `${tag}.css`),
13
16
  );
14
17
 
15
- const html = await loader.loadHTML('my-element');
16
- const css = await loader.loadCSS('my-element');
18
+ const html = await loader.loadHTML("my-element");
19
+ const css = await loader.loadCSS("my-element");
17
20
 
18
- assert.equal(html?.trim(), `<h2>Hello World</h2>\n\n<slot></slot>`);
19
- assert.equal(css?.trim(), `:host {\n display: flex;\n}`);
21
+ assert.equal(html?.trim(), "<h2>Hello World</h2>\n\n<slot></slot>");
22
+ assert.equal(css?.trim(), ":host {\n display: flex;\n}");
20
23
  });
@@ -1,4 +1,4 @@
1
- import { readFile } from 'node:fs/promises';
1
+ import { readFile } from "node:fs/promises";
2
2
 
3
3
  /**
4
4
  * A template loader defines how css and html are generated for a given component template.
package/src/lib.ts CHANGED
@@ -1,3 +1,6 @@
1
- export { Applicator } from './lib/applicator.js';
2
- export { TemplateCache, NoopTemplateCache } from './lib/template-cache.js';
3
- export { TemplateLoader, FileSysTemplateLoader } from './lib/template-loader.js';
1
+ export { Applicator } from "./lib/applicator.js";
2
+ export { TemplateCache, NoopTemplateCache } from "./lib/template-cache.js";
3
+ export {
4
+ TemplateLoader,
5
+ FileSysTemplateLoader,
6
+ } from "./lib/template-loader.js";
@@ -1,6 +1,6 @@
1
- import { CheerioAPI } from 'cheerio';
2
- import { TemplateCache } from './template-cache.js';
3
- import { TemplateLoader } from './template-loader.js';
1
+ import { type CheerioAPI } from "cheerio";
2
+ import type { TemplateCache } from "./template-cache.js";
3
+ import type { TemplateLoader } from "./template-loader.js";
4
4
  export interface ApplicatorOpts {
5
5
  templateCache: TemplateCache;
6
6
  templateLoader: TemplateLoader;
@@ -1,4 +1,4 @@
1
- import { load } from 'cheerio';
1
+ import { load } from "cheerio";
2
2
  export class Applicator {
3
3
  #templateCache;
4
4
  #templateLoader;
@@ -21,7 +21,7 @@ export class Applicator {
21
21
  elementTemplate = await this.build(load(template, null, false), elements);
22
22
  await this.#templateCache.set(element, elementTemplate);
23
23
  }
24
- if (node.find('> template[shadowrootmode]').length === 0) {
24
+ if (node.find("> template[shadowrootmode]").length === 0) {
25
25
  node.prepend(elementTemplate);
26
26
  }
27
27
  }
@@ -31,11 +31,11 @@ export class Applicator {
31
31
  async #buildTemplate(tag) {
32
32
  const [html, styles] = await Promise.all([
33
33
  this.#templateLoader.loadHTML(tag),
34
- this.#templateLoader.loadCSS(tag)
34
+ this.#templateLoader.loadCSS(tag),
35
35
  ]);
36
36
  return `<template shadowroot="open" shadowrootmode="open">
37
- ${styles ? `<style>${styles}</style>` : ''}
38
- ${html || ''}
37
+ ${styles ? `<style>${styles}</style>` : ""}
38
+ ${html || ""}
39
39
  </template>
40
40
  `;
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"applicator.js","sourceRoot":"","sources":["../../src/lib/applicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,IAAI,EAAE,MAAM,SAAS,CAAC;AAU3C,MAAM,OAAO,UAAU;IACrB,cAAc,CAAgB;IAC9B,eAAe,CAAiB;IAEhC,YAAY,aAA4B,EAAE,cAA8B;QACtE,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,QAAkB;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,CAAa,EAAE,QAAkB;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YAExB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAE7D,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACpD,eAAe,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAE1E,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;gBAC1D,CAAC;gBAED,IAAI,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;YAClC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC;SAClC,CAAC,CAAC;QAEH,OAAO;QACH,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE;QACxC,IAAI,IAAI,EAAE;;GAEf,CAAC;IACF,CAAC;CACF"}
1
+ {"version":3,"file":"applicator.js","sourceRoot":"","sources":["../../src/lib/applicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,SAAS,CAAC;AAUhD,MAAM,OAAO,UAAU;IACrB,cAAc,CAAgB;IAC9B,eAAe,CAAiB;IAEhC,YAAY,aAA4B,EAAE,cAA8B;QACtE,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,QAAkB;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,CAAa,EAAE,QAAkB;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YAExB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAE7D,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACpD,eAAe,GAAG,MAAM,IAAI,CAAC,KAAK,CAChC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,EAC3B,QAAQ,CACT,CAAC;oBAEF,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;gBAC1D,CAAC;gBAED,IAAI,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;YAClC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC;SAClC,CAAC,CAAC;QAEH,OAAO;QACH,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,UAAU,CAAC,CAAC,CAAC,EAAE;QACxC,IAAI,IAAI,EAAE;;GAEf,CAAC;IACF,CAAC;CACF"}
@@ -1,7 +1,7 @@
1
- import { assert } from 'chai';
2
- import { Applicator } from './applicator.js';
3
- import { NoopTemplateCache } from './template-cache.js';
4
- it('should apply declarative shadow dom to specified elements', async () => {
1
+ import { assert } from "chai";
2
+ import { Applicator } from "./applicator.js";
3
+ import { NoopTemplateCache } from "./template-cache.js";
4
+ it("should apply declarative shadow dom to specified elements", async () => {
5
5
  class MockTemplateLoader {
6
6
  loadCSS(tag) {
7
7
  return Promise.resolve(`:host { content: 'css for ${tag}' }`);
@@ -22,7 +22,11 @@ it('should apply declarative shadow dom to specified elements', async () => {
22
22
  </body>
23
23
  </html>
24
24
  `;
25
- const res = await applicator.apply(document, ['mock-header', 'mock-content', 'mock-footer']);
25
+ const res = await applicator.apply(document, [
26
+ "mock-header",
27
+ "mock-content",
28
+ "mock-footer",
29
+ ]);
26
30
  assert.equal(trim(res), trim(`
27
31
  <html>
28
32
  <head></head>
@@ -52,24 +56,28 @@ it('should apply declarative shadow dom to specified elements', async () => {
52
56
  </html>
53
57
  `));
54
58
  });
55
- it('should apply declarative shadow dom recursively', async () => {
59
+ it("should apply declarative shadow dom recursively", async () => {
56
60
  class MockTemplateLoader {
57
61
  async loadCSS(tag) {
58
62
  return `:host { content: 'css for ${tag}' }`;
59
63
  }
60
64
  async loadHTML(tag) {
61
65
  switch (tag) {
62
- case 'mock-foo':
63
- return `<mock-bar></mock-bar>`;
64
- case 'mock-bar':
65
- return `<mock-baz></mock-baz>`;
66
+ case "mock-foo":
67
+ return "<mock-bar></mock-bar>";
68
+ case "mock-bar":
69
+ return "<mock-baz></mock-baz>";
66
70
  }
67
71
  return `<div>html for ${tag}</div>`;
68
72
  }
69
73
  }
70
74
  const applicator = new Applicator(new NoopTemplateCache(), new MockTemplateLoader());
71
- const document = `<mock-foo></mock-foo>`;
72
- const res = await applicator.apply(document, ['mock-foo', 'mock-bar', 'mock-baz']);
75
+ const document = "<mock-foo></mock-foo>";
76
+ const res = await applicator.apply(document, [
77
+ "mock-foo",
78
+ "mock-bar",
79
+ "mock-baz",
80
+ ]);
73
81
  assert.equal(trim(res), trim(`
74
82
  <html>
75
83
  <head></head>
@@ -96,6 +104,6 @@ it('should apply declarative shadow dom recursively', async () => {
96
104
  `));
97
105
  });
98
106
  function trim(value) {
99
- return value.replace(/\s+/g, '').replace(/(\r\n|\n|\r)/gm, '');
107
+ return value.replace(/\s+/g, "").replace(/(\r\n|\n|\r)/gm, "");
100
108
  }
101
109
  //# sourceMappingURL=applicator.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applicator.test.js","sourceRoot":"","sources":["../../src/lib/applicator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;IACzE,MAAM,kBAAkB;QACtB,OAAO,CAAC,GAAW;YACjB,OAAO,OAAO,CAAC,OAAO,CAAC,6BAA6B,GAAG,KAAK,CAAC,CAAC;QAChE,CAAC;QACD,QAAQ,CAAC,GAAW;YAClB,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAC,CAAC;QACvD,CAAC;KACF;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,iBAAiB,EAAE,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAErF,MAAM,QAAQ,GAAY;;;;;;;;;;GAUzB,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IAE7F,MAAM,CAAC,KAAK,CACV,IAAI,CAAC,GAAG,CAAC,EACT,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BN,CAAC,CACD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;IAC/D,MAAM,kBAAkB;QACtB,KAAK,CAAC,OAAO,CAAC,GAAW;YACvB,OAAO,6BAA6B,GAAG,KAAK,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,GAAW;YACxB,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,UAAU;oBACb,OAAO,uBAAuB,CAAC;gBAEjC,KAAK,UAAU;oBACb,OAAO,uBAAuB,CAAC;YACnC,CAAC;YAED,OAAO,iBAAiB,GAAG,QAAQ,CAAC;QACtC,CAAC;KACF;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,iBAAiB,EAAE,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAErF,MAAM,QAAQ,GAAG,uBAAuB,CAAC;IAEzC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAEnF,MAAM,CAAC,KAAK,CACV,IAAI,CAAC,GAAG,CAAC,EACT,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;GAuBN,CAAC,CACD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"applicator.test.js","sourceRoot":"","sources":["../../src/lib/applicator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;IACzE,MAAM,kBAAkB;QACtB,OAAO,CAAC,GAAW;YACjB,OAAO,OAAO,CAAC,OAAO,CAAC,6BAA6B,GAAG,KAAK,CAAC,CAAC;QAChE,CAAC;QACD,QAAQ,CAAC,GAAW;YAClB,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAC,CAAC;QACvD,CAAC;KACF;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,IAAI,iBAAiB,EAAE,EACvB,IAAI,kBAAkB,EAAE,CACzB,CAAC;IAEF,MAAM,QAAQ,GAAY;;;;;;;;;;GAUzB,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC3C,aAAa;QACb,cAAc;QACd,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CACV,IAAI,CAAC,GAAG,CAAC,EACT,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BN,CAAC,CACD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;IAC/D,MAAM,kBAAkB;QACtB,KAAK,CAAC,OAAO,CAAC,GAAW;YACvB,OAAO,6BAA6B,GAAG,KAAK,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,GAAW;YACxB,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,UAAU;oBACb,OAAO,uBAAuB,CAAC;gBAEjC,KAAK,UAAU;oBACb,OAAO,uBAAuB,CAAC;YACnC,CAAC;YAED,OAAO,iBAAiB,GAAG,QAAQ,CAAC;QACtC,CAAC;KACF;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,IAAI,iBAAiB,EAAE,EACvB,IAAI,kBAAkB,EAAE,CACzB,CAAC;IAEF,MAAM,QAAQ,GAAG,uBAAuB,CAAC;IAEzC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC3C,UAAU;QACV,UAAU;QACV,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CACV,IAAI,CAAC,GAAG,CAAC,EACT,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;GAuBN,CAAC,CACD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC"}
@@ -1,13 +1,13 @@
1
- import { assert } from 'chai';
2
- import { NoopTemplateCache, TemplateCache } from './template-cache.js';
3
- it('should cache (in memory)', async () => {
1
+ import { assert } from "chai";
2
+ import { NoopTemplateCache, TemplateCache } from "./template-cache.js";
3
+ it("should cache (in memory)", async () => {
4
4
  const cache = new TemplateCache();
5
- await cache.set('foo-bar', '<h1>Hello World</h1>');
6
- assert.equal(await cache.get('foo-bar'), '<h1>Hello World</h1>');
5
+ await cache.set("foo-bar", "<h1>Hello World</h1>");
6
+ assert.equal(await cache.get("foo-bar"), "<h1>Hello World</h1>");
7
7
  });
8
- it('should never cache (noop)', async () => {
8
+ it("should never cache (noop)", async () => {
9
9
  const cache = new NoopTemplateCache();
10
- await cache.set('foo-bar', '<h1>Hello World</h1>');
11
- assert.equal(await cache.get('foo-bar'), undefined);
10
+ await cache.set("foo-bar", "<h1>Hello World</h1>");
11
+ assert.equal(await cache.get("foo-bar"), undefined);
12
12
  });
13
13
  //# sourceMappingURL=template-cache.test.js.map
@@ -1,4 +1,4 @@
1
- import { readFile } from 'node:fs/promises';
1
+ import { readFile } from "node:fs/promises";
2
2
  export class FileSysTemplateLoader {
3
3
  #html;
4
4
  #css;
@@ -1,13 +1,13 @@
1
- import { assert } from 'chai';
2
- import { fileURLToPath } from 'node:url';
3
- import { join } from 'node:path';
4
- import { FileSysTemplateLoader } from './template-loader.js';
5
- const dirname = join(fileURLToPath(new URL('.', import.meta.url)), '../../src/testing');
6
- it('FileSysTemplateLoader: should read from defined paths', async () => {
7
- const loader = new FileSysTemplateLoader((tag) => join(dirname, 'elements', tag, tag + '.html'), (tag) => join(dirname, 'elements', tag, tag + '.css'));
8
- const html = await loader.loadHTML('my-element');
9
- const css = await loader.loadCSS('my-element');
10
- assert.equal(html?.trim(), `<h2>Hello World</h2>\n\n<slot></slot>`);
11
- assert.equal(css?.trim(), `:host {\n display: flex;\n}`);
1
+ import { join } from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import { assert } from "chai";
4
+ import { FileSysTemplateLoader } from "./template-loader.js";
5
+ const dirname = join(fileURLToPath(new URL(".", import.meta.url)), "../../src/testing");
6
+ it("FileSysTemplateLoader: should read from defined paths", async () => {
7
+ const loader = new FileSysTemplateLoader((tag) => join(dirname, "elements", tag, `${tag}.html`), (tag) => join(dirname, "elements", tag, `${tag}.css`));
8
+ const html = await loader.loadHTML("my-element");
9
+ const css = await loader.loadCSS("my-element");
10
+ assert.equal(html?.trim(), "<h2>Hello World</h2>\n\n<slot></slot>");
11
+ assert.equal(css?.trim(), ":host {\n display: flex;\n}");
12
12
  });
13
13
  //# sourceMappingURL=template-loader.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template-loader.test.js","sourceRoot":"","sources":["../../src/lib/template-loader.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAExF,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;IACrE,MAAM,MAAM,GAAG,IAAI,qBAAqB,CACtC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,EACtD,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,CACtD,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,uCAAuC,CAAC,CAAC;IACpE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,8BAA8B,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"template-loader.test.js","sourceRoot":"","sources":["../../src/lib/template-loader.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,CAClB,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,mBAAmB,CACpB,CAAC;AAEF,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;IACrE,MAAM,MAAM,GAAG,IAAI,qBAAqB,CACtC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,EACtD,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,CACtD,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,uCAAuC,CAAC,CAAC;IACpE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,8BAA8B,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC"}
package/target/lib.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { Applicator } from './lib/applicator.js';
2
- export { TemplateCache, NoopTemplateCache } from './lib/template-cache.js';
3
- export { TemplateLoader, FileSysTemplateLoader } from './lib/template-loader.js';
1
+ export { Applicator } from "./lib/applicator.js";
2
+ export { TemplateCache, NoopTemplateCache } from "./lib/template-cache.js";
3
+ export { TemplateLoader, FileSysTemplateLoader, } from "./lib/template-loader.js";
package/target/lib.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Applicator } from './lib/applicator.js';
2
- export { TemplateCache, NoopTemplateCache } from './lib/template-cache.js';
3
- export { FileSysTemplateLoader } from './lib/template-loader.js';
1
+ export { Applicator } from "./lib/applicator.js";
2
+ export { TemplateCache, NoopTemplateCache } from "./lib/template-cache.js";
3
+ export { FileSysTemplateLoader, } from "./lib/template-loader.js";
4
4
  //# sourceMappingURL=lib.js.map
package/target/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAkB,qBAAqB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAEL,qBAAqB,GACtB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,2 +1,2 @@
1
- "use strict";
1
+ export {};
2
2
  //# sourceMappingURL=my-element.js.map