@manyducks.co/dolla 2.0.0-alpha.51 → 2.0.0-alpha.52
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/README.md +15 -11
- package/dist/core/context.d.ts +7 -3
- package/dist/core/env.d.ts +9 -0
- package/dist/core/index.d.ts +23 -0
- package/dist/core/logger.d.ts +34 -0
- package/dist/core/markup.d.ts +6 -11
- package/dist/core/mount.d.ts +10 -0
- package/dist/core/nodes/dynamic.d.ts +1 -1
- package/dist/core/nodes/fragment.d.ts +1 -1
- package/dist/core/nodes/outlet.d.ts +1 -1
- package/dist/core/nodes/repeat.d.ts +1 -1
- package/dist/core/nodes/view.d.ts +11 -6
- package/dist/core/signals.d.ts +43 -2
- package/dist/core/store.d.ts +10 -5
- package/dist/{fragment-Bvuvw3ue.js → fragment-DSGTP-XE.js} +2 -2
- package/dist/{fragment-Bvuvw3ue.js.map → fragment-DSGTP-XE.js.map} +1 -1
- package/dist/http.js +163 -0
- package/dist/http.js.map +1 -0
- package/dist/{translate → i18n}/index.d.ts +7 -6
- package/dist/i18n.js +318 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.js +63 -1190
- package/dist/index.js.map +1 -1
- package/dist/jsx-dev-runtime.js +2 -2
- package/dist/jsx-runtime.js +2 -2
- package/dist/logger-CSRDjb4e.js +623 -0
- package/dist/logger-CSRDjb4e.js.map +1 -0
- package/dist/router/index.d.ts +1 -144
- package/dist/router/router.d.ts +139 -0
- package/dist/router-BYOH-To5.js +482 -0
- package/dist/router-BYOH-To5.js.map +1 -0
- package/dist/router.js +8 -0
- package/dist/router.js.map +1 -0
- package/dist/typeChecking-EAVNeFyB.js +75 -0
- package/dist/typeChecking-EAVNeFyB.js.map +1 -0
- package/dist/types.d.ts +9 -1
- package/dist/view-CY19Cf0X.js +932 -0
- package/dist/view-CY19Cf0X.js.map +1 -0
- package/docs/markup.md +16 -0
- package/notes/stores.md +26 -0
- package/package.json +14 -2
- package/vite.config.js +4 -5
- package/dist/core/dolla.d.ts +0 -128
- package/dist/core/signals-api.d.ts +0 -42
- package/dist/index.d.ts +0 -26
- package/dist/markup-QqAGIoYP.js +0 -1501
- package/dist/markup-QqAGIoYP.js.map +0 -1
- /package/dist/core/{signals-api.test.d.ts → signals.test.d.ts} +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
function o(r) {
|
|
2
|
+
const t = typeof r;
|
|
3
|
+
switch (t) {
|
|
4
|
+
case "undefined":
|
|
5
|
+
return t;
|
|
6
|
+
case "number":
|
|
7
|
+
return isNaN(r) ? "NaN" : t;
|
|
8
|
+
case "function":
|
|
9
|
+
return /^\s*class\s+/.test(r.toString()) ? "class" : t;
|
|
10
|
+
case "object":
|
|
11
|
+
return r === null ? "null" : r instanceof Promise ? "promise" : r instanceof Map ? "map" : r instanceof Set ? "set" : Array.isArray(r) ? "array" : t;
|
|
12
|
+
default:
|
|
13
|
+
return t;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function c(r) {
|
|
17
|
+
return Array.isArray(r);
|
|
18
|
+
}
|
|
19
|
+
function u(r, t) {
|
|
20
|
+
return c(t) && t.every((n) => r(n));
|
|
21
|
+
}
|
|
22
|
+
function y(r, t, n) {
|
|
23
|
+
if (u(r, t))
|
|
24
|
+
return !0;
|
|
25
|
+
throw new TypeError(i(t, n));
|
|
26
|
+
}
|
|
27
|
+
function f(r) {
|
|
28
|
+
return typeof r == "string";
|
|
29
|
+
}
|
|
30
|
+
function p(r, t) {
|
|
31
|
+
if (f(r))
|
|
32
|
+
return !0;
|
|
33
|
+
throw new TypeError(i(r, t ?? "Expected a string. Got type: %t, value: %v"));
|
|
34
|
+
}
|
|
35
|
+
function m(r) {
|
|
36
|
+
return o(r) === "function";
|
|
37
|
+
}
|
|
38
|
+
function w(r) {
|
|
39
|
+
return typeof r == "number" && !isNaN(r);
|
|
40
|
+
}
|
|
41
|
+
function A(...r) {
|
|
42
|
+
const t = r[0], n = f(r[2]) ? r[2] : `Expected instance of ${t.name}. Got type: %t, value: %v`, s = (e) => {
|
|
43
|
+
if (e instanceof t)
|
|
44
|
+
return !0;
|
|
45
|
+
throw new TypeError(i(e, n));
|
|
46
|
+
};
|
|
47
|
+
return r.length < 2 ? s : s(r[1]);
|
|
48
|
+
}
|
|
49
|
+
function a(r) {
|
|
50
|
+
return r != null && typeof r == "object" && !c(r);
|
|
51
|
+
}
|
|
52
|
+
function b(r, t) {
|
|
53
|
+
if (a(r))
|
|
54
|
+
return !0;
|
|
55
|
+
throw new TypeError(i(r, t));
|
|
56
|
+
}
|
|
57
|
+
function i(r, t) {
|
|
58
|
+
var e;
|
|
59
|
+
const n = o(r), s = ((e = r == null ? void 0 : r.toString) == null ? void 0 : e.call(r)) || String(r);
|
|
60
|
+
return t.replaceAll("%t", n).replaceAll("%v", s);
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
A as a,
|
|
64
|
+
a as b,
|
|
65
|
+
m as c,
|
|
66
|
+
y as d,
|
|
67
|
+
p as e,
|
|
68
|
+
b as f,
|
|
69
|
+
c as g,
|
|
70
|
+
w as h,
|
|
71
|
+
f as i,
|
|
72
|
+
u as j,
|
|
73
|
+
o as t
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=typeChecking-EAVNeFyB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeChecking-EAVNeFyB.js","sources":["../src/typeChecking.ts"],"sourcesContent":["type TypeNames =\n // These values can be returned by `typeof`.\n | \"string\"\n | \"number\"\n | \"bigint\"\n | \"boolean\"\n | \"symbol\"\n | \"undefined\"\n | \"object\"\n | \"function\"\n // These values are more specific ones that the `typeOf` function can return.\n | \"null\"\n | \"array\"\n | \"class\"\n | \"promise\"\n | \"map\"\n | \"set\"\n | \"NaN\";\n\n/**\n * Extends `typeof` operator with more specific and useful type distinctions.\n */\nexport function typeOf(value: any): TypeNames {\n const type = typeof value;\n switch (type) {\n case \"undefined\":\n return type;\n case \"number\":\n if (isNaN(value as any)) return \"NaN\";\n return type;\n case \"function\":\n if (/^\\s*class\\s+/.test(value.toString())) return \"class\";\n return type;\n case \"object\":\n if (value === null) return \"null\";\n if (value instanceof Promise) return \"promise\";\n if (value instanceof Map) return \"map\";\n if (value instanceof Set) return \"set\";\n if (Array.isArray(value)) return \"array\";\n return type;\n default:\n return type;\n }\n}\n\n/**\n * Throws a TypeError unless `condition` is truthy.\n *\n * @param condition - Value whose truthiness is in question.\n * @param errorMessage - Optional message for the thrown TypeError.\n */\nexport function assert(condition: any, errorMessage?: string): void {\n if (!condition) {\n throw new TypeError(\n formatError(condition, errorMessage || \"Failed assertion. Value is not truthy. Got type: %t, value: %v\"),\n );\n }\n}\n\n/**\n * Returns true if `value` is an array.\n */\nexport function isArray(value: unknown): value is Array<unknown> {\n return Array.isArray(value);\n}\n\n/**\n * Throws an error if `value` is not an array.\n */\nexport function assertArray(value: unknown, errorMessage?: string): value is Array<unknown> {\n if (isArray(value)) {\n return true;\n }\n\n throw new TypeError(formatError(value, errorMessage || \"Expected array. Got type: %t, value: %v\"));\n}\n\n/**\n * Returns true when `value` is an array and `check` returns true for every item.\n *\n * @param check - Function to check items against.\n * @param value - A possible array.\n */\n\nexport function isArrayOf<T>(check: (item: unknown) => boolean, value: unknown): value is T[] {\n return isArray(value) && value.every((item) => check(item));\n}\n\n/**\n * Throws a TypeError unless `value` is an array and `check` returns true for every item.\n *\n * @param check - Function to check items against.\n * @param value - A possible array.\n * @param errorMessage - A custom error message.\n */\nexport function assertArrayOf<T>(\n check: (item: unknown) => boolean,\n value: unknown,\n errorMessage?: string,\n): value is T[] {\n if (isArrayOf(check, value)) {\n return true;\n }\n\n throw new TypeError(formatError(value, errorMessage ?? \"Expected an array of valid items. Got type: %t, value: %v\"));\n}\n\n/**\n * Returns true if `value` is a string.\n */\nexport function isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\n/**\n * Throws a TypeError unless `value` is a string.\n */\nexport function assertString(value: unknown, errorMessage?: string): value is string {\n if (isString(value)) {\n return true;\n }\n\n throw new TypeError(formatError(value, errorMessage ?? \"Expected a string. Got type: %t, value: %v\"));\n}\n\n// TODO: More specific validation for common types of strings? Email address, URL, UUID, etc?\n\n/**\n * Returns true if `value` is a function (but not a class).\n */\nexport function isFunction<T = (...args: unknown[]) => unknown>(value: unknown): value is T {\n return typeOf(value) === \"function\";\n}\n\n/**\n * Throws a TypeError unless `value` is a function.\n */\nexport function assertFunction<T = (...args: unknown[]) => unknown>(value: unknown, errorMessage?: string): value is T {\n if (isFunction(value)) {\n return true;\n }\n\n throw new TypeError(formatError(value, errorMessage ?? \"Expected a function. Got type: %t, value: %v\"));\n}\n\n/**\n * Returns true if `value` is a number.\n */\nexport function isNumber(value: unknown): value is number {\n return typeof value === \"number\" && !isNaN(value);\n}\n\n/**\n * Throws a TypeError unless `value` is a number.\n */\nexport function assertNumber(value: unknown, errorMessage?: string): value is number {\n if (isNumber(value)) {\n return true;\n }\n\n throw new TypeError(formatError(value, errorMessage ?? \"Expected a number. Got type: %t, value: %v\"));\n}\n\n/**\n * Returns a function that takes a `value` and returns true if `value` is an instance of `constructor`.\n *\n * @param constructor - The constructor a value must be an instance of to match.\n */\nexport function isInstanceOf<T extends Function>(constructor: T): (value: unknown) => value is T;\n\n/**\n * Returns `true` if `value` is an instance of `constructor`.\n *\n * @param constructor - The constructor `value` must be an instance of.\n * @param value - A value that may be an instance of `constructor`.\n */\nexport function isInstanceOf<T extends Function>(constructor: T, value: unknown): value is T;\n\nexport function isInstanceOf<T extends Function>(...args: unknown[]) {\n const constructor = args[0] as T;\n\n const test = (value: unknown): value is T => {\n return value instanceof constructor;\n };\n\n if (args.length < 2) {\n return test;\n } else {\n return test(args[1]);\n }\n}\n\n/**\n * Returns a function that takes a `value` and throws a TypeError unless `value` is an instance of `constructor`.\n *\n * @param constructor - The constructor a value must be an instance of to match.\n */\nexport function assertInstanceOf<T extends Function>(constructor: T): (value: unknown) => value is T;\n\n/**\n * Throws a TypeError unless `value` is an instance of `constructor`.\n *\n * @param constructor - The constructor `value` must be an instance of.\n * @param value - A value that may be an instance of `constructor`.\n * @param errorMessage - A custom error message for when the assertion fails.\n */\nexport function assertInstanceOf<T extends Function>(constructor: T, value: unknown, errorMessage?: string): value is T;\n\nexport function assertInstanceOf<T extends Function>(...args: unknown[]) {\n const constructor = args[0] as T;\n const errorMessage = isString(args[2])\n ? args[2]\n : `Expected instance of ${constructor.name}. Got type: %t, value: %v`;\n\n const test = (value: unknown): value is T => {\n if (value instanceof constructor) {\n return true;\n }\n\n throw new TypeError(formatError(value, errorMessage));\n };\n\n if (args.length < 2) {\n return test;\n } else {\n return test(args[1]);\n }\n}\n\n/**\n * Returns true if `value` is a plain JavaScript object.\n */\nexport function isObject(value: unknown): value is Record<string | number | symbol, unknown> {\n return value != null && typeof value === \"object\" && !isArray(value);\n}\n\n/**\n * Throws a TypeError unless `value` is a plain JavaScript object.\n */\nexport function assertObject(value: unknown, errorMessage?: string): value is object {\n if (isObject(value)) {\n return true;\n }\n\n throw new TypeError(formatError(value, errorMessage ?? \"Expected an object. Got type: %t, value: %v\"));\n}\n\n/**\n * Replaces `%t` and `%v` placeholders in a message with real values.\n */\nfunction formatError(value: unknown, message: string) {\n const typeName = typeOf(value);\n\n // TODO: Pretty format value as string based on type.\n const valueString = value?.toString?.() || String(value);\n\n return message.replaceAll(\"%t\", typeName).replaceAll(\"%v\", valueString);\n}\n"],"names":["typeOf","value","type","isArray","isArrayOf","check","item","assertArrayOf","errorMessage","formatError","isString","assertString","isFunction","isNumber","assertInstanceOf","args","constructor","test","isObject","assertObject","message","_a","typeName","valueString"],"mappings":"AAsBO,SAASA,EAAOC,GAAuB;AAC5C,QAAMC,IAAO,OAAOD;AACpB,UAAQC,GAAM;AAAA,IACZ,KAAK;AACI,aAAAA;AAAA,IACT,KAAK;AACC,aAAA,MAAMD,CAAY,IAAU,QACzBC;AAAA,IACT,KAAK;AACH,aAAI,eAAe,KAAKD,EAAM,SAAU,CAAA,IAAU,UAC3CC;AAAA,IACT,KAAK;AACC,aAAAD,MAAU,OAAa,SACvBA,aAAiB,UAAgB,YACjCA,aAAiB,MAAY,QAC7BA,aAAiB,MAAY,QAC7B,MAAM,QAAQA,CAAK,IAAU,UAC1BC;AAAA,IACT;AACS,aAAAA;AAAA,EAAA;AAEb;AAmBO,SAASC,EAAQF,GAAyC;AACxD,SAAA,MAAM,QAAQA,CAAK;AAC5B;AAoBgB,SAAAG,EAAaC,GAAmCJ,GAA8B;AACrF,SAAAE,EAAQF,CAAK,KAAKA,EAAM,MAAM,CAACK,MAASD,EAAMC,CAAI,CAAC;AAC5D;AASgB,SAAAC,EACdF,GACAJ,GACAO,GACc;AACV,MAAAJ,EAAUC,GAAOJ,CAAK;AACjB,WAAA;AAGT,QAAM,IAAI,UAAUQ,EAAYR,GAAOO,CAA2E,CAAC;AACrH;AAKO,SAASE,EAAST,GAAiC;AACxD,SAAO,OAAOA,KAAU;AAC1B;AAKgB,SAAAU,EAAaV,GAAgBO,GAAwC;AAC/E,MAAAE,EAAST,CAAK;AACT,WAAA;AAGT,QAAM,IAAI,UAAUQ,EAAYR,GAAOO,KAAgB,4CAA4C,CAAC;AACtG;AAOO,SAASI,EAAgDX,GAA4B;AACnF,SAAAD,EAAOC,CAAK,MAAM;AAC3B;AAgBO,SAASY,EAASZ,GAAiC;AACxD,SAAO,OAAOA,KAAU,YAAY,CAAC,MAAMA,CAAK;AAClD;AA0DO,SAASa,KAAwCC,GAAiB;AACjE,QAAAC,IAAcD,EAAK,CAAC,GACpBP,IAAeE,EAASK,EAAK,CAAC,CAAC,IACjCA,EAAK,CAAC,IACN,wBAAwBC,EAAY,IAAI,6BAEtCC,IAAO,CAAChB,MAA+B;AAC3C,QAAIA,aAAiBe;AACZ,aAAA;AAGT,UAAM,IAAI,UAAUP,EAAYR,GAAOO,CAAY,CAAC;AAAA,EACtD;AAEI,SAAAO,EAAK,SAAS,IACTE,IAEAA,EAAKF,EAAK,CAAC,CAAC;AAEvB;AAKO,SAASG,EAASjB,GAAoE;AAC3F,SAAOA,KAAS,QAAQ,OAAOA,KAAU,YAAY,CAACE,EAAQF,CAAK;AACrE;AAKgB,SAAAkB,EAAalB,GAAgBO,GAAwC;AAC/E,MAAAU,EAASjB,CAAK;AACT,WAAA;AAGT,QAAM,IAAI,UAAUQ,EAAYR,GAAOO,CAA6D,CAAC;AACvG;AAKA,SAASC,EAAYR,GAAgBmB,GAAiB;AApO/C,MAAAC;AAqOC,QAAAC,IAAWtB,EAAOC,CAAK,GAGvBsB,MAAcF,IAAApB,KAAA,gBAAAA,EAAO,aAAP,gBAAAoB,EAAA,KAAApB,OAAuB,OAAOA,CAAK;AAEvD,SAAOmB,EAAQ,WAAW,MAAME,CAAQ,EAAE,WAAW,MAAMC,CAAW;AACxE;"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import type * as CSS from "csstype";
|
|
2
2
|
import type { Markup } from "./core/markup.js";
|
|
3
|
-
import { Signal } from "./core/signals
|
|
3
|
+
import { Signal } from "./core/signals.js";
|
|
4
4
|
/**
|
|
5
5
|
* Represents everything that can be handled as a DOM node.
|
|
6
6
|
* These are all the items considered valid to pass as children to any element.
|
|
7
7
|
*/
|
|
8
8
|
export type Renderable = string | number | Markup | false | null | undefined | Signal<any> | (string | number | Markup | false | null | undefined | Signal<any>)[];
|
|
9
|
+
export interface Mountable {
|
|
10
|
+
mount(parent: Node, after?: Node): void;
|
|
11
|
+
unmount(parentIsUnmounting?: boolean): void;
|
|
12
|
+
}
|
|
13
|
+
export interface AsyncMountable {
|
|
14
|
+
mount(parent: Node, after?: Node): Promise<void>;
|
|
15
|
+
unmount(parentIsUnmounting?: boolean): Promise<void>;
|
|
16
|
+
}
|
|
9
17
|
export type Stringable = {
|
|
10
18
|
toString(): string;
|
|
11
19
|
};
|