@zero-dependency/dom 0.10.0 → 0.11.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/fetcher.d.ts CHANGED
@@ -4,18 +4,21 @@ interface FetcherRequest extends Omit<RequestInit, 'method'> {
4
4
  }
5
5
  declare const methods: readonly ["GET", "POST", "PUT", "PATCH", "DELETE"];
6
6
  declare type RequestMethods = typeof methods[number];
7
+ declare type FetcherMethod = <T>(path: string, init?: FetcherRequest) => Promise<T>;
7
8
  export declare class Fetcher {
8
9
  private readonly baseURL;
9
10
  private readonly baseInit?;
10
- get: <T>(path: string, init?: FetcherRequest) => Promise<T>;
11
- post: <T>(path: string, init?: FetcherRequest) => Promise<T>;
12
- put: <T>(path: string, init?: FetcherRequest) => Promise<T>;
13
- patch: <T>(path: string, init?: FetcherRequest) => Promise<T>;
14
- delete: <T>(path: string, init?: FetcherRequest) => Promise<T>;
11
+ get: FetcherMethod;
12
+ post: FetcherMethod;
13
+ put: FetcherMethod;
14
+ patch: FetcherMethod;
15
+ delete: FetcherMethod;
15
16
  constructor(baseURL: string, baseInit?: FetcherInit);
16
- request<T>(path: string, init: FetcherRequest & {
17
+ extends(path: string, baseInit?: FetcherInit): Fetcher;
18
+ request<T>(path: string, initRequest: FetcherRequest & {
17
19
  method: RequestMethods;
18
20
  }): Promise<T>;
21
+ private fetcherParameters;
19
22
  }
20
23
  export declare function fetcher<T = unknown>(...args: Parameters<typeof fetch>): Promise<T>;
21
24
  export declare class FetcherError<T> extends Error {
package/dist/index.es.js CHANGED
@@ -1,113 +1,124 @@
1
- function m(r, e, ...t) {
2
- const s = document.createElement(r);
3
- return Array.isArray(e) ? s.append(...e) : (Object.assign(s, e), Object.assign(s.style, e?.style), s.append(...t)), s;
1
+ function y(r, e, ...t) {
2
+ const n = document.createElement(r);
3
+ return typeof e == "string" ? n.append(i(e)) : Array.isArray(e) ? n.append(...e) : (Object.assign(n, e), Object.assign(n.style, e?.style)), t.length && n.append(...t), n;
4
4
  }
5
- function c(r) {
5
+ function i(r) {
6
6
  return document.createTextNode(r);
7
7
  }
8
- function w() {
9
- return c("\xA0");
8
+ function E() {
9
+ return i("\xA0");
10
10
  }
11
- async function y() {
11
+ async function v() {
12
12
  return new Promise((r) => {
13
13
  document.readyState == "loading" ? document.addEventListener("DOMContentLoaded", () => r(), {
14
14
  once: !0
15
15
  }) : r();
16
16
  });
17
17
  }
18
- const a = [
18
+ const u = [
19
19
  "GET",
20
20
  "POST",
21
21
  "PUT",
22
22
  "PATCH",
23
23
  "DELETE"
24
24
  ];
25
- class E {
25
+ class c {
26
26
  constructor(e, t) {
27
27
  this.baseURL = e, this.baseInit = t;
28
- for (const s of a)
29
- this[s.toLowerCase()] = (n, o) => this.request(n, { ...o, method: s });
28
+ for (const n of u)
29
+ this[n.toLowerCase()] = (s, o) => this.request(s, { ...o, method: n });
30
30
  }
31
31
  get;
32
32
  post;
33
33
  put;
34
34
  patch;
35
35
  delete;
36
+ extends(e, t) {
37
+ const { url: n, init: s } = this.fetcherParameters(e, t);
38
+ return new c(n, s);
39
+ }
36
40
  async request(e, t) {
37
- const s = new URL(e, this.baseURL), n = l(this.baseInit?.headers, t.headers);
38
- return await u(s, { ...this.baseInit, ...t, headers: n });
41
+ const { url: n, init: s } = this.fetcherParameters(e, t);
42
+ return await h(n, s);
43
+ }
44
+ fetcherParameters(e, t) {
45
+ const n = d(this.baseURL, e), s = f(this.baseInit?.headers, t?.headers), o = { ...this.baseInit, ...t, headers: s };
46
+ return { url: n, init: o };
39
47
  }
40
48
  }
41
- async function u(...r) {
49
+ async function h(...r) {
42
50
  const e = await fetch(...r), t = await e.json();
43
51
  if (e.ok)
44
52
  return t;
45
- throw new h({
53
+ throw new l({
46
54
  response: e,
47
55
  data: t
48
56
  });
49
57
  }
50
- class h extends Error {
58
+ class l extends Error {
51
59
  response;
52
60
  data;
53
61
  constructor({ response: e, data: t }) {
54
62
  super(e.statusText), this.name = "FetcherError", this.response = e, this.data = t;
55
63
  }
56
64
  }
57
- function l(...r) {
65
+ function d(r, e) {
66
+ return e ? r.replace(/\/+$/, "") + "/" + e.replace(/^\/+/, "") : r;
67
+ }
68
+ function f(...r) {
58
69
  const e = {};
59
70
  for (const t of r) {
60
- const s = new Headers(t);
61
- for (const [n, o] of s.entries())
62
- o == null ? delete e[n] : e[n] = o;
71
+ const n = new Headers(t);
72
+ for (const [s, o] of n.entries())
73
+ o == null ? delete e[s] : e[s] = o;
63
74
  }
64
75
  return new Headers(e);
65
76
  }
66
- function d(r, e, t) {
67
- const s = new MutationObserver((n, o) => {
68
- for (const i of n)
69
- e(i, o);
77
+ function p(r, e, t) {
78
+ const n = new MutationObserver((s, o) => {
79
+ for (const a of s)
80
+ e(a, o);
70
81
  });
71
- return s.observe(r, {
82
+ return n.observe(r, {
72
83
  childList: !0,
73
84
  subtree: !0,
74
85
  ...t
75
- }), s;
86
+ }), n;
76
87
  }
77
- function v(r, e = document.documentElement) {
88
+ function L(r, e = document.documentElement) {
78
89
  return new Promise((t) => {
79
- function s() {
80
- const n = e.querySelector(r);
81
- n && t(n);
90
+ function n() {
91
+ const s = e.querySelector(r);
92
+ s && t(s);
82
93
  }
83
- d(e, (n, o) => {
84
- s(), o.disconnect();
94
+ p(e, (s, o) => {
95
+ n(), o.disconnect();
85
96
  });
86
97
  });
87
98
  }
88
- class f {
99
+ class m {
89
100
  #e = {};
90
101
  on(e, t) {
91
- const s = this.#e[e];
92
- return s ? s.push(t) : this.#e[e] = [t], this;
102
+ const n = this.#e[e];
103
+ return n ? n.push(t) : this.#e[e] = [t], this;
93
104
  }
94
105
  addListener(e, t) {
95
106
  return this.on(e, t);
96
107
  }
97
108
  once(e, t) {
98
- const s = (...n) => {
99
- this.off(e, s), t(...n);
109
+ const n = (...s) => {
110
+ this.off(e, n), t(...s);
100
111
  };
101
- return this.on(e, s), this;
112
+ return this.on(e, n), this;
102
113
  }
103
114
  emit(e, ...t) {
104
- const s = this.#e[e] || [];
105
- for (let n = 0; n < s.length; n++)
106
- s[n](...t);
107
- return Boolean(s.length);
115
+ const n = this.#e[e] || [];
116
+ for (let s = 0; s < n.length; s++)
117
+ n[s](...t);
118
+ return Boolean(n.length);
108
119
  }
109
120
  off(e, t) {
110
- return this.#e[e] && (this.#e[e] = this.#e[e].filter((s) => s !== t)), this;
121
+ return this.#e[e] && (this.#e[e] = this.#e[e].filter((n) => n !== t)), this;
111
122
  }
112
123
  removeListener(e, t) {
113
124
  return this.off(e, t);
@@ -125,30 +136,30 @@ class f {
125
136
  return this.#e[e]?.length ?? 0;
126
137
  }
127
138
  }
128
- class p extends f {
139
+ class w extends m {
129
140
  constructor() {
130
141
  super();
131
- const { history: e, location: t } = window, { pushState: s, replaceState: n } = e;
142
+ const { history: e, location: t } = window, { pushState: n, replaceState: s } = e;
132
143
  e.pushState = (...o) => {
133
- s.apply(e, o), this.emit("pushState", t, o[0]);
144
+ n.apply(e, o), this.emit("pushState", t, o[0]);
134
145
  }, e.replaceState = (...o) => {
135
- n.apply(e, o), this.emit("replaceState", t, o[0]);
146
+ s.apply(e, o), this.emit("replaceState", t, o[0]);
136
147
  }, window.addEventListener("popstate", ({ state: o }) => {
137
148
  this.emit("popState", t, o);
138
149
  });
139
150
  }
140
151
  }
141
- const L = new p();
152
+ const b = new w();
142
153
  export {
143
- E as Fetcher,
144
- h as FetcherError,
145
- y as domReady,
146
- m as el,
147
- u as fetcher,
148
- L as locationObserver,
149
- w as nbsp,
150
- d as observeElement,
151
- c as text,
152
- v as waitElement
154
+ c as Fetcher,
155
+ l as FetcherError,
156
+ v as domReady,
157
+ y as el,
158
+ h as fetcher,
159
+ b as locationObserver,
160
+ E as nbsp,
161
+ p as observeElement,
162
+ i as text,
163
+ L as waitElement
153
164
  };
154
165
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/html.ts","../src/fetcher.ts","../src/observeElement.ts","../src/waitElement.ts","../node_modules/.pnpm/@zero-dependency+emitter@1.1.1/node_modules/@zero-dependency/emitter/dist/index.es.js","../src/locationObserver.ts"],"sourcesContent":["// prettier-ignore\ntype Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{\n style: Partial<CSSStyleDeclaration>\n} & Omit<HTMLElementTagNameMap[T], 'style'>>\n\ntype Children = (string | Node | HTMLElement)[]\n\nexport function el<T extends keyof HTMLElementTagNameMap>(\n tag: T,\n attributes?: Children | Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n if (Array.isArray(attributes)) {\n el.append(...attributes)\n } else {\n Object.assign(el, attributes)\n Object.assign(el.style, attributes?.style)\n el.append(...children)\n }\n\n return el\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str)\n}\n\nexport function nbsp(): Text {\n return text('\\u00a0')\n}\n\nexport async function domReady(): Promise<void> {\n return new Promise((resolve) => {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n } else {\n resolve()\n }\n })\n}\n","interface FetcherInit\n extends Pick<\n RequestInit,\n 'headers' | 'credentials' | 'mode' | 'cache' | 'redirect' | 'referrerPolicy'\n > {}\n\ninterface FetcherRequest extends Omit<RequestInit, 'method'> {}\n\nconst methods = [\n 'GET',\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE'\n] as const\n\ntype RequestMethods = typeof methods[number]\n\nexport class Fetcher {\n get: <T>(path: string, init?: FetcherRequest) => Promise<T>\n post: <T>(path: string, init?: FetcherRequest) => Promise<T>\n put: <T>(path: string, init?: FetcherRequest) => Promise<T>\n patch: <T>(path: string, init?: FetcherRequest) => Promise<T>\n delete: <T>(path: string, init?: FetcherRequest) => Promise<T>\n\n constructor(\n private readonly baseURL: string,\n private readonly baseInit?: FetcherInit\n ) {\n for (const method of methods) {\n // @ts-ignore\n this[method.toLowerCase()] = (path: string, init?: FetcherRequest) =>\n this.request(path, { ...init, method })\n }\n }\n\n async request<T>(\n path: string,\n init: FetcherRequest & { method: RequestMethods }\n ): Promise<T> {\n const url = new URL(path, this.baseURL)\n const headers = mergeHeaders(this.baseInit?.headers!, init.headers!)\n return await fetcher<T>(url, { ...this.baseInit, ...init, headers })\n }\n}\n\nexport async function fetcher<T = unknown>(\n ...args: Parameters<typeof fetch>\n): Promise<T> {\n const response = await fetch(...args)\n const data = (await response.json()) as T\n\n if (response.ok) {\n return data\n }\n\n throw new FetcherError({\n response,\n data\n })\n}\n\nexport class FetcherError<T> extends Error {\n response: Response\n data: T\n\n constructor({ response, data }: { response: Response; data: T }) {\n super(response.statusText)\n\n this.name = 'FetcherError'\n this.response = response\n this.data = data\n }\n}\n\nfunction mergeHeaders(...sources: HeadersInit[]): Headers {\n const result: Record<string, string> = {}\n\n for (const source of sources) {\n const headers = new Headers(source)\n\n for (const [key, value] of headers.entries()) {\n if (value === undefined || value === null) {\n delete result[key]\n } else {\n result[key] = value\n }\n }\n }\n\n return new Headers(result)\n}\n","export function observeElement<T extends Element = Element>(\n el: T,\n callback: (mutation: MutationRecord, observer: MutationObserver) => void,\n options?: MutationObserverInit\n) {\n const observe = new MutationObserver((mutations, observer) => {\n for (const mutation of mutations) {\n callback(mutation, observer)\n }\n })\n\n observe.observe(el, {\n childList: true,\n subtree: true,\n ...options\n })\n\n return observe\n}\n","import { observeElement } from './observeElement.js'\n\nexport function waitElement<T extends Element = Element>(\n selector: string,\n target = document.documentElement\n): Promise<T> {\n return new Promise((resolve) => {\n function resolveElement() {\n const el = target.querySelector<T>(selector)\n if (el) {\n resolve(el)\n }\n }\n\n observeElement(target, (_, observer) => {\n resolveElement()\n observer.disconnect()\n })\n })\n}\n","class n {\n #t = {};\n on(t, e) {\n const s = this.#t[t];\n return s ? s.push(e) : this.#t[t] = [e], this;\n }\n addListener(t, e) {\n return this.on(t, e);\n }\n once(t, e) {\n const s = (...i) => {\n this.off(t, s), e(...i);\n };\n return this.on(t, s), this;\n }\n emit(t, ...e) {\n const s = this.#t[t] || [];\n for (let i = 0; i < s.length; i++)\n s[i](...e);\n return Boolean(s.length);\n }\n off(t, e) {\n return this.#t[t] && (this.#t[t] = this.#t[t].filter((s) => s !== e)), this;\n }\n removeListener(t, e) {\n return this.off(t, e);\n }\n removeAllListeners(t) {\n return t ? delete this.#t[t] : this.#t = {}, this;\n }\n eventNames() {\n return Reflect.ownKeys(this.#t);\n }\n listeners(t) {\n return this.#t[t];\n }\n listenerCount(t) {\n return this.#t[t]?.length ?? 0;\n }\n}\nexport {\n n as Emitter\n};\n//# sourceMappingURL=index.es.js.map\n","import { Emitter } from '@zero-dependency/emitter'\n\ntype LocationCallback = (location: Location, state: any) => void\n\ntype Events = {\n pushState: LocationCallback\n replaceState: LocationCallback\n popState: LocationCallback\n}\n\nclass LocationObserver extends Emitter<Events> {\n constructor() {\n super()\n\n const { history, location } = window\n const { pushState, replaceState } = history\n\n history.pushState = (...args) => {\n pushState.apply(history, args)\n this.emit('pushState', location, args[0])\n }\n\n history.replaceState = (...args) => {\n replaceState.apply(history, args)\n this.emit('replaceState', location, args[0])\n }\n\n window.addEventListener('popstate', ({ state }) => {\n this.emit('popState', location, state)\n })\n }\n}\n\nexport const locationObserver = new LocationObserver()\n"],"names":["el","tag","attributes","children","text","str","nbsp","domReady","resolve","methods","Fetcher","baseURL","baseInit","method","path","init","url","headers","mergeHeaders","fetcher","args","response","data","FetcherError","sources","result","source","key","value","observeElement","callback","options","observe","mutations","observer","mutation","waitElement","selector","target","resolveElement","_","n","#t","t","e","i","LocationObserver","Emitter","history","location","pushState","replaceState","state","locationObserver"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/html.ts","../src/fetcher.ts","../src/observeElement.ts","../src/waitElement.ts","../node_modules/.pnpm/@zero-dependency+emitter@1.1.1/node_modules/@zero-dependency/emitter/dist/index.es.js","../src/locationObserver.ts"],"sourcesContent":["// prettier-ignore\ntype Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{\n style: Partial<CSSStyleDeclaration>\n} & Omit<HTMLElementTagNameMap[T], 'style'>>\n\ntype Children = (string | Node | HTMLElement)[]\n\nexport function el<T extends keyof HTMLElementTagNameMap>(\n tag: T,\n attributes?: Children | Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n\n if (typeof attributes === 'string') {\n el.append(text(attributes))\n } else if (Array.isArray(attributes)) {\n el.append(...attributes)\n } else {\n Object.assign(el, attributes)\n Object.assign(el.style, attributes?.style)\n }\n\n if (children.length) {\n el.append(...children)\n }\n\n return el\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str)\n}\n\nexport function nbsp(): Text {\n return text('\\u00a0')\n}\n\nexport async function domReady(): Promise<void> {\n return new Promise((resolve) => {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n } else {\n resolve()\n }\n })\n}\n","interface FetcherInit\n extends Pick<\n RequestInit,\n 'headers' | 'credentials' | 'mode' | 'cache' | 'redirect' | 'referrerPolicy'\n > {}\n\ninterface FetcherRequest extends Omit<RequestInit, 'method'> {}\n\nconst methods = [\n 'GET',\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE'\n] as const\n\ntype RequestMethods = typeof methods[number]\ntype FetcherMethod = <T>(path: string, init?: FetcherRequest) => Promise<T>\n\nexport class Fetcher {\n get: FetcherMethod\n post: FetcherMethod\n put: FetcherMethod\n patch: FetcherMethod\n delete: FetcherMethod\n\n constructor(\n private readonly baseURL: string,\n private readonly baseInit?: FetcherInit\n ) {\n for (const method of methods) {\n // @ts-ignore\n this[method.toLowerCase()] = (path: string, init?: FetcherRequest) => {\n return this.request(path, { ...init, method })\n }\n }\n }\n\n extends(path: string, baseInit?: FetcherInit): Fetcher {\n const { url, init } = this.fetcherParameters(path, baseInit)\n return new Fetcher(url, init)\n }\n\n async request<T>(\n path: string,\n initRequest: FetcherRequest & { method: RequestMethods }\n ): Promise<T> {\n const { url, init } = this.fetcherParameters(path, initRequest)\n return await fetcher<T>(url, init)\n }\n\n private fetcherParameters(path: string, baseInit?: FetcherInit) {\n const url = combineURLs(this.baseURL, path)\n const headers = combineHeaders(this.baseInit?.headers, baseInit?.headers)\n const init = { ...this.baseInit, ...baseInit, headers }\n return { url, init }\n }\n}\n\nexport async function fetcher<T = unknown>(\n ...args: Parameters<typeof fetch>\n): Promise<T> {\n const response = await fetch(...args)\n const data = (await response.json()) as T\n\n if (response.ok) {\n return data\n }\n\n throw new FetcherError({\n response,\n data\n })\n}\n\nexport class FetcherError<T> extends Error {\n response: Response\n data: T\n\n constructor({ response, data }: { response: Response; data: T }) {\n super(response.statusText)\n\n this.name = 'FetcherError'\n this.response = response\n this.data = data\n }\n}\n\n// https://github.com/axios/axios/blob/v1.x/lib/helpers/combineURLs.js\nfunction combineURLs(baseURL: string, path: string): string {\n return path\n ? baseURL.replace(/\\/+$/, '') + '/' + path.replace(/^\\/+/, '')\n : baseURL\n}\n\nfunction combineHeaders(...sources: HeadersInit[]): Headers {\n const result: Record<string, string> = {}\n\n for (const source of sources) {\n const headers = new Headers(source)\n\n for (const [key, value] of headers.entries()) {\n if (value === undefined || value === null) {\n delete result[key]\n } else {\n result[key] = value\n }\n }\n }\n\n return new Headers(result)\n}\n","export function observeElement<T extends Element = Element>(\n el: T,\n callback: (mutation: MutationRecord, observer: MutationObserver) => void,\n options?: MutationObserverInit\n) {\n const observe = new MutationObserver((mutations, observer) => {\n for (const mutation of mutations) {\n callback(mutation, observer)\n }\n })\n\n observe.observe(el, {\n childList: true,\n subtree: true,\n ...options\n })\n\n return observe\n}\n","import { observeElement } from './observeElement.js'\n\nexport function waitElement<T extends Element = Element>(\n selector: string,\n target = document.documentElement\n): Promise<T> {\n return new Promise((resolve) => {\n function resolveElement() {\n const el = target.querySelector<T>(selector)\n if (el) {\n resolve(el)\n }\n }\n\n observeElement(target, (_, observer) => {\n resolveElement()\n observer.disconnect()\n })\n })\n}\n","class n {\n #t = {};\n on(t, e) {\n const s = this.#t[t];\n return s ? s.push(e) : this.#t[t] = [e], this;\n }\n addListener(t, e) {\n return this.on(t, e);\n }\n once(t, e) {\n const s = (...i) => {\n this.off(t, s), e(...i);\n };\n return this.on(t, s), this;\n }\n emit(t, ...e) {\n const s = this.#t[t] || [];\n for (let i = 0; i < s.length; i++)\n s[i](...e);\n return Boolean(s.length);\n }\n off(t, e) {\n return this.#t[t] && (this.#t[t] = this.#t[t].filter((s) => s !== e)), this;\n }\n removeListener(t, e) {\n return this.off(t, e);\n }\n removeAllListeners(t) {\n return t ? delete this.#t[t] : this.#t = {}, this;\n }\n eventNames() {\n return Reflect.ownKeys(this.#t);\n }\n listeners(t) {\n return this.#t[t];\n }\n listenerCount(t) {\n return this.#t[t]?.length ?? 0;\n }\n}\nexport {\n n as Emitter\n};\n//# sourceMappingURL=index.es.js.map\n","import { Emitter } from '@zero-dependency/emitter'\n\ntype LocationCallback = (location: Location, state: any) => void\n\ntype Events = {\n pushState: LocationCallback\n replaceState: LocationCallback\n popState: LocationCallback\n}\n\nclass LocationObserver extends Emitter<Events> {\n constructor() {\n super()\n\n const { history, location } = window\n const { pushState, replaceState } = history\n\n history.pushState = (...args) => {\n pushState.apply(history, args)\n this.emit('pushState', location, args[0])\n }\n\n history.replaceState = (...args) => {\n replaceState.apply(history, args)\n this.emit('replaceState', location, args[0])\n }\n\n window.addEventListener('popstate', ({ state }) => {\n this.emit('popState', location, state)\n })\n }\n}\n\nexport const locationObserver = new LocationObserver()\n"],"names":["el","tag","attributes","children","text","str","nbsp","domReady","resolve","methods","Fetcher","baseURL","baseInit","method","path","init","url","initRequest","fetcher","combineURLs","headers","combineHeaders","args","response","data","FetcherError","sources","result","source","key","value","observeElement","callback","options","observe","mutations","observer","mutation","waitElement","selector","target","resolveElement","_","n","#t","t","e","s","i","LocationObserver","Emitter","history","location","pushState","replaceState","state","locationObserver"],"mappings":"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"}
package/dist/index.umd.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(i,c){typeof exports=="object"&&typeof module<"u"?c(exports):typeof define=="function"&&define.amd?define(["exports"],c):(i=typeof globalThis<"u"?globalThis:i||self,c(i["@zero-dependency/dom"]={}))})(this,function(i){"use strict";function c(r,e,...t){const n=document.createElement(r);return Array.isArray(e)?n.append(...e):(Object.assign(n,e),Object.assign(n.style,e?.style),n.append(...t)),n}function a(r){return document.createTextNode(r)}function l(){return a("\xA0")}async function f(){return new Promise(r=>{document.readyState=="loading"?document.addEventListener("DOMContentLoaded",()=>r(),{once:!0}):r()})}const m=["GET","POST","PUT","PATCH","DELETE"];class p{constructor(e,t){this.baseURL=e,this.baseInit=t;for(const n of m)this[n.toLowerCase()]=(s,o)=>this.request(s,{...o,method:n})}get;post;put;patch;delete;async request(e,t){const n=new URL(e,this.baseURL),s=w(this.baseInit?.headers,t.headers);return await u(n,{...this.baseInit,...t,headers:s})}}async function u(...r){const e=await fetch(...r),t=await e.json();if(e.ok)return t;throw new d({response:e,data:t})}class d extends Error{response;data;constructor({response:e,data:t}){super(e.statusText),this.name="FetcherError",this.response=e,this.data=t}}function w(...r){const e={};for(const t of r){const n=new Headers(t);for(const[s,o]of n.entries())o==null?delete e[s]:e[s]=o}return new Headers(e)}function h(r,e,t){const n=new MutationObserver((s,o)=>{for(const L of s)e(L,o)});return n.observe(r,{childList:!0,subtree:!0,...t}),n}function y(r,e=document.documentElement){return new Promise(t=>{function n(){const s=e.querySelector(r);s&&t(s)}h(e,(s,o)=>{n(),o.disconnect()})})}class b{#e={};on(e,t){const n=this.#e[e];return n?n.push(t):this.#e[e]=[t],this}addListener(e,t){return this.on(e,t)}once(e,t){const n=(...s)=>{this.off(e,n),t(...s)};return this.on(e,n),this}emit(e,...t){const n=this.#e[e]||[];for(let s=0;s<n.length;s++)n[s](...t);return Boolean(n.length)}off(e,t){return this.#e[e]&&(this.#e[e]=this.#e[e].filter(n=>n!==t)),this}removeListener(e,t){return this.off(e,t)}removeAllListeners(e){return e?delete this.#e[e]:this.#e={},this}eventNames(){return Reflect.ownKeys(this.#e)}listeners(e){return this.#e[e]}listenerCount(e){return this.#e[e]?.length??0}}class v extends b{constructor(){super();const{history:e,location:t}=window,{pushState:n,replaceState:s}=e;e.pushState=(...o)=>{n.apply(e,o),this.emit("pushState",t,o[0])},e.replaceState=(...o)=>{s.apply(e,o),this.emit("replaceState",t,o[0])},window.addEventListener("popstate",({state:o})=>{this.emit("popState",t,o)})}}const E=new v;i.Fetcher=p,i.FetcherError=d,i.domReady=f,i.el=c,i.fetcher=u,i.locationObserver=E,i.nbsp=l,i.observeElement=h,i.text=a,i.waitElement=y,Object.defineProperties(i,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ (function(i,c){typeof exports=="object"&&typeof module<"u"?c(exports):typeof define=="function"&&define.amd?define(["exports"],c):(i=typeof globalThis<"u"?globalThis:i||self,c(i["@zero-dependency/dom"]={}))})(this,function(i){"use strict";function c(r,e,...t){const n=document.createElement(r);return typeof e=="string"?n.append(a(e)):Array.isArray(e)?n.append(...e):(Object.assign(n,e),Object.assign(n.style,e?.style)),t.length&&n.append(...t),n}function a(r){return document.createTextNode(r)}function f(){return a("\xA0")}async function m(){return new Promise(r=>{document.readyState=="loading"?document.addEventListener("DOMContentLoaded",()=>r(),{once:!0}):r()})}const p=["GET","POST","PUT","PATCH","DELETE"];class u{constructor(e,t){this.baseURL=e,this.baseInit=t;for(const n of p)this[n.toLowerCase()]=(s,o)=>this.request(s,{...o,method:n})}get;post;put;patch;delete;extends(e,t){const{url:n,init:s}=this.fetcherParameters(e,t);return new u(n,s)}async request(e,t){const{url:n,init:s}=this.fetcherParameters(e,t);return await h(n,s)}fetcherParameters(e,t){const n=y(this.baseURL,e),s=w(this.baseInit?.headers,t?.headers),o={...this.baseInit,...t,headers:s};return{url:n,init:o}}}async function h(...r){const e=await fetch(...r),t=await e.json();if(e.ok)return t;throw new l({response:e,data:t})}class l extends Error{response;data;constructor({response:e,data:t}){super(e.statusText),this.name="FetcherError",this.response=e,this.data=t}}function y(r,e){return e?r.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):r}function w(...r){const e={};for(const t of r){const n=new Headers(t);for(const[s,o]of n.entries())o==null?delete e[s]:e[s]=o}return new Headers(e)}function d(r,e,t){const n=new MutationObserver((s,o)=>{for(const S of s)e(S,o)});return n.observe(r,{childList:!0,subtree:!0,...t}),n}function v(r,e=document.documentElement){return new Promise(t=>{function n(){const s=e.querySelector(r);s&&t(s)}d(e,(s,o)=>{n(),o.disconnect()})})}class E{#e={};on(e,t){const n=this.#e[e];return n?n.push(t):this.#e[e]=[t],this}addListener(e,t){return this.on(e,t)}once(e,t){const n=(...s)=>{this.off(e,n),t(...s)};return this.on(e,n),this}emit(e,...t){const n=this.#e[e]||[];for(let s=0;s<n.length;s++)n[s](...t);return Boolean(n.length)}off(e,t){return this.#e[e]&&(this.#e[e]=this.#e[e].filter(n=>n!==t)),this}removeListener(e,t){return this.off(e,t)}removeAllListeners(e){return e?delete this.#e[e]:this.#e={},this}eventNames(){return Reflect.ownKeys(this.#e)}listeners(e){return this.#e[e]}listenerCount(e){return this.#e[e]?.length??0}}class b extends E{constructor(){super();const{history:e,location:t}=window,{pushState:n,replaceState:s}=e;e.pushState=(...o)=>{n.apply(e,o),this.emit("pushState",t,o[0])},e.replaceState=(...o)=>{s.apply(e,o),this.emit("replaceState",t,o[0])},window.addEventListener("popstate",({state:o})=>{this.emit("popState",t,o)})}}const L=new b;i.Fetcher=u,i.FetcherError=l,i.domReady=m,i.el=c,i.fetcher=h,i.locationObserver=L,i.nbsp=f,i.observeElement=d,i.text=a,i.waitElement=v,Object.defineProperties(i,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
2
2
  //# sourceMappingURL=index.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/html.ts","../src/fetcher.ts","../src/observeElement.ts","../src/waitElement.ts","../node_modules/.pnpm/@zero-dependency+emitter@1.1.1/node_modules/@zero-dependency/emitter/dist/index.es.js","../src/locationObserver.ts"],"sourcesContent":["// prettier-ignore\ntype Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{\n style: Partial<CSSStyleDeclaration>\n} & Omit<HTMLElementTagNameMap[T], 'style'>>\n\ntype Children = (string | Node | HTMLElement)[]\n\nexport function el<T extends keyof HTMLElementTagNameMap>(\n tag: T,\n attributes?: Children | Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n if (Array.isArray(attributes)) {\n el.append(...attributes)\n } else {\n Object.assign(el, attributes)\n Object.assign(el.style, attributes?.style)\n el.append(...children)\n }\n\n return el\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str)\n}\n\nexport function nbsp(): Text {\n return text('\\u00a0')\n}\n\nexport async function domReady(): Promise<void> {\n return new Promise((resolve) => {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n } else {\n resolve()\n }\n })\n}\n","interface FetcherInit\n extends Pick<\n RequestInit,\n 'headers' | 'credentials' | 'mode' | 'cache' | 'redirect' | 'referrerPolicy'\n > {}\n\ninterface FetcherRequest extends Omit<RequestInit, 'method'> {}\n\nconst methods = [\n 'GET',\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE'\n] as const\n\ntype RequestMethods = typeof methods[number]\n\nexport class Fetcher {\n get: <T>(path: string, init?: FetcherRequest) => Promise<T>\n post: <T>(path: string, init?: FetcherRequest) => Promise<T>\n put: <T>(path: string, init?: FetcherRequest) => Promise<T>\n patch: <T>(path: string, init?: FetcherRequest) => Promise<T>\n delete: <T>(path: string, init?: FetcherRequest) => Promise<T>\n\n constructor(\n private readonly baseURL: string,\n private readonly baseInit?: FetcherInit\n ) {\n for (const method of methods) {\n // @ts-ignore\n this[method.toLowerCase()] = (path: string, init?: FetcherRequest) =>\n this.request(path, { ...init, method })\n }\n }\n\n async request<T>(\n path: string,\n init: FetcherRequest & { method: RequestMethods }\n ): Promise<T> {\n const url = new URL(path, this.baseURL)\n const headers = mergeHeaders(this.baseInit?.headers!, init.headers!)\n return await fetcher<T>(url, { ...this.baseInit, ...init, headers })\n }\n}\n\nexport async function fetcher<T = unknown>(\n ...args: Parameters<typeof fetch>\n): Promise<T> {\n const response = await fetch(...args)\n const data = (await response.json()) as T\n\n if (response.ok) {\n return data\n }\n\n throw new FetcherError({\n response,\n data\n })\n}\n\nexport class FetcherError<T> extends Error {\n response: Response\n data: T\n\n constructor({ response, data }: { response: Response; data: T }) {\n super(response.statusText)\n\n this.name = 'FetcherError'\n this.response = response\n this.data = data\n }\n}\n\nfunction mergeHeaders(...sources: HeadersInit[]): Headers {\n const result: Record<string, string> = {}\n\n for (const source of sources) {\n const headers = new Headers(source)\n\n for (const [key, value] of headers.entries()) {\n if (value === undefined || value === null) {\n delete result[key]\n } else {\n result[key] = value\n }\n }\n }\n\n return new Headers(result)\n}\n","export function observeElement<T extends Element = Element>(\n el: T,\n callback: (mutation: MutationRecord, observer: MutationObserver) => void,\n options?: MutationObserverInit\n) {\n const observe = new MutationObserver((mutations, observer) => {\n for (const mutation of mutations) {\n callback(mutation, observer)\n }\n })\n\n observe.observe(el, {\n childList: true,\n subtree: true,\n ...options\n })\n\n return observe\n}\n","import { observeElement } from './observeElement.js'\n\nexport function waitElement<T extends Element = Element>(\n selector: string,\n target = document.documentElement\n): Promise<T> {\n return new Promise((resolve) => {\n function resolveElement() {\n const el = target.querySelector<T>(selector)\n if (el) {\n resolve(el)\n }\n }\n\n observeElement(target, (_, observer) => {\n resolveElement()\n observer.disconnect()\n })\n })\n}\n","class n {\n #t = {};\n on(t, e) {\n const s = this.#t[t];\n return s ? s.push(e) : this.#t[t] = [e], this;\n }\n addListener(t, e) {\n return this.on(t, e);\n }\n once(t, e) {\n const s = (...i) => {\n this.off(t, s), e(...i);\n };\n return this.on(t, s), this;\n }\n emit(t, ...e) {\n const s = this.#t[t] || [];\n for (let i = 0; i < s.length; i++)\n s[i](...e);\n return Boolean(s.length);\n }\n off(t, e) {\n return this.#t[t] && (this.#t[t] = this.#t[t].filter((s) => s !== e)), this;\n }\n removeListener(t, e) {\n return this.off(t, e);\n }\n removeAllListeners(t) {\n return t ? delete this.#t[t] : this.#t = {}, this;\n }\n eventNames() {\n return Reflect.ownKeys(this.#t);\n }\n listeners(t) {\n return this.#t[t];\n }\n listenerCount(t) {\n return this.#t[t]?.length ?? 0;\n }\n}\nexport {\n n as Emitter\n};\n//# sourceMappingURL=index.es.js.map\n","import { Emitter } from '@zero-dependency/emitter'\n\ntype LocationCallback = (location: Location, state: any) => void\n\ntype Events = {\n pushState: LocationCallback\n replaceState: LocationCallback\n popState: LocationCallback\n}\n\nclass LocationObserver extends Emitter<Events> {\n constructor() {\n super()\n\n const { history, location } = window\n const { pushState, replaceState } = history\n\n history.pushState = (...args) => {\n pushState.apply(history, args)\n this.emit('pushState', location, args[0])\n }\n\n history.replaceState = (...args) => {\n replaceState.apply(history, args)\n this.emit('replaceState', location, args[0])\n }\n\n window.addEventListener('popstate', ({ state }) => {\n this.emit('popState', location, state)\n })\n }\n}\n\nexport const locationObserver = new LocationObserver()\n"],"names":["el","tag","attributes","children","text","str","nbsp","domReady","resolve","methods","Fetcher","baseURL","baseInit","method","path","init","url","headers","mergeHeaders","fetcher","args","response","data","FetcherError","sources","result","source","key","value","observeElement","callback","options","observe","mutations","observer","mutation","waitElement","selector","target","resolveElement","_","n","#t","t","e","s","i","LocationObserver","Emitter","history","location","pushState","replaceState","state","locationObserver"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/html.ts","../src/fetcher.ts","../src/observeElement.ts","../src/waitElement.ts","../node_modules/.pnpm/@zero-dependency+emitter@1.1.1/node_modules/@zero-dependency/emitter/dist/index.es.js","../src/locationObserver.ts"],"sourcesContent":["// prettier-ignore\ntype Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{\n style: Partial<CSSStyleDeclaration>\n} & Omit<HTMLElementTagNameMap[T], 'style'>>\n\ntype Children = (string | Node | HTMLElement)[]\n\nexport function el<T extends keyof HTMLElementTagNameMap>(\n tag: T,\n attributes?: Children | Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n\n if (typeof attributes === 'string') {\n el.append(text(attributes))\n } else if (Array.isArray(attributes)) {\n el.append(...attributes)\n } else {\n Object.assign(el, attributes)\n Object.assign(el.style, attributes?.style)\n }\n\n if (children.length) {\n el.append(...children)\n }\n\n return el\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str)\n}\n\nexport function nbsp(): Text {\n return text('\\u00a0')\n}\n\nexport async function domReady(): Promise<void> {\n return new Promise((resolve) => {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n } else {\n resolve()\n }\n })\n}\n","interface FetcherInit\n extends Pick<\n RequestInit,\n 'headers' | 'credentials' | 'mode' | 'cache' | 'redirect' | 'referrerPolicy'\n > {}\n\ninterface FetcherRequest extends Omit<RequestInit, 'method'> {}\n\nconst methods = [\n 'GET',\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE'\n] as const\n\ntype RequestMethods = typeof methods[number]\ntype FetcherMethod = <T>(path: string, init?: FetcherRequest) => Promise<T>\n\nexport class Fetcher {\n get: FetcherMethod\n post: FetcherMethod\n put: FetcherMethod\n patch: FetcherMethod\n delete: FetcherMethod\n\n constructor(\n private readonly baseURL: string,\n private readonly baseInit?: FetcherInit\n ) {\n for (const method of methods) {\n // @ts-ignore\n this[method.toLowerCase()] = (path: string, init?: FetcherRequest) => {\n return this.request(path, { ...init, method })\n }\n }\n }\n\n extends(path: string, baseInit?: FetcherInit): Fetcher {\n const { url, init } = this.fetcherParameters(path, baseInit)\n return new Fetcher(url, init)\n }\n\n async request<T>(\n path: string,\n initRequest: FetcherRequest & { method: RequestMethods }\n ): Promise<T> {\n const { url, init } = this.fetcherParameters(path, initRequest)\n return await fetcher<T>(url, init)\n }\n\n private fetcherParameters(path: string, baseInit?: FetcherInit) {\n const url = combineURLs(this.baseURL, path)\n const headers = combineHeaders(this.baseInit?.headers, baseInit?.headers)\n const init = { ...this.baseInit, ...baseInit, headers }\n return { url, init }\n }\n}\n\nexport async function fetcher<T = unknown>(\n ...args: Parameters<typeof fetch>\n): Promise<T> {\n const response = await fetch(...args)\n const data = (await response.json()) as T\n\n if (response.ok) {\n return data\n }\n\n throw new FetcherError({\n response,\n data\n })\n}\n\nexport class FetcherError<T> extends Error {\n response: Response\n data: T\n\n constructor({ response, data }: { response: Response; data: T }) {\n super(response.statusText)\n\n this.name = 'FetcherError'\n this.response = response\n this.data = data\n }\n}\n\n// https://github.com/axios/axios/blob/v1.x/lib/helpers/combineURLs.js\nfunction combineURLs(baseURL: string, path: string): string {\n return path\n ? baseURL.replace(/\\/+$/, '') + '/' + path.replace(/^\\/+/, '')\n : baseURL\n}\n\nfunction combineHeaders(...sources: HeadersInit[]): Headers {\n const result: Record<string, string> = {}\n\n for (const source of sources) {\n const headers = new Headers(source)\n\n for (const [key, value] of headers.entries()) {\n if (value === undefined || value === null) {\n delete result[key]\n } else {\n result[key] = value\n }\n }\n }\n\n return new Headers(result)\n}\n","export function observeElement<T extends Element = Element>(\n el: T,\n callback: (mutation: MutationRecord, observer: MutationObserver) => void,\n options?: MutationObserverInit\n) {\n const observe = new MutationObserver((mutations, observer) => {\n for (const mutation of mutations) {\n callback(mutation, observer)\n }\n })\n\n observe.observe(el, {\n childList: true,\n subtree: true,\n ...options\n })\n\n return observe\n}\n","import { observeElement } from './observeElement.js'\n\nexport function waitElement<T extends Element = Element>(\n selector: string,\n target = document.documentElement\n): Promise<T> {\n return new Promise((resolve) => {\n function resolveElement() {\n const el = target.querySelector<T>(selector)\n if (el) {\n resolve(el)\n }\n }\n\n observeElement(target, (_, observer) => {\n resolveElement()\n observer.disconnect()\n })\n })\n}\n","class n {\n #t = {};\n on(t, e) {\n const s = this.#t[t];\n return s ? s.push(e) : this.#t[t] = [e], this;\n }\n addListener(t, e) {\n return this.on(t, e);\n }\n once(t, e) {\n const s = (...i) => {\n this.off(t, s), e(...i);\n };\n return this.on(t, s), this;\n }\n emit(t, ...e) {\n const s = this.#t[t] || [];\n for (let i = 0; i < s.length; i++)\n s[i](...e);\n return Boolean(s.length);\n }\n off(t, e) {\n return this.#t[t] && (this.#t[t] = this.#t[t].filter((s) => s !== e)), this;\n }\n removeListener(t, e) {\n return this.off(t, e);\n }\n removeAllListeners(t) {\n return t ? delete this.#t[t] : this.#t = {}, this;\n }\n eventNames() {\n return Reflect.ownKeys(this.#t);\n }\n listeners(t) {\n return this.#t[t];\n }\n listenerCount(t) {\n return this.#t[t]?.length ?? 0;\n }\n}\nexport {\n n as Emitter\n};\n//# sourceMappingURL=index.es.js.map\n","import { Emitter } from '@zero-dependency/emitter'\n\ntype LocationCallback = (location: Location, state: any) => void\n\ntype Events = {\n pushState: LocationCallback\n replaceState: LocationCallback\n popState: LocationCallback\n}\n\nclass LocationObserver extends Emitter<Events> {\n constructor() {\n super()\n\n const { history, location } = window\n const { pushState, replaceState } = history\n\n history.pushState = (...args) => {\n pushState.apply(history, args)\n this.emit('pushState', location, args[0])\n }\n\n history.replaceState = (...args) => {\n replaceState.apply(history, args)\n this.emit('replaceState', location, args[0])\n }\n\n window.addEventListener('popstate', ({ state }) => {\n this.emit('popState', location, state)\n })\n }\n}\n\nexport const locationObserver = new LocationObserver()\n"],"names":["el","tag","attributes","children","text","str","nbsp","domReady","resolve","methods","Fetcher","baseURL","baseInit","method","path","init","url","initRequest","fetcher","combineURLs","headers","combineHeaders","args","response","data","FetcherError","sources","result","source","key","value","observeElement","callback","options","observe","mutations","observer","mutation","waitElement","selector","target","resolveElement","_","n","#t","t","e","s","i","LocationObserver","Emitter","history","location","pushState","replaceState","state","locationObserver"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zero-dependency/dom",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.umd.js",