@holoscript/std 3.1.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/EconomicPrimitives.test.d.ts +2 -0
  3. package/dist/__tests__/EconomicTraits.test.d.ts +2 -0
  4. package/dist/__tests__/SimulationLabPrimitives.test.d.ts +2 -0
  5. package/dist/__tests__/collections.test.d.ts +2 -0
  6. package/dist/__tests__/events.test.d.ts +2 -0
  7. package/dist/__tests__/index.test.d.ts +2 -0
  8. package/dist/__tests__/index.test.d.ts.map +1 -0
  9. package/dist/__tests__/materials.test.d.ts +2 -0
  10. package/dist/__tests__/math.test.d.ts +2 -0
  11. package/dist/__tests__/physics.test.d.ts +2 -0
  12. package/dist/__tests__/spatial.test.d.ts +2 -0
  13. package/dist/__tests__/standard-library-fundamentals.test.d.ts +2 -0
  14. package/dist/__tests__/standard-library-fundamentals.test.d.ts.map +1 -0
  15. package/dist/__tests__/string-and-time-utilities.test.d.ts +2 -0
  16. package/dist/__tests__/string-and-time-utilities.test.d.ts.map +1 -0
  17. package/dist/__tests__/string-decoupled.test.d.ts +2 -0
  18. package/dist/__tests__/string.test.d.ts +2 -0
  19. package/dist/__tests__/time.test.d.ts +2 -0
  20. package/dist/chunk-DZHAVOCH.js +686 -0
  21. package/dist/chunk-DZHAVOCH.js.map +1 -0
  22. package/dist/chunk-P4O3WNG2.js +287 -0
  23. package/dist/chunk-P4O3WNG2.js.map +1 -0
  24. package/dist/chunk-PFX2JM4X.js +683 -0
  25. package/dist/chunk-PFX2JM4X.js.map +1 -0
  26. package/dist/chunk-PR4QN5HX.js +43 -0
  27. package/dist/chunk-PR4QN5HX.js.map +1 -0
  28. package/dist/chunk-WS6W35YC.js +443 -0
  29. package/dist/chunk-WS6W35YC.js.map +1 -0
  30. package/dist/chunk-XBA4ARST.js +9313 -0
  31. package/dist/chunk-XBA4ARST.js.map +1 -0
  32. package/dist/chunk-XJIFG7G3.js +348 -0
  33. package/dist/chunk-XJIFG7G3.js.map +1 -0
  34. package/dist/chunk-ZXVZAQCZ.js +470 -0
  35. package/dist/chunk-ZXVZAQCZ.js.map +1 -0
  36. package/dist/collections.cjs +715 -0
  37. package/dist/collections.cjs.map +1 -0
  38. package/dist/collections.d.ts +177 -0
  39. package/dist/collections.js +18 -0
  40. package/dist/collections.js.map +1 -0
  41. package/dist/events.d.ts +32 -0
  42. package/dist/fs/__tests__/file-watch-system.test.d.ts +2 -0
  43. package/dist/fs/__tests__/file-watch-system.test.d.ts.map +1 -0
  44. package/dist/fs/__tests__/path-utilities.test.d.ts +2 -0
  45. package/dist/fs/__tests__/path-utilities.test.d.ts.map +1 -0
  46. package/dist/fs/__tests__/path.test.d.ts +2 -0
  47. package/dist/fs/__tests__/path.test.d.ts.map +1 -0
  48. package/dist/fs/fs.d.ts +288 -0
  49. package/dist/fs/fs.d.ts.map +1 -0
  50. package/dist/fs/index.cjs +9338 -0
  51. package/dist/fs/index.cjs.map +1 -0
  52. package/dist/fs/index.d.ts +51 -0
  53. package/dist/fs/index.d.ts.map +1 -0
  54. package/dist/fs/index.js +204 -0
  55. package/dist/fs/index.js.map +1 -0
  56. package/dist/fs/path.d.ts +135 -0
  57. package/dist/fs/path.d.ts.map +1 -0
  58. package/dist/fs/watch.d.ts +133 -0
  59. package/dist/fs/watch.d.ts.map +1 -0
  60. package/dist/index.cjs +13326 -0
  61. package/dist/index.cjs.map +1 -0
  62. package/dist/index.d.ts +102 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +1275 -190
  65. package/dist/index.js.map +1 -0
  66. package/dist/materials.d.ts +50 -0
  67. package/dist/math.cjs +595 -0
  68. package/dist/math.cjs.map +1 -0
  69. package/dist/math.d.ts +162 -0
  70. package/dist/math.js +54 -0
  71. package/dist/math.js.map +1 -0
  72. package/dist/physics.d.ts +59 -0
  73. package/dist/spatial.d.ts +82 -0
  74. package/dist/string.basic.test.d.ts +5 -0
  75. package/dist/string.basic.test.d.ts.map +1 -0
  76. package/dist/string.cjs +422 -0
  77. package/dist/string.cjs.map +1 -0
  78. package/dist/string.d.ts +212 -0
  79. package/dist/string.d.ts.map +1 -1
  80. package/dist/string.js +108 -0
  81. package/dist/string.js.map +1 -0
  82. package/dist/string.test.d.ts +5 -0
  83. package/dist/string.test.d.ts.map +1 -0
  84. package/dist/time.cjs +512 -0
  85. package/dist/time.cjs.map +1 -0
  86. package/dist/time.d.ts +215 -0
  87. package/dist/time.js +44 -0
  88. package/dist/time.js.map +1 -0
  89. package/dist/traits/ARTraits.d.ts +14 -0
  90. package/dist/traits/EconomicPrimitives.cjs +335 -0
  91. package/dist/traits/EconomicPrimitives.cjs.map +1 -0
  92. package/dist/traits/EconomicPrimitives.d.ts +345 -0
  93. package/dist/traits/EconomicPrimitives.js +56 -0
  94. package/dist/traits/EconomicPrimitives.js.map +1 -0
  95. package/dist/traits/EconomicTraits.cjs +471 -0
  96. package/dist/traits/EconomicTraits.cjs.map +1 -0
  97. package/dist/traits/EconomicTraits.d.ts +71 -0
  98. package/dist/traits/EconomicTraits.js +18 -0
  99. package/dist/traits/EconomicTraits.js.map +1 -0
  100. package/dist/traits/IoTTraits.d.ts +14 -0
  101. package/dist/traits/SimulationLabPrimitives.d.ts +187 -0
  102. package/dist/traits/SimulationLabTraits.d.ts +42 -0
  103. package/dist/traits/VRRTraits.d.ts +150 -0
  104. package/dist/traits/__tests__/ARTraits.test.d.ts +2 -0
  105. package/dist/traits/__tests__/ARTraits.test.d.ts.map +1 -0
  106. package/dist/traits/__tests__/EconomicPrimitives.test.d.ts +2 -0
  107. package/dist/traits/__tests__/EconomicPrimitives.test.d.ts.map +1 -0
  108. package/dist/traits/__tests__/EconomicTraits.test.d.ts +2 -0
  109. package/dist/traits/__tests__/EconomicTraits.test.d.ts.map +1 -0
  110. package/dist/types.d.ts +202 -0
  111. package/dist/types.d.ts.map +1 -1
  112. package/error-utf8.log +6 -0
  113. package/error.log +0 -0
  114. package/package.json +35 -18
  115. package/src/__tests__/index.test.ts +14 -0
  116. package/src/__tests__/{Sprint33.test.ts → standard-library-fundamentals.test.ts} +91 -74
  117. package/src/__tests__/{Sprint56.test.ts → string-and-time-utilities.test.ts} +64 -64
  118. package/src/__tests__/string-decoupled.test.ts +6 -9
  119. package/src/fs/__tests__/file-watch-system.test.ts +675 -0
  120. package/src/fs/__tests__/path-utilities.test.ts +375 -0
  121. package/src/fs/__tests__/path.test.ts +287 -0
  122. package/src/fs/fs.ts +692 -0
  123. package/src/fs/index.ts +194 -0
  124. package/src/fs/path.ts +310 -0
  125. package/src/fs/watch.ts +413 -0
  126. package/src/index.ts +3 -1
  127. package/src/math.ts +1 -1
  128. package/src/string.basic.test.ts +1 -1
  129. package/src/string.test.ts +4 -4
  130. package/src/string.ts +32 -17
  131. package/src/time.ts +1 -1
  132. package/src/traits/ARTraits.ts +2 -2
  133. package/src/traits/IoTTraits.ts +2 -2
  134. package/src/traits/VRRTraits.ts +2 -2
  135. package/src/traits/__tests__/ARTraits.test.ts +8 -0
  136. package/src/traits/__tests__/EconomicPrimitives.test.ts +14 -0
  137. package/src/traits/__tests__/EconomicTraits.test.ts +16 -0
  138. package/src/types.ts +10 -3
  139. package/std_error.log +5 -0
  140. package/tsup.config.ts +20 -0
  141. package/dist/__tests__/Sprint33.test.d.ts.map +0 -1
  142. package/dist/__tests__/Sprint56.test.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/math.ts","../src/types.ts"],"sourcesContent":["/**\n * Math utilities for HoloScript\n *\n * Vector math, quaternion operations, interpolation, and noise functions.\n */\n\nimport type { Vec2, Vec3, Quat, EulerAngles, AABB } from './types.js';\nimport { vec3, quat } from './types.js';\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\nexport const PI = Math.PI;\nexport const TAU = Math.PI * 2;\nexport const HALF_PI = Math.PI / 2;\nexport const DEG_TO_RAD = Math.PI / 180;\nexport const RAD_TO_DEG = 180 / Math.PI;\nexport const EPSILON = 1e-6;\n\n// =============================================================================\n// BASIC MATH\n// =============================================================================\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\nexport function lerp(a: number, b: number, t: number): number {\n return a + (b - a) * t;\n}\n\nexport function inverseLerp(a: number, b: number, value: number): number {\n return (value - a) / (b - a);\n}\n\nexport function remap(\n value: number,\n inMin: number,\n inMax: number,\n outMin: number,\n outMax: number\n): number {\n return lerp(outMin, outMax, inverseLerp(inMin, inMax, value));\n}\n\nexport function smoothstep(edge0: number, edge1: number, x: number): number {\n const t = clamp((x - edge0) / (edge1 - edge0), 0, 1);\n return t * t * (3 - 2 * t);\n}\n\nexport function smootherstep(edge0: number, edge1: number, x: number): number {\n const t = clamp((x - edge0) / (edge1 - edge0), 0, 1);\n return t * t * t * (t * (t * 6 - 15) + 10);\n}\n\nexport function degToRad(degrees: number): number {\n return degrees * DEG_TO_RAD;\n}\n\nexport function radToDeg(radians: number): number {\n return radians * RAD_TO_DEG;\n}\n\nexport function mod(n: number, m: number): number {\n return ((n % m) + m) % m;\n}\n\nexport function fract(x: number): number {\n return x - Math.floor(x);\n}\n\nexport function sign(x: number): number {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n}\n\nexport function step(edge: number, x: number): number {\n return x < edge ? 0 : 1;\n}\n\n// =============================================================================\n// VEC2 OPERATIONS\n// =============================================================================\n\nexport const vec2Math = {\n add: (a: Vec2, b: Vec2): Vec2 => ({ x: a.x + b.x, y: a.y + b.y }),\n sub: (a: Vec2, b: Vec2): Vec2 => ({ x: a.x - b.x, y: a.y - b.y }),\n mul: (a: Vec2, s: number): Vec2 => ({ x: a.x * s, y: a.y * s }),\n div: (a: Vec2, s: number): Vec2 => ({ x: a.x / s, y: a.y / s }),\n dot: (a: Vec2, b: Vec2): number => a.x * b.x + a.y * b.y,\n length: (v: Vec2): number => Math.sqrt(v.x * v.x + v.y * v.y),\n lengthSq: (v: Vec2): number => v.x * v.x + v.y * v.y,\n normalize: (v: Vec2): Vec2 => {\n const len = vec2Math.length(v);\n return len > 0 ? vec2Math.div(v, len) : { x: 0, y: 0 };\n },\n distance: (a: Vec2, b: Vec2): number => vec2Math.length(vec2Math.sub(a, b)),\n lerp: (a: Vec2, b: Vec2, t: number): Vec2 => ({\n x: lerp(a.x, b.x, t),\n y: lerp(a.y, b.y, t),\n }),\n rotate: (v: Vec2, angle: number): Vec2 => {\n const c = Math.cos(angle);\n const s = Math.sin(angle);\n return { x: v.x * c - v.y * s, y: v.x * s + v.y * c };\n },\n angle: (v: Vec2): number => Math.atan2(v.y, v.x),\n angleBetween: (a: Vec2, b: Vec2): number => {\n return Math.acos(clamp(vec2Math.dot(vec2Math.normalize(a), vec2Math.normalize(b)), -1, 1));\n },\n};\n\n// =============================================================================\n// VEC3 OPERATIONS\n// =============================================================================\n\nexport const vec3Math = {\n zero: (): Vec3 => vec3(0, 0, 0),\n one: (): Vec3 => vec3(1, 1, 1),\n up: (): Vec3 => vec3(0, 1, 0),\n down: (): Vec3 => vec3(0, -1, 0),\n forward: (): Vec3 => vec3(0, 0, -1),\n back: (): Vec3 => vec3(0, 0, 1),\n left: (): Vec3 => vec3(-1, 0, 0),\n right: (): Vec3 => vec3(1, 0, 0),\n\n add: (a: Vec3, b: Vec3): Vec3 => vec3(a.x + b.x, a.y + b.y, a.z + b.z),\n sub: (a: Vec3, b: Vec3): Vec3 => ({ x: a.x - b.x, y: a.y - b.y, z: a.z - b.z }),\n mul: (a: Vec3, s: number): Vec3 => ({ x: a.x * s, y: a.y * s, z: a.z * s }),\n div: (a: Vec3, s: number): Vec3 => ({ x: a.x / s, y: a.y / s, z: a.z / s }),\n mulVec: (a: Vec3, b: Vec3): Vec3 => ({ x: a.x * b.x, y: a.y * b.y, z: a.z * b.z }),\n\n dot: (a: Vec3, b: Vec3): number => a.x * b.x + a.y * b.y + a.z * b.z,\n\n cross: (a: Vec3, b: Vec3): Vec3 => ({\n x: a.y * b.z - a.z * b.y,\n y: a.z * b.x - a.x * b.z,\n z: a.x * b.y - a.y * b.x,\n }),\n\n length: (v: Vec3): number => Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z),\n lengthSq: (v: Vec3): number => v.x * v.x + v.y * v.y + v.z * v.z,\n\n normalize: (v: Vec3): Vec3 => {\n const len = vec3Math.length(v);\n return len > EPSILON ? vec3Math.div(v, len) : vec3(0, 0, 0);\n },\n\n distance: (a: Vec3, b: Vec3): number => vec3Math.length(vec3Math.sub(a, b)),\n distanceSq: (a: Vec3, b: Vec3): number => vec3Math.lengthSq(vec3Math.sub(a, b)),\n\n lerp: (a: Vec3, b: Vec3, t: number): Vec3 => ({\n x: lerp(a.x, b.x, t),\n y: lerp(a.y, b.y, t),\n z: lerp(a.z, b.z, t),\n }),\n\n slerp: (a: Vec3, b: Vec3, t: number): Vec3 => {\n const dot = clamp(vec3Math.dot(a, b), -1, 1);\n const theta = Math.acos(dot) * t;\n const relative = vec3Math.normalize(vec3Math.sub(b, vec3Math.mul(a, dot)));\n return vec3Math.add(vec3Math.mul(a, Math.cos(theta)), vec3Math.mul(relative, Math.sin(theta)));\n },\n\n negate: (v: Vec3): Vec3 => ({ x: -v.x, y: -v.y, z: -v.z }),\n\n abs: (v: Vec3): Vec3 => ({ x: Math.abs(v.x), y: Math.abs(v.y), z: Math.abs(v.z) }),\n\n min: (a: Vec3, b: Vec3): Vec3 => ({\n x: Math.min(a.x, b.x),\n y: Math.min(a.y, b.y),\n z: Math.min(a.z, b.z),\n }),\n\n max: (a: Vec3, b: Vec3): Vec3 => ({\n x: Math.max(a.x, b.x),\n y: Math.max(a.y, b.y),\n z: Math.max(a.z, b.z),\n }),\n\n clamp: (v: Vec3, min: Vec3, max: Vec3): Vec3 => ({\n x: clamp(v.x, min.x, max.x),\n y: clamp(v.y, min.y, max.y),\n z: clamp(v.z, min.z, max.z),\n }),\n\n floor: (v: Vec3): Vec3 => ({\n x: Math.floor(v.x),\n y: Math.floor(v.y),\n z: Math.floor(v.z),\n }),\n\n ceil: (v: Vec3): Vec3 => ({\n x: Math.ceil(v.x),\n y: Math.ceil(v.y),\n z: Math.ceil(v.z),\n }),\n\n round: (v: Vec3): Vec3 => ({\n x: Math.round(v.x),\n y: Math.round(v.y),\n z: Math.round(v.z),\n }),\n\n reflect: (v: Vec3, normal: Vec3): Vec3 => {\n const dot = vec3Math.dot(v, normal);\n return vec3Math.sub(v, vec3Math.mul(normal, 2 * dot));\n },\n\n project: (v: Vec3, onto: Vec3): Vec3 => {\n const dot = vec3Math.dot(v, onto);\n const lenSq = vec3Math.lengthSq(onto);\n return vec3Math.mul(onto, dot / lenSq);\n },\n\n angle: (a: Vec3, b: Vec3): number => {\n const dot = vec3Math.dot(vec3Math.normalize(a), vec3Math.normalize(b));\n return Math.acos(clamp(dot, -1, 1));\n },\n\n equals: (a: Vec3, b: Vec3, epsilon: number = EPSILON): boolean => {\n return (\n Math.abs(a.x - b.x) < epsilon &&\n Math.abs(a.y - b.y) < epsilon &&\n Math.abs(a.z - b.z) < epsilon\n );\n },\n};\n\n// =============================================================================\n// QUATERNION OPERATIONS\n// =============================================================================\n\nexport const quatMath = {\n identity: (): Quat => quat(0, 0, 0, 1),\n\n fromAxisAngle: (axis: Vec3, angle: number): Quat => {\n const halfAngle = angle / 2;\n const s = Math.sin(halfAngle);\n const normalized = vec3Math.normalize(axis);\n return {\n x: normalized.x * s,\n y: normalized.y * s,\n z: normalized.z * s,\n w: Math.cos(halfAngle),\n };\n },\n\n fromEuler: (euler: EulerAngles): Quat => {\n const { x, y, z } = euler;\n const c1 = Math.cos(degToRad(x) / 2);\n const c2 = Math.cos(degToRad(y) / 2);\n const c3 = Math.cos(degToRad(z) / 2);\n const s1 = Math.sin(degToRad(x) / 2);\n const s2 = Math.sin(degToRad(y) / 2);\n const s3 = Math.sin(degToRad(z) / 2);\n\n return {\n x: s1 * c2 * c3 + c1 * s2 * s3,\n y: c1 * s2 * c3 - s1 * c2 * s3,\n z: c1 * c2 * s3 + s1 * s2 * c3,\n w: c1 * c2 * c3 - s1 * s2 * s3,\n };\n },\n\n toEuler: (q: Quat): EulerAngles => {\n const sinr_cosp = 2 * (q.w * q.x + q.y * q.z);\n const cosr_cosp = 1 - 2 * (q.x * q.x + q.y * q.y);\n const x = Math.atan2(sinr_cosp, cosr_cosp);\n\n const sinp = 2 * (q.w * q.y - q.z * q.x);\n let y: number;\n if (Math.abs(sinp) >= 1) {\n y = (Math.PI / 2) * Math.sign(sinp);\n } else {\n y = Math.asin(sinp);\n }\n\n const siny_cosp = 2 * (q.w * q.z + q.x * q.y);\n const cosy_cosp = 1 - 2 * (q.y * q.y + q.z * q.z);\n const z = Math.atan2(siny_cosp, cosy_cosp);\n\n return {\n x: radToDeg(x),\n y: radToDeg(y),\n z: radToDeg(z),\n };\n },\n\n multiply: (a: Quat, b: Quat): Quat => ({\n x: a.w * b.x + a.x * b.w + a.y * b.z - a.z * b.y,\n y: a.w * b.y - a.x * b.z + a.y * b.w + a.z * b.x,\n z: a.w * b.z + a.x * b.y - a.y * b.x + a.z * b.w,\n w: a.w * b.w - a.x * b.x - a.y * b.y - a.z * b.z,\n }),\n\n conjugate: (q: Quat): Quat => ({ x: -q.x, y: -q.y, z: -q.z, w: q.w }),\n\n inverse: (q: Quat): Quat => {\n const lenSq = q.x * q.x + q.y * q.y + q.z * q.z + q.w * q.w;\n return {\n x: -q.x / lenSq,\n y: -q.y / lenSq,\n z: -q.z / lenSq,\n w: q.w / lenSq,\n };\n },\n\n normalize: (q: Quat): Quat => {\n const len = Math.sqrt(q.x * q.x + q.y * q.y + q.z * q.z + q.w * q.w);\n return { x: q.x / len, y: q.y / len, z: q.z / len, w: q.w / len };\n },\n\n dot: (a: Quat, b: Quat): number => a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w,\n\n slerp: (a: Quat, b: Quat, t: number): Quat => {\n let dot = quatMath.dot(a, b);\n\n // If dot is negative, negate one quaternion to take shorter path\n let bAdjusted = b;\n if (dot < 0) {\n bAdjusted = { x: -b.x, y: -b.y, z: -b.z, w: -b.w };\n dot = -dot;\n }\n\n if (dot > 0.9995) {\n // Linear interpolation for very close quaternions\n return quatMath.normalize({\n x: lerp(a.x, bAdjusted.x, t),\n y: lerp(a.y, bAdjusted.y, t),\n z: lerp(a.z, bAdjusted.z, t),\n w: lerp(a.w, bAdjusted.w, t),\n });\n }\n\n const theta0 = Math.acos(dot);\n const theta = theta0 * t;\n const sinTheta = Math.sin(theta);\n const sinTheta0 = Math.sin(theta0);\n\n const s0 = Math.cos(theta) - (dot * sinTheta) / sinTheta0;\n const s1 = sinTheta / sinTheta0;\n\n return {\n x: a.x * s0 + bAdjusted.x * s1,\n y: a.y * s0 + bAdjusted.y * s1,\n z: a.z * s0 + bAdjusted.z * s1,\n w: a.w * s0 + bAdjusted.w * s1,\n };\n },\n\n rotateVec3: (q: Quat, v: Vec3): Vec3 => {\n const qv = { x: q.x, y: q.y, z: q.z };\n const uv = vec3Math.cross(qv, v);\n const uuv = vec3Math.cross(qv, uv);\n return vec3Math.add(v, vec3Math.add(vec3Math.mul(uv, 2 * q.w), vec3Math.mul(uuv, 2)));\n },\n\n lookAt: (forward: Vec3, up: Vec3 = vec3(0, 1, 0)): Quat => {\n const f = vec3Math.normalize(forward);\n const r = vec3Math.normalize(vec3Math.cross(up, f));\n const u = vec3Math.cross(f, r);\n\n const trace = r.x + u.y + f.z;\n let q: Quat;\n\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1);\n q = {\n w: 0.25 / s,\n x: (u.z - f.y) * s,\n y: (f.x - r.z) * s,\n z: (r.y - u.x) * s,\n };\n } else if (r.x > u.y && r.x > f.z) {\n const s = 2 * Math.sqrt(1 + r.x - u.y - f.z);\n q = {\n w: (u.z - f.y) / s,\n x: 0.25 * s,\n y: (u.x + r.y) / s,\n z: (f.x + r.z) / s,\n };\n } else if (u.y > f.z) {\n const s = 2 * Math.sqrt(1 + u.y - r.x - f.z);\n q = {\n w: (f.x - r.z) / s,\n x: (u.x + r.y) / s,\n y: 0.25 * s,\n z: (f.y + u.z) / s,\n };\n } else {\n const s = 2 * Math.sqrt(1 + f.z - r.x - u.y);\n q = {\n w: (r.y - u.x) / s,\n x: (f.x + r.z) / s,\n y: (f.y + u.z) / s,\n z: 0.25 * s,\n };\n }\n\n return quatMath.normalize(q);\n },\n};\n\n// =============================================================================\n// AABB OPERATIONS\n// =============================================================================\n\nexport const aabbMath = {\n contains: (aabb: AABB, point: Vec3): boolean => {\n return (\n point.x >= aabb.min.x &&\n point.x <= aabb.max.x &&\n point.y >= aabb.min.y &&\n point.y <= aabb.max.y &&\n point.z >= aabb.min.z &&\n point.z <= aabb.max.z\n );\n },\n\n intersects: (a: AABB, b: AABB): boolean => {\n return (\n a.min.x <= b.max.x &&\n a.max.x >= b.min.x &&\n a.min.y <= b.max.y &&\n a.max.y >= b.min.y &&\n a.min.z <= b.max.z &&\n a.max.z >= b.min.z\n );\n },\n\n center: (aabb: AABB): Vec3 => vec3Math.mul(vec3Math.add(aabb.min, aabb.max), 0.5),\n\n size: (aabb: AABB): Vec3 => vec3Math.sub(aabb.max, aabb.min),\n\n expand: (aabb: AABB, point: Vec3): AABB => ({\n min: vec3Math.min(aabb.min, point),\n max: vec3Math.max(aabb.max, point),\n }),\n\n merge: (a: AABB, b: AABB): AABB => ({\n min: vec3Math.min(a.min, b.min),\n max: vec3Math.max(a.max, b.max),\n }),\n};\n\n// =============================================================================\n// NOISE FUNCTIONS\n// =============================================================================\n\n// Simple permutation table for noise\nconst perm = new Uint8Array(512);\nfor (let i = 0; i < 256; i++) perm[i] = perm[i + 256] = i;\nfor (let i = 255; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [perm[i], perm[j]] = [perm[j], perm[i]];\n perm[i + 256] = perm[i];\n}\n\nfunction fade(t: number): number {\n return t * t * t * (t * (t * 6 - 15) + 10);\n}\n\nfunction grad(hash: number, x: number, y: number, z: number): number {\n const h = hash & 15;\n const u = h < 8 ? x : y;\n const v = h < 4 ? y : h === 12 || h === 14 ? x : z;\n return ((h & 1) === 0 ? u : -u) + ((h & 2) === 0 ? v : -v);\n}\n\nexport const noise = {\n /**\n * 3D Perlin noise (-1 to 1)\n */\n perlin3d: (x: number, y: number, z: number): number => {\n const X = Math.floor(x) & 255;\n const Y = Math.floor(y) & 255;\n const Z = Math.floor(z) & 255;\n\n x -= Math.floor(x);\n y -= Math.floor(y);\n z -= Math.floor(z);\n\n const u = fade(x);\n const v = fade(y);\n const w = fade(z);\n\n const A = perm[X] + Y;\n const AA = perm[A] + Z;\n const AB = perm[A + 1] + Z;\n const B = perm[X + 1] + Y;\n const BA = perm[B] + Z;\n const BB = perm[B + 1] + Z;\n\n return lerp(\n lerp(\n lerp(grad(perm[AA], x, y, z), grad(perm[BA], x - 1, y, z), u),\n lerp(grad(perm[AB], x, y - 1, z), grad(perm[BB], x - 1, y - 1, z), u),\n v\n ),\n lerp(\n lerp(grad(perm[AA + 1], x, y, z - 1), grad(perm[BA + 1], x - 1, y, z - 1), u),\n lerp(grad(perm[AB + 1], x, y - 1, z - 1), grad(perm[BB + 1], x - 1, y - 1, z - 1), u),\n v\n ),\n w\n );\n },\n\n /**\n * 2D Perlin noise (-1 to 1)\n */\n perlin2d: (x: number, y: number): number => {\n return noise.perlin3d(x, y, 0);\n },\n\n /**\n * Fractal Brownian Motion (fBm)\n */\n fbm: (\n x: number,\n y: number,\n z: number,\n octaves: number = 6,\n lacunarity: number = 2,\n gain: number = 0.5\n ): number => {\n let value = 0;\n let amplitude = 1;\n let frequency = 1;\n let maxValue = 0;\n\n for (let i = 0; i < octaves; i++) {\n value += amplitude * noise.perlin3d(x * frequency, y * frequency, z * frequency);\n maxValue += amplitude;\n amplitude *= gain;\n frequency *= lacunarity;\n }\n\n return value / maxValue;\n },\n\n /**\n * Simplex-like noise (approximation using perlin)\n */\n simplex: (x: number, y: number): number => {\n return noise.perlin2d(x * 1.2, y * 1.2);\n },\n\n /**\n * Worley/Cellular noise\n */\n worley: (x: number, y: number, z: number): number => {\n const xi = Math.floor(x);\n const yi = Math.floor(y);\n const zi = Math.floor(z);\n\n let minDist = Infinity;\n\n for (let i = -1; i <= 1; i++) {\n for (let j = -1; j <= 1; j++) {\n for (let k = -1; k <= 1; k++) {\n const cellX = xi + i;\n const cellY = yi + j;\n const cellZ = zi + k;\n\n // Pseudo-random point in cell\n const hash = perm[(perm[(perm[cellX & 255] + cellY) & 255] + cellZ) & 255];\n const px = cellX + hash / 255;\n const py = cellY + ((hash * 7) % 255) / 255;\n const pz = cellZ + ((hash * 13) % 255) / 255;\n\n const dist = (x - px) * (x - px) + (y - py) * (y - py) + (z - pz) * (z - pz);\n minDist = Math.min(minDist, dist);\n }\n }\n }\n\n return Math.sqrt(minDist);\n },\n};\n\n// =============================================================================\n// RANDOM\n// =============================================================================\n\nexport const random = {\n /**\n * Random float between 0 and 1\n */\n float: (): number => Math.random(),\n\n /**\n * Random float in range [min, max)\n */\n range: (min: number, max: number): number => min + Math.random() * (max - min),\n\n /**\n * Random integer in range [min, max]\n */\n int: (min: number, max: number): number => Math.floor(min + Math.random() * (max - min + 1)),\n\n /**\n * Random boolean with probability\n */\n bool: (probability: number = 0.5): boolean => Math.random() < probability,\n\n /**\n * Random element from array\n */\n pick: <T>(array: T[]): T => array[Math.floor(Math.random() * array.length)],\n\n /**\n * Shuffle array (Fisher-Yates)\n */\n shuffle: <T>(array: T[]): T[] => {\n const result = [...array];\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [result[i], result[j]] = [result[j], result[i]];\n }\n return result;\n },\n\n /**\n * Random Vec3 in unit sphere\n */\n insideUnitSphere: (): Vec3 => {\n const theta = Math.random() * TAU;\n const phi = Math.acos(2 * Math.random() - 1);\n const r = Math.cbrt(Math.random());\n return {\n x: r * Math.sin(phi) * Math.cos(theta),\n y: r * Math.sin(phi) * Math.sin(theta),\n z: r * Math.cos(phi),\n };\n },\n\n /**\n * Random Vec3 on unit sphere surface\n */\n onUnitSphere: (): Vec3 => {\n const theta = Math.random() * TAU;\n const phi = Math.acos(2 * Math.random() - 1);\n return {\n x: Math.sin(phi) * Math.cos(theta),\n y: Math.sin(phi) * Math.sin(theta),\n z: Math.cos(phi),\n };\n },\n\n /**\n * Random Vec2 in unit circle\n */\n insideUnitCircle: (): Vec2 => {\n const theta = Math.random() * TAU;\n const r = Math.sqrt(Math.random());\n return {\n x: r * Math.cos(theta),\n y: r * Math.sin(theta),\n };\n },\n\n /**\n * Seeded random number generator\n */\n seeded: (seed: number) => {\n let s = seed;\n return () => {\n s = (s * 1103515245 + 12345) & 0x7fffffff;\n return s / 0x7fffffff;\n };\n },\n};\n","/**\n * Core Types for HoloScript\n *\n * Fundamental spatial and graphical types used throughout the language.\n */\n\n// =============================================================================\n// VECTOR TYPES\n// =============================================================================\n\n/**\n * 2D Vector\n */\nexport interface Vec2 {\n x: number;\n y: number;\n}\n\n/**\n * 3D Vector - The fundamental spatial type\n */\nexport interface Vec3 {\n x: number;\n y: number;\n z: number;\n}\n\n/**\n * 4D Vector\n */\nexport interface Vec4 {\n x: number;\n y: number;\n z: number;\n w: number;\n}\n\n// Array representations\nexport type Vec2Array = [number, number];\nexport type Vec3Array = [number, number, number];\nexport type Vec4Array = [number, number, number, number];\n\n// =============================================================================\n// QUATERNION\n// =============================================================================\n\n/**\n * Quaternion for rotation representation\n */\nexport interface Quat {\n x: number;\n y: number;\n z: number;\n w: number;\n}\n\nexport type QuatArray = [number, number, number, number];\n\n// =============================================================================\n// TRANSFORM\n// =============================================================================\n\n/**\n * Complete 3D transform\n */\nexport interface Transform {\n position: Vec3;\n rotation: Quat;\n scale: Vec3;\n}\n\n/**\n * Euler angles (in degrees)\n */\nexport interface EulerAngles {\n x: number; // pitch\n y: number; // yaw\n z: number; // roll\n}\n\n// =============================================================================\n// COLOR\n// =============================================================================\n\n/**\n * RGB Color (0-1 range)\n */\nexport interface ColorRGB {\n r: number;\n g: number;\n b: number;\n}\n\n/**\n * RGBA Color (0-1 range)\n */\nexport interface ColorRGBA extends ColorRGB {\n a: number;\n}\n\n/**\n * HSL Color\n */\nexport interface ColorHSL {\n h: number; // 0-360\n s: number; // 0-1\n l: number; // 0-1\n}\n\n/**\n * Color can be represented multiple ways\n */\nexport type Color = string | ColorRGB | ColorRGBA | ColorHSL | number;\n\n// =============================================================================\n// BOUNDS\n// =============================================================================\n\n/**\n * Axis-Aligned Bounding Box\n */\nexport interface AABB {\n min: Vec3;\n max: Vec3;\n}\n\n/**\n * Bounding Sphere\n */\nexport interface BoundingSphere {\n center: Vec3;\n radius: number;\n}\n\n// =============================================================================\n// RAY\n// =============================================================================\n\n/**\n * Ray for raycasting\n */\nexport interface Ray {\n origin: Vec3;\n direction: Vec3;\n}\n\n/**\n * Raycast hit result\n */\nexport interface RaycastHit {\n point: Vec3;\n normal: Vec3;\n distance: number;\n objectId?: string;\n}\n\n// =============================================================================\n// UTILITY TYPES\n// =============================================================================\n\n/**\n * Nullable type helper\n */\nexport type Nullable<T> = T | null;\n\n/**\n * Optional type helper\n */\nexport type Optional<T> = T | undefined;\n\n/**\n * Deep partial type\n */\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\n// =============================================================================\n// FACTORY FUNCTIONS\n// =============================================================================\n\n/**\n * Create a Vec2\n */\nexport function vec2(x: number = 0, y: number = 0): Vec2 {\n const v = [x, y] as unknown as Vec2;\n Object.defineProperty(v, 'x', { value: x, writable: true, enumerable: false, configurable: true });\n Object.defineProperty(v, 'y', { value: y, writable: true, enumerable: false, configurable: true });\n return v;\n}\n\n/**\n * Create a Vec3\n */\nexport function vec3(x: number = 0, y: number = 0, z: number = 0): Vec3 {\n const v = [x, y, z] as unknown as Vec3;\n Object.defineProperty(v, 'x', { value: x, writable: true, enumerable: false, configurable: true });\n Object.defineProperty(v, 'y', { value: y, writable: true, enumerable: false, configurable: true });\n Object.defineProperty(v, 'z', { value: z, writable: true, enumerable: false, configurable: true });\n return v;\n}\n\n/**\n * Create a Vec4\n */\nexport function vec4(x: number = 0, y: number = 0, z: number = 0, w: number = 0): Vec4 {\n return { x, y, z, w };\n}\n\n/**\n * Create a Quaternion (identity by default)\n */\nexport function quat(x: number = 0, y: number = 0, z: number = 0, w: number = 1): Quat {\n return { x, y, z, w };\n}\n\n/**\n * Create a Transform\n */\nexport function transform(\n position: Vec3 = vec3(),\n rotation: Quat = quat(),\n scale: Vec3 = vec3(1, 1, 1)\n): Transform {\n return { position, rotation, scale };\n}\n\n/**\n * Create an RGB color\n */\nexport function rgb(r: number, g: number, b: number): ColorRGB {\n return { r, g, b };\n}\n\n/**\n * Create an RGBA color\n */\nexport function rgba(r: number, g: number, b: number, a: number = 1): ColorRGBA {\n return { r, g, b, a };\n}\n\n/**\n * Create an HSL color\n */\nexport function hsl(h: number, s: number, l: number): ColorHSL {\n return { h, s, l };\n}\n\n/**\n * Create an AABB\n */\nexport function aabb(min: Vec3 = vec3(), max: Vec3 = vec3()): AABB {\n return { min, max };\n}\n\n/**\n * Create a Ray\n */\nexport function ray(origin: Vec3, direction: Vec3): Ray {\n return { origin, direction };\n}\n\n// =============================================================================\n// CONVERSION UTILITIES\n// =============================================================================\n\n/**\n * Convert Vec3 to array\n */\nexport function vec3ToArray(v: Vec3): Vec3Array {\n return [v.x, v.y, v.z];\n}\n\n/**\n * Convert array to Vec3\n */\nexport function arrayToVec3(arr: Vec3Array | number[]): Vec3 {\n return vec3(arr[0] || 0, arr[1] || 0, arr[2] || 0);\n}\n\n/**\n * Convert Quat to array\n */\nexport function quatToArray(q: Quat): QuatArray {\n return [q.x, q.y, q.z, q.w];\n}\n\n/**\n * Convert array to Quat\n */\nexport function arrayToQuat(arr: QuatArray | number[]): Quat {\n return { x: arr[0] || 0, y: arr[1] || 0, z: arr[2] || 0, w: arr[3] ?? 1 };\n}\n\n/**\n * Parse color from various formats\n */\nexport function parseColor(color: Color): ColorRGBA {\n if (typeof color === 'string') {\n // Hex color\n if (color.startsWith('#')) {\n const hex = color.slice(1);\n if (hex.length === 3) {\n return {\n r: parseInt(hex[0] + hex[0], 16) / 255,\n g: parseInt(hex[1] + hex[1], 16) / 255,\n b: parseInt(hex[2] + hex[2], 16) / 255,\n a: 1,\n };\n } else if (hex.length === 6) {\n return {\n r: parseInt(hex.slice(0, 2), 16) / 255,\n g: parseInt(hex.slice(2, 4), 16) / 255,\n b: parseInt(hex.slice(4, 6), 16) / 255,\n a: 1,\n };\n } else if (hex.length === 8) {\n return {\n r: parseInt(hex.slice(0, 2), 16) / 255,\n g: parseInt(hex.slice(2, 4), 16) / 255,\n b: parseInt(hex.slice(4, 6), 16) / 255,\n a: parseInt(hex.slice(6, 8), 16) / 255,\n };\n }\n }\n // Named colors (basic support)\n const namedColors: Record<string, ColorRGBA> = {\n white: { r: 1, g: 1, b: 1, a: 1 },\n black: { r: 0, g: 0, b: 0, a: 1 },\n red: { r: 1, g: 0, b: 0, a: 1 },\n green: { r: 0, g: 1, b: 0, a: 1 },\n blue: { r: 0, g: 0, b: 1, a: 1 },\n yellow: { r: 1, g: 1, b: 0, a: 1 },\n cyan: { r: 0, g: 1, b: 1, a: 1 },\n magenta: { r: 1, g: 0, b: 1, a: 1 },\n };\n return namedColors[color.toLowerCase()] || { r: 1, g: 1, b: 1, a: 1 };\n }\n\n if (typeof color === 'number') {\n // Integer color (0xRRGGBB)\n return {\n r: ((color >> 16) & 0xff) / 255,\n g: ((color >> 8) & 0xff) / 255,\n b: (color & 0xff) / 255,\n a: 1,\n };\n }\n\n if ('h' in color) {\n // HSL to RGB conversion\n const { h, s, l } = color;\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = l - c / 2;\n let r = 0,\n g = 0,\n b = 0;\n\n if (h < 60) {\n r = c;\n g = x;\n } else if (h < 120) {\n r = x;\n g = c;\n } else if (h < 180) {\n g = c;\n b = x;\n } else if (h < 240) {\n g = x;\n b = c;\n } else if (h < 300) {\n r = x;\n b = c;\n } else {\n r = c;\n b = x;\n }\n\n return { r: r + m, g: g + m, b: b + m, a: 1 };\n }\n\n if ('a' in color) {\n return color;\n }\n\n return { ...color, a: 1 };\n}\n\n/**\n * Color to hex string\n */\nexport function colorToHex(color: ColorRGB | ColorRGBA): string {\n const r = Math.round(color.r * 255)\n .toString(16)\n .padStart(2, '0');\n const g = Math.round(color.g * 255)\n .toString(16)\n .padStart(2, '0');\n const b = Math.round(color.b * 255)\n .toString(16)\n .padStart(2, '0');\n return `#${r}${g}${b}`;\n}\n\n// =============================================================================\n// TRAIT DEFINITIONS\n// =============================================================================\n\nexport interface TraitDefinition {\n name: string;\n description?: string;\n type?: string;\n params?: Record<string, any>;\n parameters?: Record<string, any>;\n validator?: (params: Record<string, any>) => boolean;\n validation?: any;\n}\n"],"mappings":"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","names":[]}
package/dist/math.d.ts ADDED
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Math utilities for HoloScript
3
+ *
4
+ * Vector math, quaternion operations, interpolation, and noise functions.
5
+ */
6
+ import type { Vec2, Vec3, Quat, EulerAngles, AABB } from './types.js';
7
+ export declare const PI: number;
8
+ export declare const TAU: number;
9
+ export declare const HALF_PI: number;
10
+ export declare const DEG_TO_RAD: number;
11
+ export declare const RAD_TO_DEG: number;
12
+ export declare const EPSILON = 0.000001;
13
+ export declare function clamp(value: number, min: number, max: number): number;
14
+ export declare function lerp(a: number, b: number, t: number): number;
15
+ export declare function inverseLerp(a: number, b: number, value: number): number;
16
+ export declare function remap(value: number, inMin: number, inMax: number, outMin: number, outMax: number): number;
17
+ export declare function smoothstep(edge0: number, edge1: number, x: number): number;
18
+ export declare function smootherstep(edge0: number, edge1: number, x: number): number;
19
+ export declare function degToRad(degrees: number): number;
20
+ export declare function radToDeg(radians: number): number;
21
+ export declare function mod(n: number, m: number): number;
22
+ export declare function fract(x: number): number;
23
+ export declare function sign(x: number): number;
24
+ export declare function step(edge: number, x: number): number;
25
+ export declare const vec2Math: {
26
+ add: (a: Vec2, b: Vec2) => Vec2;
27
+ sub: (a: Vec2, b: Vec2) => Vec2;
28
+ mul: (a: Vec2, s: number) => Vec2;
29
+ div: (a: Vec2, s: number) => Vec2;
30
+ dot: (a: Vec2, b: Vec2) => number;
31
+ length: (v: Vec2) => number;
32
+ lengthSq: (v: Vec2) => number;
33
+ normalize: (v: Vec2) => Vec2;
34
+ distance: (a: Vec2, b: Vec2) => number;
35
+ lerp: (a: Vec2, b: Vec2, t: number) => Vec2;
36
+ rotate: (v: Vec2, angle: number) => Vec2;
37
+ angle: (v: Vec2) => number;
38
+ angleBetween: (a: Vec2, b: Vec2) => number;
39
+ };
40
+ export declare const vec3Math: {
41
+ zero: () => Vec3;
42
+ one: () => Vec3;
43
+ up: () => Vec3;
44
+ down: () => Vec3;
45
+ forward: () => Vec3;
46
+ back: () => Vec3;
47
+ left: () => Vec3;
48
+ right: () => Vec3;
49
+ add: (a: Vec3, b: Vec3) => Vec3;
50
+ sub: (a: Vec3, b: Vec3) => Vec3;
51
+ mul: (a: Vec3, s: number) => Vec3;
52
+ div: (a: Vec3, s: number) => Vec3;
53
+ mulVec: (a: Vec3, b: Vec3) => Vec3;
54
+ dot: (a: Vec3, b: Vec3) => number;
55
+ cross: (a: Vec3, b: Vec3) => Vec3;
56
+ length: (v: Vec3) => number;
57
+ lengthSq: (v: Vec3) => number;
58
+ normalize: (v: Vec3) => Vec3;
59
+ distance: (a: Vec3, b: Vec3) => number;
60
+ distanceSq: (a: Vec3, b: Vec3) => number;
61
+ lerp: (a: Vec3, b: Vec3, t: number) => Vec3;
62
+ slerp: (a: Vec3, b: Vec3, t: number) => Vec3;
63
+ negate: (v: Vec3) => Vec3;
64
+ abs: (v: Vec3) => Vec3;
65
+ min: (a: Vec3, b: Vec3) => Vec3;
66
+ max: (a: Vec3, b: Vec3) => Vec3;
67
+ clamp: (v: Vec3, min: Vec3, max: Vec3) => Vec3;
68
+ floor: (v: Vec3) => Vec3;
69
+ ceil: (v: Vec3) => Vec3;
70
+ round: (v: Vec3) => Vec3;
71
+ reflect: (v: Vec3, normal: Vec3) => Vec3;
72
+ project: (v: Vec3, onto: Vec3) => Vec3;
73
+ angle: (a: Vec3, b: Vec3) => number;
74
+ equals: (a: Vec3, b: Vec3, epsilon?: number) => boolean;
75
+ };
76
+ export declare const quatMath: {
77
+ identity: () => Quat;
78
+ fromAxisAngle: (axis: Vec3, angle: number) => Quat;
79
+ fromEuler: (euler: EulerAngles) => Quat;
80
+ toEuler: (q: Quat) => EulerAngles;
81
+ multiply: (a: Quat, b: Quat) => Quat;
82
+ conjugate: (q: Quat) => Quat;
83
+ inverse: (q: Quat) => Quat;
84
+ normalize: (q: Quat) => Quat;
85
+ dot: (a: Quat, b: Quat) => number;
86
+ slerp: (a: Quat, b: Quat, t: number) => Quat;
87
+ rotateVec3: (q: Quat, v: Vec3) => Vec3;
88
+ lookAt: (forward: Vec3, up?: Vec3) => Quat;
89
+ };
90
+ export declare const aabbMath: {
91
+ contains: (aabb: AABB, point: Vec3) => boolean;
92
+ intersects: (a: AABB, b: AABB) => boolean;
93
+ center: (aabb: AABB) => Vec3;
94
+ size: (aabb: AABB) => Vec3;
95
+ expand: (aabb: AABB, point: Vec3) => AABB;
96
+ merge: (a: AABB, b: AABB) => AABB;
97
+ };
98
+ export declare const noise: {
99
+ /**
100
+ * 3D Perlin noise (-1 to 1)
101
+ */
102
+ perlin3d: (x: number, y: number, z: number) => number;
103
+ /**
104
+ * 2D Perlin noise (-1 to 1)
105
+ */
106
+ perlin2d: (x: number, y: number) => number;
107
+ /**
108
+ * Fractal Brownian Motion (fBm)
109
+ */
110
+ fbm: (x: number, y: number, z: number, octaves?: number, lacunarity?: number, gain?: number) => number;
111
+ /**
112
+ * Simplex-like noise (approximation using perlin)
113
+ */
114
+ simplex: (x: number, y: number) => number;
115
+ /**
116
+ * Worley/Cellular noise
117
+ */
118
+ worley: (x: number, y: number, z: number) => number;
119
+ };
120
+ export declare const random: {
121
+ /**
122
+ * Random float between 0 and 1
123
+ */
124
+ float: () => number;
125
+ /**
126
+ * Random float in range [min, max)
127
+ */
128
+ range: (min: number, max: number) => number;
129
+ /**
130
+ * Random integer in range [min, max]
131
+ */
132
+ int: (min: number, max: number) => number;
133
+ /**
134
+ * Random boolean with probability
135
+ */
136
+ bool: (probability?: number) => boolean;
137
+ /**
138
+ * Random element from array
139
+ */
140
+ pick: <T>(array: T[]) => T;
141
+ /**
142
+ * Shuffle array (Fisher-Yates)
143
+ */
144
+ shuffle: <T>(array: T[]) => T[];
145
+ /**
146
+ * Random Vec3 in unit sphere
147
+ */
148
+ insideUnitSphere: () => Vec3;
149
+ /**
150
+ * Random Vec3 on unit sphere surface
151
+ */
152
+ onUnitSphere: () => Vec3;
153
+ /**
154
+ * Random Vec2 in unit circle
155
+ */
156
+ insideUnitCircle: () => Vec2;
157
+ /**
158
+ * Seeded random number generator
159
+ */
160
+ seeded: (seed: number) => () => number;
161
+ };
162
+ //# sourceMappingURL=math.d.ts.map
package/dist/math.js ADDED
@@ -0,0 +1,54 @@
1
+ import {
2
+ DEG_TO_RAD,
3
+ EPSILON,
4
+ HALF_PI,
5
+ PI,
6
+ RAD_TO_DEG,
7
+ TAU,
8
+ aabbMath,
9
+ clamp,
10
+ degToRad,
11
+ fract,
12
+ inverseLerp,
13
+ lerp,
14
+ mod,
15
+ noise,
16
+ quatMath,
17
+ radToDeg,
18
+ random,
19
+ remap,
20
+ sign,
21
+ smootherstep,
22
+ smoothstep,
23
+ step,
24
+ vec2Math,
25
+ vec3Math
26
+ } from "./chunk-DZHAVOCH.js";
27
+ import "./chunk-PR4QN5HX.js";
28
+ export {
29
+ DEG_TO_RAD,
30
+ EPSILON,
31
+ HALF_PI,
32
+ PI,
33
+ RAD_TO_DEG,
34
+ TAU,
35
+ aabbMath,
36
+ clamp,
37
+ degToRad,
38
+ fract,
39
+ inverseLerp,
40
+ lerp,
41
+ mod,
42
+ noise,
43
+ quatMath,
44
+ radToDeg,
45
+ random,
46
+ remap,
47
+ sign,
48
+ smootherstep,
49
+ smoothstep,
50
+ step,
51
+ vec2Math,
52
+ vec3Math
53
+ };
54
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @holoscript/std — Physics Module
3
+ *
4
+ * Provides physics primitives: ColliderShape, RigidbodyConfig, ForceField, Joint.
5
+ * Runtime representations for HoloScript physics blocks.
6
+ *
7
+ * @version 0.2.0
8
+ * @module @holoscript/std/physics
9
+ */
10
+ import type { Vec3 } from './spatial.js';
11
+ export type ColliderShapeType = 'box' | 'sphere' | 'capsule' | 'mesh' | 'convex' | 'cylinder' | 'heightfield';
12
+ export interface ColliderConfig {
13
+ shape: ColliderShapeType;
14
+ isTrigger: boolean;
15
+ friction: number;
16
+ restitution: number;
17
+ radius?: number;
18
+ halfExtents?: Vec3;
19
+ height?: number;
20
+ meshAsset?: string;
21
+ }
22
+ export declare function createBoxCollider(halfExtents: Vec3, options?: Partial<ColliderConfig>): ColliderConfig;
23
+ export declare function createSphereCollider(radius: number, options?: Partial<ColliderConfig>): ColliderConfig;
24
+ export declare function createCapsuleCollider(radius: number, height: number, options?: Partial<ColliderConfig>): ColliderConfig;
25
+ export interface RigidbodyConfig {
26
+ mass: number;
27
+ useGravity: boolean;
28
+ linearDamping: number;
29
+ angularDamping: number;
30
+ freezePosition: [boolean, boolean, boolean];
31
+ freezeRotation: [boolean, boolean, boolean];
32
+ isKinematic: boolean;
33
+ }
34
+ export declare function createRigidbody(mass: number, options?: Partial<RigidbodyConfig>): RigidbodyConfig;
35
+ export type ForceFieldType = 'directional' | 'radial' | 'vortex' | 'buoyancy';
36
+ export interface ForceFieldConfig {
37
+ type: ForceFieldType;
38
+ strength: number;
39
+ direction?: Vec3;
40
+ falloff: 'none' | 'linear' | 'quadratic';
41
+ turbulence: number;
42
+ }
43
+ export type JointType = 'hinge' | 'slider' | 'ball_socket' | 'fixed' | 'd6' | 'spring';
44
+ export interface JointConfig {
45
+ type: JointType;
46
+ connectedBody?: string;
47
+ axis?: Vec3;
48
+ limits?: [number, number];
49
+ damping: number;
50
+ springForce?: number;
51
+ breakForce?: number;
52
+ }
53
+ export interface RaycastHit {
54
+ point: Vec3;
55
+ normal: Vec3;
56
+ distance: number;
57
+ objectName: string;
58
+ }
59
+ //# sourceMappingURL=physics.d.ts.map
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @holoscript/std — Spatial Module
3
+ *
4
+ * Provides spatial math utilities: Vec3, Quaternion, Transform, Ray, AABB, distance.
5
+ * Used by the HoloScript runtime for spatial computing operations.
6
+ *
7
+ * @version 0.2.0
8
+ * @module @holoscript/std/spatial
9
+ */
10
+ export declare class Vec3 {
11
+ x: number;
12
+ y: number;
13
+ z: number;
14
+ constructor(x?: number, y?: number, z?: number);
15
+ static zero(): Vec3;
16
+ static one(): Vec3;
17
+ static up(): Vec3;
18
+ static down(): Vec3;
19
+ static forward(): Vec3;
20
+ static right(): Vec3;
21
+ add(other: Vec3): Vec3;
22
+ sub(other: Vec3): Vec3;
23
+ mul(s: number): Vec3;
24
+ div(s: number): Vec3;
25
+ dot(other: Vec3): number;
26
+ cross(other: Vec3): Vec3;
27
+ length(): number;
28
+ lengthSquared(): number;
29
+ normalize(): Vec3;
30
+ distanceTo(other: Vec3): number;
31
+ lerp(other: Vec3, t: number): Vec3;
32
+ toArray(): [number, number, number];
33
+ static fromArray(arr: number[]): Vec3;
34
+ equals(other: Vec3, epsilon?: number): boolean;
35
+ toString(): string;
36
+ }
37
+ export declare class Quaternion {
38
+ x: number;
39
+ y: number;
40
+ z: number;
41
+ w: number;
42
+ constructor(x?: number, y?: number, z?: number, w?: number);
43
+ static identity(): Quaternion;
44
+ static fromEuler(x: number, y: number, z: number): Quaternion;
45
+ static fromAxisAngle(axis: Vec3, angle: number): Quaternion;
46
+ multiply(other: Quaternion): Quaternion;
47
+ rotateVec3(v: Vec3): Vec3;
48
+ slerp(other: Quaternion, t: number): Quaternion;
49
+ normalize(): Quaternion;
50
+ toEuler(): Vec3;
51
+ }
52
+ export declare class Transform {
53
+ position: Vec3;
54
+ rotation: Quaternion;
55
+ scale: Vec3;
56
+ constructor(position?: Vec3, rotation?: Quaternion, scale?: Vec3);
57
+ static identity(): Transform;
58
+ transformPoint(point: Vec3): Vec3;
59
+ transformDirection(dir: Vec3): Vec3;
60
+ }
61
+ export declare class Ray {
62
+ origin: Vec3;
63
+ direction: Vec3;
64
+ constructor(origin: Vec3, direction: Vec3);
65
+ pointAt(t: number): Vec3;
66
+ }
67
+ export declare class AABB {
68
+ min: Vec3;
69
+ max: Vec3;
70
+ constructor(min: Vec3, max: Vec3);
71
+ contains(point: Vec3): boolean;
72
+ intersects(other: AABB): boolean;
73
+ center(): Vec3;
74
+ size(): Vec3;
75
+ intersectsRay(ray: Ray): number | null;
76
+ }
77
+ export declare function distance(a: Vec3, b: Vec3): number;
78
+ export declare function lerp(a: number, b: number, t: number): number;
79
+ export declare function clamp(v: number, min: number, max: number): number;
80
+ export declare function degToRad(deg: number): number;
81
+ export declare function radToDeg(rad: number): number;
82
+ //# sourceMappingURL=spatial.d.ts.map
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @fileoverview Basic test to verify formatBytes function
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=string.basic.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.basic.test.d.ts","sourceRoot":"","sources":["../src/string.basic.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}