@holoscript/core 6.0.3 → 6.0.4

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 (229) hide show
  1. package/README.md +38 -38
  2. package/dist/GLTFPipeline-DEN36VNK.js +12 -0
  3. package/dist/GLTFPipeline-YPCAK236.cjs +33 -0
  4. package/dist/{HoloScriptPlusParser-BZR5DELQ.js → HoloScriptPlusParser-BN6KVRCM.js} +5 -5
  5. package/dist/{HoloScriptPlusParser-SBMYDNXO.cjs → HoloScriptPlusParser-NC5FE6AL.cjs} +16 -16
  6. package/dist/{USDZExporter-YA55ZS35.js → USDZExporter-NTMBNTDB.js} +3 -3
  7. package/dist/{USDZExporter-MHEHXZB4.cjs → USDZExporter-UWGWNMMD.cjs} +3 -3
  8. package/dist/{chunk-32TWR3HE.js → chunk-2CWOLHTE.js} +3 -4
  9. package/dist/{chunk-2UX5LRAP.cjs → chunk-33LSUQDD.cjs} +33 -31
  10. package/dist/{chunk-LBPEZQAF.js → chunk-3FJCK5XA.js} +7 -7
  11. package/dist/{chunk-EGIZHYJP.cjs → chunk-3SAK5KFL.cjs} +2 -4
  12. package/dist/{chunk-PJMOXFPR.cjs → chunk-4XSNJCLC.cjs} +25 -27
  13. package/dist/{chunk-HKCVM6OK.cjs → chunk-5BGSECRJ.cjs} +21 -21
  14. package/dist/{chunk-EMO7HAKJ.cjs → chunk-5O6TQC6M.cjs} +26 -30
  15. package/dist/{chunk-XSUZMPVQ.cjs → chunk-5OEOHAAW.cjs} +26 -26
  16. package/dist/{chunk-EJA7G2C4.cjs → chunk-5WUNN6ZN.cjs} +2 -2
  17. package/dist/{chunk-CQDOF3G7.cjs → chunk-6TZPZCOJ.cjs} +18 -18
  18. package/dist/{chunk-NRUB55IT.cjs → chunk-6UEHYZ7V.cjs} +18 -16
  19. package/dist/{chunk-V42NTCFH.js → chunk-6XSERL6L.js} +4230 -2197
  20. package/dist/{chunk-X4YVN7H3.cjs → chunk-72EQECGT.cjs} +37 -17
  21. package/dist/{chunk-4KJ2R7VP.cjs → chunk-7AGYRWKW.cjs} +19 -19
  22. package/dist/{chunk-UQW6SLM5.js → chunk-A7PIMZGU.js} +110 -19
  23. package/dist/{chunk-RT7LJRSF.cjs → chunk-ATSKSYVE.cjs} +1013 -6708
  24. package/dist/{chunk-WN3YF33G.cjs → chunk-B5TCIAPQ.cjs} +9 -10
  25. package/dist/{chunk-AIUXRS74.cjs → chunk-BF2235SI.cjs} +4275 -2242
  26. package/dist/{chunk-DIEDKX5B.cjs → chunk-BND3ST2K.cjs} +18 -16
  27. package/dist/{chunk-EPWRXL6S.js → chunk-BU7VWW2K.js} +29 -29
  28. package/dist/{chunk-6OQBLABR.js → chunk-BWFJEM5A.js} +368 -189
  29. package/dist/{chunk-ARNKA274.cjs → chunk-CAUCGUEA.cjs} +6 -6
  30. package/dist/{chunk-YCMQQQ5U.cjs → chunk-CBJSLA2E.cjs} +398 -219
  31. package/dist/{chunk-BU5ZAFMC.js → chunk-CDPGV4DN.js} +6 -7
  32. package/dist/{chunk-CO2VM2DK.js → chunk-CS2EMTGF.js} +10 -9
  33. package/dist/{chunk-AW7WAELW.js → chunk-DMG7C4H2.js} +4 -4
  34. package/dist/{chunk-XSF76QRU.js → chunk-DXJQDCFL.js} +3 -3
  35. package/dist/{chunk-4FCZDTD5.js → chunk-E3FWRT3Z.js} +7 -9
  36. package/dist/{chunk-KYM4XRFG.js → chunk-E3UALNFA.js} +4 -4
  37. package/dist/{chunk-GC3YU46J.js → chunk-EONILVMF.js} +2 -2
  38. package/dist/{chunk-VJVCD5T5.cjs → chunk-EQV4R3EV.cjs} +22 -22
  39. package/dist/{chunk-FEFHPUEM.cjs → chunk-F3HH56EB.cjs} +74 -658
  40. package/dist/{chunk-WYH4GVZ5.js → chunk-F4IULT7N.js} +2 -2
  41. package/dist/{chunk-XDXZM3ZP.cjs → chunk-FFKU7BTK.cjs} +19 -19
  42. package/dist/{chunk-NKRKT6V2.js → chunk-FHQVYCH2.js} +11 -10
  43. package/dist/{chunk-7H5UNJZD.cjs → chunk-FSF7EQVA.cjs} +11 -10
  44. package/dist/{chunk-KUJRR4FJ.js → chunk-G4VZTCIB.js} +9 -7
  45. package/dist/{chunk-A6GO3DPZ.cjs → chunk-G7CT3EMP.cjs} +4 -4
  46. package/dist/{chunk-EUFLX2PI.js → chunk-GGHSW2NN.js} +989 -6611
  47. package/dist/chunk-GVUR45UF.cjs +777 -0
  48. package/dist/{chunk-ODGMVILH.js → chunk-H5Z7NASB.js} +3 -3
  49. package/dist/{chunk-7KPI4EKH.cjs → chunk-HE7ULERA.cjs} +45 -49
  50. package/dist/{chunk-26TLYBFD.js → chunk-HPS76H7Q.js} +3 -3
  51. package/dist/{chunk-RE3OKSYF.cjs → chunk-HQUEA5R6.cjs} +6 -6
  52. package/dist/{chunk-ZGTGVSTZ.js → chunk-HYNTS5CP.js} +2 -2
  53. package/dist/{chunk-PBA6NXCT.cjs → chunk-IBDG74G2.cjs} +6 -3
  54. package/dist/chunk-IFNQFCTM.js +3098 -0
  55. package/dist/{chunk-ZL6VJ6SN.js → chunk-IWI6J7FX.js} +5 -5
  56. package/dist/{chunk-3KEU5QYY.cjs → chunk-K3JDKWGI.cjs} +118 -23
  57. package/dist/{chunk-NLPSZT4C.js → chunk-K6EKD26I.js} +6 -6
  58. package/dist/chunk-KCQ5NDYC.cjs +3172 -0
  59. package/dist/{chunk-ELLQPFAF.js → chunk-KED34ILP.js} +11 -9
  60. package/dist/{chunk-BY3B7ZYV.cjs → chunk-KSGXLT74.cjs} +3 -3
  61. package/dist/{chunk-65RFOWZI.js → chunk-L4G4RLXX.js} +9 -7
  62. package/dist/{chunk-4SMUJFHL.js → chunk-LDP5OK6G.js} +6 -3
  63. package/dist/{chunk-VZNKJZTT.cjs → chunk-LGGRPKTV.cjs} +82 -96
  64. package/dist/{chunk-C2QHVHZF.js → chunk-LSW7P7ML.js} +23 -414
  65. package/dist/{chunk-HHS6FMOU.cjs → chunk-LXJ4667L.cjs} +83 -22
  66. package/dist/{chunk-H6WMMLQK.cjs → chunk-LZ266PCM.cjs} +20 -13
  67. package/dist/{chunk-V2ILLPHK.cjs → chunk-MD6KDHVE.cjs} +10 -10
  68. package/dist/{chunk-6WNCRE6F.js → chunk-MEASWI2Y.js} +5 -5
  69. package/dist/chunk-MPXBVFHQ.js +768 -0
  70. package/dist/{chunk-WUXIRGZP.cjs → chunk-NCUKG4SK.cjs} +304 -144
  71. package/dist/chunk-NDQNIJEH.js +1715 -0
  72. package/dist/{chunk-Y5MUAYTO.js → chunk-NOZZ46QU.js} +9 -8
  73. package/dist/{chunk-F5LVGHNT.js → chunk-OFKWH2IP.js} +3 -3
  74. package/dist/{chunk-SPDELRRV.cjs → chunk-PMGODDJA.cjs} +12 -12
  75. package/dist/{chunk-I3XGTIHM.cjs → chunk-Q4QX3AET.cjs} +2 -2
  76. package/dist/{chunk-Y7VK5TH3.cjs → chunk-Q5JT3YML.cjs} +10 -10
  77. package/dist/{chunk-TSWTWZ42.cjs → chunk-Q5SJOGHQ.cjs} +247 -205
  78. package/dist/{chunk-M6FU6S22.js → chunk-QGKNANZ3.js} +251 -91
  79. package/dist/{chunk-WFJIDI2N.cjs → chunk-QLEAOI3Q.cjs} +10 -10
  80. package/dist/{chunk-VK5AXKO3.js → chunk-R7MA7QWV.js} +70 -84
  81. package/dist/{chunk-W76ETJTI.js → chunk-RVYPEYPX.js} +6 -6
  82. package/dist/{chunk-MWEFR6YQ.js → chunk-S2N5TNMA.js} +7 -9
  83. package/dist/{chunk-NCUHGRTZ.js → chunk-S565K7NK.js} +7 -7
  84. package/dist/{chunk-AC4BSHFV.js → chunk-SDAMZIRE.js} +5 -5
  85. package/dist/{chunk-HBZYCASG.js → chunk-T36DDXSF.js} +75 -33
  86. package/dist/{chunk-BO2OKHIY.js → chunk-T4NKMBDL.js} +30 -611
  87. package/dist/{chunk-7X2IEJIE.cjs → chunk-T7LEXZUZ.cjs} +29 -29
  88. package/dist/{chunk-HUFNKFA6.js → chunk-TEWCN33Y.js} +8 -12
  89. package/dist/{chunk-L3Z2HIWJ.cjs → chunk-TQSZUOW5.cjs} +2 -2
  90. package/dist/chunk-TSH3MSQU.cjs +129 -0
  91. package/dist/{chunk-PLMYCCA4.js → chunk-UERJ3YJV.js} +6 -6
  92. package/dist/{chunk-7N3JIJMT.js → chunk-UPJBDCVF.js} +6 -6
  93. package/dist/{chunk-CMYAWUX3.js → chunk-V3NN3HPP.js} +12 -5
  94. package/dist/{chunk-SUCBB66F.js → chunk-WB4Z63GG.js} +3 -3
  95. package/dist/{chunk-PPULB4GG.cjs → chunk-WDW67DZB.cjs} +68 -68
  96. package/dist/chunk-WGMEAYBG.js +126 -0
  97. package/dist/{chunk-VSXOIUCF.cjs → chunk-X4ZF6CNE.cjs} +7 -7
  98. package/dist/{chunk-HF4OFY25.cjs → chunk-X6SEAXAX.cjs} +29 -445
  99. package/dist/{chunk-C7BNX4XJ.js → chunk-XCWFGZAA.js} +6 -6
  100. package/dist/{chunk-CNVM7J3M.js → chunk-XD6IYDUX.js} +34 -14
  101. package/dist/chunk-XG23EUQX.cjs +1717 -0
  102. package/dist/{chunk-DN7UFU63.cjs → chunk-XRKWN5PL.cjs} +12 -11
  103. package/dist/{chunk-XNMEH2BI.js → chunk-XUTX5CBW.js} +3 -3
  104. package/dist/{chunk-PQLGZKMC.cjs → chunk-XWPNTWDN.cjs} +26 -26
  105. package/dist/{chunk-NTMZSDXM.cjs → chunk-XXINBTZK.cjs} +43 -43
  106. package/dist/{chunk-74YCHHTE.js → chunk-YCXFCXDS.js} +8 -12
  107. package/dist/{chunk-KDB6BUMB.js → chunk-YQK5JNFK.js} +77 -18
  108. package/dist/{chunk-DH5G2JUA.cjs → chunk-Z34RLXRA.cjs} +44 -46
  109. package/dist/{chunk-XH7SE4HH.cjs → chunk-ZP4D3CSX.cjs} +19 -19
  110. package/dist/cli/holoscript-runner.cjs +33 -32
  111. package/dist/cli/holoscript-runner.js +13 -12
  112. package/dist/codebase/index.cjs +1 -1
  113. package/dist/codebase/index.d.ts +25 -0
  114. package/dist/codebase/index.js +1 -1
  115. package/dist/compiler/agent-inference.cjs +7 -8
  116. package/dist/compiler/agent-inference.js +3 -4
  117. package/dist/compiler/android-xr.cjs +7 -8
  118. package/dist/compiler/android-xr.js +5 -6
  119. package/dist/compiler/android.cjs +8 -9
  120. package/dist/compiler/android.js +6 -7
  121. package/dist/compiler/ar.cjs +6 -7
  122. package/dist/compiler/ar.js +4 -5
  123. package/dist/compiler/babylon.cjs +8 -9
  124. package/dist/compiler/babylon.js +7 -8
  125. package/dist/compiler/coco.cjs +1 -1
  126. package/dist/compiler/coco.js +1 -1
  127. package/dist/compiler/domain-block-utils.cjs +158 -151
  128. package/dist/compiler/domain-block-utils.js +4 -5
  129. package/dist/compiler/dtdl.cjs +7 -8
  130. package/dist/compiler/dtdl.js +4 -5
  131. package/dist/compiler/gltf-pipeline.cjs +9 -9
  132. package/dist/compiler/gltf-pipeline.js +2 -2
  133. package/dist/compiler/godot.cjs +6 -7
  134. package/dist/compiler/godot.js +5 -6
  135. package/dist/compiler/incremental.cjs +7 -8
  136. package/dist/compiler/incremental.js +2 -3
  137. package/dist/compiler/index.cjs +1934 -878
  138. package/dist/compiler/index.js +1904 -842
  139. package/dist/compiler/ios.cjs +8 -9
  140. package/dist/compiler/ios.js +6 -7
  141. package/dist/compiler/multi-layer.cjs +10 -17
  142. package/dist/compiler/multi-layer.js +9 -10
  143. package/dist/compiler/nodetoy.cjs +1 -1
  144. package/dist/compiler/nodetoy.js +1 -1
  145. package/dist/compiler/openxr.cjs +6 -7
  146. package/dist/compiler/openxr.js +5 -6
  147. package/dist/compiler/playcanvas.cjs +7 -8
  148. package/dist/compiler/playcanvas.js +6 -7
  149. package/dist/compiler/r3f.cjs +13 -14
  150. package/dist/compiler/r3f.js +8 -9
  151. package/dist/compiler/remotion.cjs +1 -1
  152. package/dist/compiler/remotion.js +1 -1
  153. package/dist/compiler/reproducibility.cjs +1 -1
  154. package/dist/compiler/reproducibility.js +1 -1
  155. package/dist/compiler/sdf.cjs +7 -8
  156. package/dist/compiler/sdf.js +5 -6
  157. package/dist/compiler/semantic-scene.cjs +7 -7
  158. package/dist/compiler/semantic-scene.js +2 -2
  159. package/dist/compiler/state.cjs +5 -6
  160. package/dist/compiler/state.js +3 -4
  161. package/dist/compiler/trait-composition.cjs +7 -8
  162. package/dist/compiler/trait-composition.js +3 -4
  163. package/dist/compiler/unity.cjs +6 -7
  164. package/dist/compiler/unity.js +5 -6
  165. package/dist/compiler/unreal.cjs +7 -8
  166. package/dist/compiler/unreal.js +5 -6
  167. package/dist/compiler/urdf.cjs +13 -14
  168. package/dist/compiler/urdf.js +5 -6
  169. package/dist/compiler/usd-physics.cjs +7 -8
  170. package/dist/compiler/usd-physics.js +4 -5
  171. package/dist/compiler/visionos.cjs +6 -7
  172. package/dist/compiler/visionos.js +5 -6
  173. package/dist/compiler/vrchat.cjs +7 -8
  174. package/dist/compiler/vrchat.js +5 -6
  175. package/dist/compiler/vrr.cjs +7 -8
  176. package/dist/compiler/vrr.js +5 -6
  177. package/dist/compiler/wasm.cjs +10 -11
  178. package/dist/compiler/wasm.js +5 -6
  179. package/dist/compiler/webgpu.cjs +6 -7
  180. package/dist/compiler/webgpu.js +5 -6
  181. package/dist/constants.d.ts +3 -0
  182. package/dist/debugger.cjs +7 -7
  183. package/dist/debugger.js +5 -5
  184. package/dist/entries/interop.cjs +1 -1
  185. package/dist/entries/interop.d.ts +9 -0
  186. package/dist/entries/interop.js +1 -1
  187. package/dist/entries/scripting.cjs +18 -17
  188. package/dist/entries/scripting.d.ts +7 -0
  189. package/dist/entries/scripting.js +8 -7
  190. package/dist/index.cjs +6773 -27555
  191. package/dist/index.d.ts +19 -0
  192. package/dist/index.js +5212 -26101
  193. package/dist/math/vec3.cjs +1 -1
  194. package/dist/math/vec3.js +1 -1
  195. package/dist/ml-dsa-PHCWUBPX.cjs +1178 -0
  196. package/dist/ml-dsa-WYLJHJO6.js +1178 -0
  197. package/dist/parser.cjs +11 -10
  198. package/dist/parser.js +8 -7
  199. package/dist/{playwright-BIZXMLD2.js → playwright-5OSAPTNH.js} +3 -3
  200. package/dist/{playwright-7DTEQCBD.cjs → playwright-RL6GY4F7.cjs} +1985 -1985
  201. package/dist/runtime.cjs +5 -5
  202. package/dist/runtime.js +4 -4
  203. package/dist/self-improvement/index.d.ts +0 -48
  204. package/dist/storage/index.cjs +1 -1
  205. package/dist/storage/index.d.ts +24 -0
  206. package/dist/storage/index.js +1 -1
  207. package/dist/tools/index.d.ts +12 -0
  208. package/dist/traits/index.cjs +925 -607
  209. package/dist/traits/index.js +137 -20
  210. package/dist/type-checker.cjs +4 -4
  211. package/dist/type-checker.js +2 -2
  212. package/package.json +56 -21
  213. package/LICENSE +0 -21
  214. package/dist/GLTFPipeline-3KLWWUQO.cjs +0 -34
  215. package/dist/GLTFPipeline-LYII2ZVQ.js +0 -13
  216. package/dist/chunk-CN4NOESF.cjs +0 -416
  217. package/dist/chunk-DXVCEFZB.js +0 -2027
  218. package/dist/chunk-ENV7K6XA.js +0 -282
  219. package/dist/chunk-H7XMORZI.js +0 -2731
  220. package/dist/chunk-HAN4V3PF.cjs +0 -2037
  221. package/dist/chunk-LER4WXW5.cjs +0 -286
  222. package/dist/chunk-QHVVVN47.cjs +0 -2033
  223. package/dist/chunk-QWKUKVRE.js +0 -2026
  224. package/dist/chunk-UITWA6DV.cjs +0 -2829
  225. package/dist/chunk-X67XRI2T.js +0 -410
  226. package/dist/post-quantum-JTTAAGO3.cjs +0 -6
  227. package/dist/post-quantum-RVPVDEPI.js +0 -4
  228. package/dist/wot/index.cjs +0 -29
  229. package/dist/wot/index.js +0 -4
@@ -1,410 +0,0 @@
1
- // src/wot/ThingDescriptionGenerator.ts
2
- var ThingDescriptionGenerator = class {
3
- constructor(options = {}) {
4
- this.options = {
5
- baseUrl: options.baseUrl || "",
6
- contentType: options.contentType || "application/json",
7
- defaultObservable: options.defaultObservable ?? true,
8
- securityDefinitions: options.securityDefinitions
9
- };
10
- }
11
- /**
12
- * Generate a Thing Description from a HoloScript node with @wot_thing trait
13
- */
14
- generate(node) {
15
- const wotTrait = this.findWoTTrait(node);
16
- if (!wotTrait) {
17
- return null;
18
- }
19
- const config = this.parseWoTConfig(wotTrait);
20
- const stateProperties = this.extractStateProperties(node);
21
- const actions = this.extractActions(node);
22
- const events = this.extractEvents(node);
23
- const td = {
24
- "@context": "https://www.w3.org/2022/wot/td/v1.1",
25
- id: config.id || `urn:holoscript:${node.name || "thing"}`,
26
- title: config.title || node.name || "Unnamed Thing",
27
- security: "default",
28
- securityDefinitions: this.buildSecurityDefinitions(config.security)
29
- };
30
- if (config.description) {
31
- td.description = config.description;
32
- }
33
- if (config.base || this.options.baseUrl) {
34
- td.base = config.base || this.options.baseUrl;
35
- }
36
- if (config.version) {
37
- td.version = { instance: config.version };
38
- }
39
- if (Object.keys(stateProperties).length > 0) {
40
- td.properties = stateProperties;
41
- }
42
- if (Object.keys(actions).length > 0) {
43
- td.actions = actions;
44
- }
45
- if (Object.keys(events).length > 0) {
46
- td.events = events;
47
- }
48
- return td;
49
- }
50
- /**
51
- * Generate Thing Descriptions for all nodes with @wot_thing trait
52
- */
53
- generateAll(nodes) {
54
- const results = [];
55
- const processNode = (node) => {
56
- const td = this.generate(node);
57
- if (td) {
58
- results.push(td);
59
- }
60
- if (node.children) {
61
- for (const child of node.children) {
62
- processNode(child);
63
- }
64
- }
65
- };
66
- for (const node of nodes) {
67
- processNode(node);
68
- }
69
- return results;
70
- }
71
- /**
72
- * Find @wot_thing directive in node
73
- */
74
- findWoTTrait(node) {
75
- if (!node.directives) {
76
- return null;
77
- }
78
- return node.directives.find(
79
- (d) => d.type === "trait" && d.name === "wot_thing" || d.type === "directive" && d.name === "wot_thing"
80
- ) || null;
81
- }
82
- /**
83
- * Parse @wot_thing config from directive
84
- */
85
- parseWoTConfig(directive) {
86
- const dir = directive;
87
- const args = dir.args || dir.config || {};
88
- return {
89
- title: String(args.title || ""),
90
- description: args.description ? String(args.description) : void 0,
91
- security: args.security || "nosec",
92
- base: args.base ? String(args.base) : void 0,
93
- id: args.id ? String(args.id) : void 0,
94
- version: args.version ? String(args.version) : void 0
95
- };
96
- }
97
- /**
98
- * Extract TD properties from @state block
99
- */
100
- extractStateProperties(node) {
101
- const properties = {};
102
- if (!node.directives) {
103
- return properties;
104
- }
105
- const stateDirective = node.directives.find(
106
- (d) => d.type === "state" || d.type === "directive" && d.name === "state"
107
- );
108
- if (!stateDirective || !stateDirective.body) {
109
- if (node.properties?.state && typeof node.properties.state === "object") {
110
- return this.mapStateToProperties(node.properties.state);
111
- }
112
- return properties;
113
- }
114
- const rawBody = stateDirective.body;
115
- const stateBody = typeof rawBody === "object" && rawBody !== null ? rawBody : {};
116
- return this.mapStateToProperties(stateBody);
117
- }
118
- /**
119
- * Map state object to TD properties
120
- */
121
- mapStateToProperties(state) {
122
- const properties = {};
123
- for (const [key, value] of Object.entries(state)) {
124
- const property = {
125
- type: this.inferType(value),
126
- observable: this.options.defaultObservable,
127
- forms: [
128
- {
129
- href: `${this.options.baseUrl}/properties/${key}`,
130
- contentType: this.options.contentType,
131
- op: ["readproperty", "writeproperty"]
132
- }
133
- ]
134
- };
135
- if (value !== void 0 && value !== null) {
136
- property.default = value;
137
- }
138
- if (typeof value === "number") {
139
- if (Number.isInteger(value)) {
140
- property.type = "integer";
141
- }
142
- }
143
- if (Array.isArray(value)) {
144
- property.type = "array";
145
- if (value.length > 0) {
146
- property.items = { type: this.inferType(value[0]) };
147
- }
148
- }
149
- if (value !== null && typeof value === "object" && !Array.isArray(value)) {
150
- property.type = "object";
151
- property.properties = {};
152
- for (const [subKey, subValue] of Object.entries(value)) {
153
- property.properties[subKey] = { type: this.inferType(subValue) };
154
- }
155
- }
156
- properties[key] = property;
157
- }
158
- return properties;
159
- }
160
- /**
161
- * Extract TD actions from @on_* handlers
162
- */
163
- extractActions(node) {
164
- const actions = {};
165
- if (!node.directives) {
166
- return actions;
167
- }
168
- const actionPatterns = [
169
- /^on_click$/,
170
- /^on_grab$/,
171
- /^on_release$/,
172
- /^on_hover$/,
173
- /^on_action$/,
174
- /^on_command$/,
175
- /^on_invoke$/,
176
- /^on_call$/
177
- ];
178
- for (const directive of node.directives) {
179
- const d = directive;
180
- if (directive.type !== "lifecycle" && d.hook === void 0) {
181
- continue;
182
- }
183
- const hookName = d.hook || d.name;
184
- if (!hookName) continue;
185
- const isAction = actionPatterns.some((pattern) => pattern.test(hookName));
186
- if (!isAction) continue;
187
- const actionName = hookName.replace(/^on_/, "");
188
- actions[actionName] = {
189
- title: this.toTitleCase(actionName),
190
- description: `Invoke ${actionName} action`,
191
- safe: false,
192
- idempotent: false,
193
- forms: [
194
- {
195
- href: `${this.options.baseUrl}/actions/${actionName}`,
196
- contentType: this.options.contentType,
197
- op: "invokeaction"
198
- }
199
- ]
200
- };
201
- if (d.args && typeof d.args === "object") {
202
- actions[actionName].input = {
203
- type: "object",
204
- properties: this.extractInputSchema(d.args)
205
- };
206
- }
207
- }
208
- return actions;
209
- }
210
- /**
211
- * Extract TD events from emit() calls
212
- */
213
- extractEvents(node) {
214
- const events = {};
215
- if (!node.directives) {
216
- return events;
217
- }
218
- const observableDirectives = node.directives.filter(
219
- (d) => d.type === "directive" && (d.name === "observable" || d.name === "event" || d.name === "emit")
220
- );
221
- for (const directive of observableDirectives) {
222
- const dirExt = directive;
223
- const args = dirExt.args || dirExt.config || {};
224
- const eventName = args.name || args.event || "change";
225
- events[String(eventName)] = {
226
- title: this.toTitleCase(String(eventName)),
227
- description: `${eventName} event`,
228
- forms: [
229
- {
230
- href: `${this.options.baseUrl}/events/${eventName}`,
231
- contentType: this.options.contentType,
232
- subprotocol: "sse",
233
- op: "subscribeevent"
234
- }
235
- ]
236
- };
237
- if (args.data && typeof args.data === "object") {
238
- events[String(eventName)].data = {
239
- type: "object",
240
- properties: this.extractInputSchema(args.data)
241
- };
242
- }
243
- }
244
- const emitPattern = /emit\s*\(\s*['"]([^'"]+)['"]/g;
245
- for (const directive of node.directives) {
246
- const dirBody = directive.body;
247
- if (dirBody && typeof dirBody === "string") {
248
- let match;
249
- while ((match = emitPattern.exec(dirBody)) !== null) {
250
- const eventName = match[1];
251
- if (!events[eventName]) {
252
- events[eventName] = {
253
- title: this.toTitleCase(eventName),
254
- description: `${eventName} event`,
255
- forms: [
256
- {
257
- href: `${this.options.baseUrl}/events/${eventName}`,
258
- contentType: this.options.contentType,
259
- subprotocol: "sse",
260
- op: "subscribeevent"
261
- }
262
- ]
263
- };
264
- }
265
- }
266
- }
267
- }
268
- return events;
269
- }
270
- /**
271
- * Build security definitions based on config
272
- */
273
- buildSecurityDefinitions(security) {
274
- if (this.options.securityDefinitions) {
275
- return this.options.securityDefinitions;
276
- }
277
- const definitions = {};
278
- switch (security) {
279
- case "basic":
280
- definitions.default = {
281
- scheme: "basic",
282
- in: "header"
283
- };
284
- break;
285
- case "bearer":
286
- definitions.default = {
287
- scheme: "bearer",
288
- in: "header",
289
- format: "jwt"
290
- };
291
- break;
292
- case "oauth2":
293
- definitions.default = {
294
- scheme: "oauth2",
295
- flow: "code"
296
- };
297
- break;
298
- case "apikey":
299
- definitions.default = {
300
- scheme: "apikey",
301
- in: "header",
302
- name: "X-API-Key"
303
- };
304
- break;
305
- case "nosec":
306
- default:
307
- definitions.default = {
308
- scheme: "nosec"
309
- };
310
- break;
311
- }
312
- return definitions;
313
- }
314
- /**
315
- * Extract input schema from args object
316
- */
317
- extractInputSchema(args) {
318
- const schema = {};
319
- for (const [key, value] of Object.entries(args)) {
320
- schema[key] = { type: this.inferType(value) };
321
- }
322
- return schema;
323
- }
324
- /**
325
- * Infer JSON Schema type from value
326
- */
327
- inferType(value) {
328
- if (value === null) return "null";
329
- if (typeof value === "boolean") return "boolean";
330
- if (typeof value === "number") {
331
- return Number.isInteger(value) ? "integer" : "number";
332
- }
333
- if (typeof value === "string") return "string";
334
- if (Array.isArray(value)) return "array";
335
- if (typeof value === "object") return "object";
336
- return "string";
337
- }
338
- /**
339
- * Convert snake_case or camelCase to Title Case
340
- */
341
- toTitleCase(str) {
342
- return str.replace(/_/g, " ").replace(/([A-Z])/g, " $1").replace(/^\s+/, "").split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
343
- }
344
- };
345
- function generateThingDescription(node, options) {
346
- const generator = new ThingDescriptionGenerator(options);
347
- return generator.generate(node);
348
- }
349
- function generateAllThingDescriptions(nodes, options) {
350
- const generator = new ThingDescriptionGenerator(options);
351
- return generator.generateAll(nodes);
352
- }
353
- function serializeThingDescription(td, pretty = true) {
354
- return JSON.stringify(td, null, pretty ? 2 : 0);
355
- }
356
- function validateThingDescription(td) {
357
- const errors = [];
358
- if (!td["@context"]) {
359
- errors.push("Missing required field '@context'");
360
- }
361
- if (!td.title) {
362
- errors.push("Missing required field 'title'");
363
- }
364
- if (!td.security) {
365
- errors.push("Missing required field 'security'");
366
- }
367
- if (!td.securityDefinitions) {
368
- errors.push("Missing required field 'securityDefinitions'");
369
- }
370
- if (td.security && td.securityDefinitions) {
371
- const securityNames = Array.isArray(td.security) ? td.security : [td.security];
372
- for (const name of securityNames) {
373
- if (!td.securityDefinitions[name]) {
374
- errors.push(`Security definition '${name}' not found in securityDefinitions`);
375
- }
376
- }
377
- }
378
- const validateForms = (forms) => {
379
- if (forms) {
380
- for (const form of forms) {
381
- if (!form.href) {
382
- errors.push("Form missing required href");
383
- }
384
- }
385
- }
386
- };
387
- if (td.properties) {
388
- for (const prop of Object.values(td.properties)) {
389
- validateForms(prop.forms);
390
- }
391
- }
392
- if (td.actions) {
393
- for (const action of Object.values(td.actions)) {
394
- validateForms(action.forms);
395
- }
396
- }
397
- if (td.events) {
398
- for (const event of Object.values(td.events)) {
399
- validateForms(event.forms);
400
- }
401
- }
402
- return {
403
- valid: errors.length === 0,
404
- errors
405
- };
406
- }
407
-
408
- export { ThingDescriptionGenerator, generateAllThingDescriptions, generateThingDescription, serializeThingDescription, validateThingDescription };
409
- //# sourceMappingURL=chunk-X67XRI2T.js.map
410
- //# sourceMappingURL=chunk-X67XRI2T.js.map
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- // ../../node_modules/.pnpm/@noble+post-quantum@0.6.0/node_modules/@noble/post-quantum/index.js
4
- throw new Error("root module cannot be imported: import submodules instead. Check out README");
5
- //# sourceMappingURL=post-quantum-JTTAAGO3.cjs.map
6
- //# sourceMappingURL=post-quantum-JTTAAGO3.cjs.map
@@ -1,4 +0,0 @@
1
- // ../../node_modules/.pnpm/@noble+post-quantum@0.6.0/node_modules/@noble/post-quantum/index.js
2
- throw new Error("root module cannot be imported: import submodules instead. Check out README");
3
- //# sourceMappingURL=post-quantum-RVPVDEPI.js.map
4
- //# sourceMappingURL=post-quantum-RVPVDEPI.js.map
@@ -1,29 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkCN4NOESF_cjs = require('../chunk-CN4NOESF.cjs');
4
- require('../chunk-EGIZHYJP.cjs');
5
-
6
-
7
-
8
- Object.defineProperty(exports, "ThingDescriptionGenerator", {
9
- enumerable: true,
10
- get: function () { return chunkCN4NOESF_cjs.ThingDescriptionGenerator; }
11
- });
12
- Object.defineProperty(exports, "generateAllThingDescriptions", {
13
- enumerable: true,
14
- get: function () { return chunkCN4NOESF_cjs.generateAllThingDescriptions; }
15
- });
16
- Object.defineProperty(exports, "generateThingDescription", {
17
- enumerable: true,
18
- get: function () { return chunkCN4NOESF_cjs.generateThingDescription; }
19
- });
20
- Object.defineProperty(exports, "serializeThingDescription", {
21
- enumerable: true,
22
- get: function () { return chunkCN4NOESF_cjs.serializeThingDescription; }
23
- });
24
- Object.defineProperty(exports, "validateThingDescription", {
25
- enumerable: true,
26
- get: function () { return chunkCN4NOESF_cjs.validateThingDescription; }
27
- });
28
- //# sourceMappingURL=index.cjs.map
29
- //# sourceMappingURL=index.cjs.map
package/dist/wot/index.js DELETED
@@ -1,4 +0,0 @@
1
- export { ThingDescriptionGenerator, generateAllThingDescriptions, generateThingDescription, serializeThingDescription, validateThingDescription } from '../chunk-X67XRI2T.js';
2
- import '../chunk-32TWR3HE.js';
3
- //# sourceMappingURL=index.js.map
4
- //# sourceMappingURL=index.js.map