@ecopages/radiant 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/context/context-provider.js +282 -3
  2. package/dist/context/context-provider.js.map +5 -3
  3. package/dist/context/create-context.js +6 -3
  4. package/dist/context/create-context.js.map +2 -2
  5. package/dist/context/decorators/consume-context.js +64 -3
  6. package/dist/context/decorators/consume-context.js.map +4 -3
  7. package/dist/context/decorators/context-selector.js +71 -3
  8. package/dist/context/decorators/context-selector.js.map +5 -4
  9. package/dist/context/decorators/provide-context.js +293 -3
  10. package/dist/context/decorators/provide-context.js.map +6 -3
  11. package/dist/context/events.js +53 -3
  12. package/dist/context/events.js.map +2 -2
  13. package/dist/context/index.js +340 -2
  14. package/dist/context/index.js.map +10 -3
  15. package/dist/core/index.js +82 -2
  16. package/dist/core/index.js.map +4 -3
  17. package/dist/core/radiant-element.d.ts +21 -1
  18. package/dist/core/radiant-element.js +82 -3
  19. package/dist/core/radiant-element.js.map +3 -3
  20. package/dist/decorators/custom-element.js +14 -3
  21. package/dist/decorators/custom-element.js.map +2 -2
  22. package/dist/decorators/debounce.js +20 -2
  23. package/dist/decorators/debounce.js.map +2 -2
  24. package/dist/decorators/event.js +46 -3
  25. package/dist/decorators/event.js.map +4 -3
  26. package/dist/decorators/on-event.js +47 -3
  27. package/dist/decorators/on-event.js.map +3 -3
  28. package/dist/decorators/on-updated.d.ts +1 -1
  29. package/dist/decorators/on-updated.js +29 -3
  30. package/dist/decorators/on-updated.js.map +3 -3
  31. package/dist/decorators/query.js +36 -3
  32. package/dist/decorators/query.js.map +3 -3
  33. package/dist/decorators/reactive-field.js +26 -3
  34. package/dist/decorators/reactive-field.js.map +2 -2
  35. package/dist/decorators/reactive-prop.d.ts +1 -1
  36. package/dist/decorators/reactive-prop.js +214 -3
  37. package/dist/decorators/reactive-prop.js.map +5 -4
  38. package/dist/decorators.js +400 -2
  39. package/dist/decorators.js.map +12 -3
  40. package/dist/index.js +719 -2
  41. package/dist/index.js.map +21 -3
  42. package/dist/mixins/index.js +23 -2
  43. package/dist/mixins/index.js.map +4 -3
  44. package/dist/mixins/with-kita.js +23 -3
  45. package/dist/mixins/with-kita.js.map +2 -2
  46. package/dist/tools/event-emitter.js +22 -3
  47. package/dist/tools/event-emitter.js.map +2 -2
  48. package/dist/tools/index.js +28 -2
  49. package/dist/tools/index.js.map +5 -3
  50. package/dist/tools/stringify-attribute.js +8 -3
  51. package/dist/tools/stringify-attribute.js.map +2 -2
  52. package/dist/utils/attribute-utils.d.ts +2 -0
  53. package/dist/utils/attribute-utils.js +137 -3
  54. package/dist/utils/attribute-utils.js.map +3 -3
  55. package/dist/utils/index.js +137 -2
  56. package/dist/utils/index.js.map +4 -3
  57. package/package.json +5 -4
@@ -1,3 +1,138 @@
1
- import{t as e,u as f,v as m,w as p,x as t,y as x}from"./attribute-utils.js";export{t as writeAttributeValue,p as readAttributeValue,f as parseAttributeTypeDefault,e as parseAttributeTypeConstant,x as isValueOfType,m as defaultValueForType};
1
+ // src/utils/attribute-utils.ts
2
+ function parseAttributeTypeConstant(constant) {
3
+ switch (constant) {
4
+ case Array:
5
+ return "array";
6
+ case Boolean:
7
+ return "boolean";
8
+ case Number:
9
+ return "number";
10
+ case Object:
11
+ return "object";
12
+ case String:
13
+ return "string";
14
+ }
15
+ }
16
+ function parseAttributeTypeDefault(defaultValue) {
17
+ switch (typeof defaultValue) {
18
+ case "boolean":
19
+ return "boolean";
20
+ case "number":
21
+ return "number";
22
+ case "string":
23
+ return "string";
24
+ }
25
+ if (Array.isArray(defaultValue))
26
+ return "array";
27
+ if (Object.prototype.toString.call(defaultValue) === "[object Object]")
28
+ return "object";
29
+ }
30
+ function defaultValueForType(type) {
31
+ switch (type) {
32
+ case Number:
33
+ return 0;
34
+ case String:
35
+ return "";
36
+ case Boolean:
37
+ return false;
38
+ default:
39
+ return null;
40
+ }
41
+ }
42
+ function parseJSON(value) {
43
+ try {
44
+ return JSON.parse(value);
45
+ } catch (error) {
46
+ throw new TypeError("Invalid JSON string");
47
+ }
48
+ }
49
+ function writeJSON(value) {
50
+ return JSON.stringify(value);
51
+ }
52
+ function writeString(value) {
53
+ return `${value}`;
54
+ }
55
+ function readAttributeValue(value, type) {
56
+ const readerType = parseAttributeTypeConstant(type);
57
+ if (!readerType)
58
+ throw new TypeError(`[radiant-element] Unknown type "${type}"`);
59
+ return readers[readerType](value);
60
+ }
61
+ function writeAttributeValue(value, type) {
62
+ const writerType = parseAttributeTypeConstant(type);
63
+ if (!writerType)
64
+ throw new TypeError(`[radiant-element] Unknown type "${type}"`);
65
+ return (writers[writerType] || writers.default)(value);
66
+ }
67
+ function isBoolean(value) {
68
+ return typeof value === "boolean";
69
+ }
70
+ function isNumber(value) {
71
+ return typeof value === "number";
72
+ }
73
+ function isString(value) {
74
+ return typeof value === "string";
75
+ }
76
+ function isArray(value) {
77
+ return Array.isArray(value);
78
+ }
79
+ function isObject(value) {
80
+ return typeof value === "object" && !Array.isArray(value) && value !== null;
81
+ }
82
+ function isValueOfType(type, defaultValue) {
83
+ switch (type) {
84
+ case Boolean:
85
+ return isBoolean(defaultValue);
86
+ case Number:
87
+ return isNumber(defaultValue);
88
+ case String:
89
+ return isString(defaultValue);
90
+ case Array:
91
+ return isArray(defaultValue);
92
+ case Object:
93
+ return isObject(defaultValue);
94
+ default:
95
+ return false;
96
+ }
97
+ }
98
+ var readers = {
99
+ array(value) {
100
+ const array = parseJSON(value);
101
+ if (!Array.isArray(array)) {
102
+ throw new TypeError(`Expected an array but got a value of type "${typeof array}"`);
103
+ }
104
+ return array;
105
+ },
106
+ boolean(value) {
107
+ return !(value === "0" || String(value).toLowerCase() === "false");
108
+ },
109
+ number(value) {
110
+ const number = Number(value.replace(/_/g, ""));
111
+ return number;
112
+ },
113
+ object(value) {
114
+ const object = JSON.parse(value);
115
+ if (object === null || typeof object !== "object" || Array.isArray(object)) {
116
+ throw new TypeError(`expected value of type "object" but instead got value "${value}" of type "${parseAttributeTypeDefault(object)}"`);
117
+ }
118
+ return object;
119
+ },
120
+ string(value) {
121
+ return value;
122
+ }
123
+ };
124
+ var writers = {
125
+ default: writeString,
126
+ array: writeJSON,
127
+ object: writeJSON
128
+ };
129
+ export {
130
+ writeAttributeValue,
131
+ readAttributeValue,
132
+ parseAttributeTypeDefault,
133
+ parseAttributeTypeConstant,
134
+ isValueOfType,
135
+ defaultValueForType
136
+ };
2
137
 
3
- //# debugId=C24958DB37426FE664756E2164756E21
138
+ //# debugId=71DEA6FFBE419B6B64756E2164756E21
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [],
3
+ "sources": ["../src/utils/attribute-utils.ts"],
4
4
  "sourcesContent": [
5
+ "export type AttributeTypeConstant = typeof Array | typeof Boolean | typeof Number | typeof Object | typeof String;\n\nexport type AttributeTypeDefault = Array<unknown> | boolean | number | Record<string, unknown> | string;\n\n/**\n * Parses the given attribute type constant and returns its corresponding string representation.\n *\n * @param constant - The attribute type constant to parse.\n * @returns The string representation of the attribute type constant.\n */\nexport function parseAttributeTypeConstant(constant?: AttributeTypeConstant) {\n switch (constant) {\n case Array:\n return 'array';\n case Boolean:\n return 'boolean';\n case Number:\n return 'number';\n case Object:\n return 'object';\n case String:\n return 'string';\n }\n}\n\n/**\n * Parses the attribute type default value and returns its type as a string.\n *\n * @param defaultValue - The default value of the attribute type.\n * @returns The type of the default value as a string.\n */\nexport function parseAttributeTypeDefault(defaultValue?: AttributeTypeDefault) {\n switch (typeof defaultValue) {\n case 'boolean':\n return 'boolean';\n case 'number':\n return 'number';\n case 'string':\n return 'string';\n }\n\n if (Array.isArray(defaultValue)) return 'array';\n if (Object.prototype.toString.call(defaultValue) === '[object Object]') return 'object';\n}\n\n/**\n * Returns the default value for a given attribute type.\n *\n * @param type - The attribute type constant.\n * @returns The default value for the specified attribute type.\n */\nexport function defaultValueForType(type: AttributeTypeConstant): unknown {\n switch (type) {\n case Number:\n return 0;\n case String:\n return '';\n case Boolean:\n return false;\n default:\n return null;\n }\n}\n\ntype Reader = (value: string) => number | string | boolean | object | unknown[];\n\n/**\n * Utility function to parse a JSON string safely\n */\nfunction parseJSON<T>(value: string): T {\n try {\n return JSON.parse(value);\n } catch (error) {\n throw new TypeError('Invalid JSON string');\n }\n}\n\n/**\n * Object that maps attribute types to reader functions.\n * @type {Object.<string, Reader>}\n */\nconst readers: { [type: string]: Reader } = {\n array(value: string): unknown[] {\n const array = parseJSON<unknown[]>(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`Expected an array but got a value of type \"${typeof array}\"`);\n }\n return array;\n },\n\n boolean(value: string): boolean {\n return !(value === '0' || String(value).toLowerCase() === 'false');\n },\n\n number(value: string): number {\n const number = Number(value.replace(/_/g, ''));\n return number;\n },\n\n object(value: string): object {\n const object = JSON.parse(value);\n if (object === null || typeof object !== 'object' || Array.isArray(object)) {\n throw new TypeError(\n `expected value of type \"object\" but instead got value \"${value}\" of type \"${parseAttributeTypeDefault(\n object,\n )}\"`,\n );\n }\n return object;\n },\n\n string(value: string): string {\n return value;\n },\n};\n\ntype Writer = (value: unknown) => string;\n\n/**\n * Object that maps attribute types to writer functions.\n * @type {Object.<string, Writer>}\n */\nconst writers: { [type: string]: Writer } = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\n\nfunction writeJSON(value: unknown) {\n return JSON.stringify(value);\n}\n\nfunction writeString(value: unknown) {\n return `${value}`;\n}\n\n/**\n * Reads the attribute value based on the provided type.\n * @param value - The attribute value to be read.\n * @param type - The type of the attribute.\n * @returns The parsed attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function readAttributeValue(value: string, type: AttributeTypeConstant) {\n const readerType = parseAttributeTypeConstant(type);\n if (!readerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n return readers[readerType](value);\n}\n\nexport type ReadAttributeValueReturnType = ReturnType<typeof readAttributeValue>;\n\n/**\n * Writes the attribute value based on the provided type.\n *\n * @param value - The value to be written.\n * @param type - The type of the attribute.\n * @returns The written attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function writeAttributeValue(value: unknown, type: AttributeTypeConstant) {\n const writerType = parseAttributeTypeConstant(type);\n if (!writerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n return (writers[writerType] || writers.default)(value);\n}\n\nexport type WriteAttributeValueReturnType = ReturnType<typeof writeAttributeValue>;\n\n/*\n * Type guard functions for each type in AttributeTypeConstant\n */\nfunction isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nfunction isArray(value: unknown): value is Array<unknown> {\n return Array.isArray(value);\n}\n\nfunction isObject(value: unknown): value is object {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n}\n\n/*\n * Check function to ensure defaultValue matches the type\n */\nexport function isValueOfType(type: AttributeTypeConstant, defaultValue: unknown): boolean {\n switch (type) {\n case Boolean:\n return isBoolean(defaultValue);\n case Number:\n return isNumber(defaultValue);\n case String:\n return isString(defaultValue);\n case Array:\n return isArray(defaultValue);\n case Object:\n return isObject(defaultValue);\n default:\n return false;\n }\n}\n"
5
6
  ],
6
- "mappings": "",
7
- "debugId": "C24958DB37426FE664756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "71DEA6FFBE419B6B64756E2164756E21",
8
9
  "names": []
9
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ecopages/radiant",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ecopages/radiant.git"
@@ -15,6 +15,7 @@
15
15
  "build:lib": "bun run clean && bun run build:files && bun run build:types",
16
16
  "build:files": "bun run ./build.ts",
17
17
  "build:types": "tsc -p tsconfig.build.json && tsc-alias",
18
+ "watch:lib": "bun run ./build.ts --watch",
18
19
  "clean": "rm -rf ./dist",
19
20
  "test:lib": "bun test --coverage"
20
21
  },
@@ -120,11 +121,11 @@
120
121
  }
121
122
  },
122
123
  "dependencies": {
123
- "@kitajs/html": "^4.1.0",
124
- "@kitajs/ts-html-plugin": "^4.0.1"
124
+ "@kitajs/html": "^4.1.0"
125
125
  },
126
126
  "devDependencies": {
127
- "@happy-dom/global-registrator": "^14.11.0",
127
+ "@happy-dom/global-registrator": "^15.7.4",
128
+ "@kitajs/ts-html-plugin": "^4.0.1",
128
129
  "bun-types": "latest",
129
130
  "tsc-alias": "1.8.10",
130
131
  "esbuild": "^0.23.0"