@holoscript/std 6.0.3 → 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 (69) hide show
  1. package/dist/{chunk-7HVUYGPS.js → chunk-DZHAVOCH.js} +12 -5
  2. package/dist/chunk-DZHAVOCH.js.map +1 -0
  3. package/dist/chunk-PR4QN5HX.js +43 -0
  4. package/dist/chunk-PR4QN5HX.js.map +1 -0
  5. package/dist/chunk-XBA4ARST.js +9313 -0
  6. package/dist/chunk-XBA4ARST.js.map +1 -0
  7. package/dist/{chunk-W2Q3LUCM.js → chunk-XJIFG7G3.js} +3 -3
  8. package/dist/chunk-XJIFG7G3.js.map +1 -0
  9. package/dist/collections.js +1 -0
  10. package/dist/fs/__tests__/file-watch-system.test.d.ts +2 -0
  11. package/dist/fs/__tests__/file-watch-system.test.d.ts.map +1 -0
  12. package/dist/fs/__tests__/path-utilities.test.d.ts +2 -0
  13. package/dist/fs/__tests__/path-utilities.test.d.ts.map +1 -0
  14. package/dist/fs/__tests__/path.test.d.ts +2 -0
  15. package/dist/fs/__tests__/path.test.d.ts.map +1 -0
  16. package/dist/fs/fs.d.ts +288 -0
  17. package/dist/fs/fs.d.ts.map +1 -0
  18. package/dist/fs/index.cjs +9338 -0
  19. package/dist/fs/index.cjs.map +1 -0
  20. package/dist/fs/index.d.ts +51 -0
  21. package/dist/fs/index.d.ts.map +1 -0
  22. package/dist/fs/index.js +204 -0
  23. package/dist/fs/index.js.map +1 -0
  24. package/dist/fs/path.d.ts +135 -0
  25. package/dist/fs/path.d.ts.map +1 -0
  26. package/dist/fs/watch.d.ts +133 -0
  27. package/dist/fs/watch.d.ts.map +1 -0
  28. package/dist/index.cjs +12660 -3435
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.d.ts +1 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +8 -3
  33. package/dist/index.js.map +1 -1
  34. package/dist/math.cjs +6 -2
  35. package/dist/math.cjs.map +1 -1
  36. package/dist/math.js +2 -1
  37. package/dist/string.cjs +2 -2
  38. package/dist/string.cjs.map +1 -1
  39. package/dist/string.js +2 -1
  40. package/dist/time.js +1 -0
  41. package/dist/traits/EconomicPrimitives.js +1 -0
  42. package/dist/traits/EconomicTraits.js +1 -0
  43. package/dist/traits/VRRTraits.d.ts +2 -2
  44. package/dist/types.d.ts.map +1 -1
  45. package/package.json +7 -2
  46. package/src/__tests__/index.test.ts +8 -8
  47. package/src/__tests__/standard-library-fundamentals.test.ts +21 -4
  48. package/src/__tests__/string-decoupled.test.ts +6 -7
  49. package/src/fs/__tests__/file-watch-system.test.ts +675 -0
  50. package/src/fs/__tests__/path-utilities.test.ts +375 -0
  51. package/src/fs/__tests__/path.test.ts +287 -0
  52. package/src/fs/fs.ts +692 -0
  53. package/src/fs/index.ts +194 -0
  54. package/src/fs/path.ts +310 -0
  55. package/src/fs/watch.ts +413 -0
  56. package/src/index.ts +3 -1
  57. package/src/math.ts +1 -1
  58. package/src/string.ts +2 -2
  59. package/src/traits/ARTraits.ts +2 -2
  60. package/src/traits/IoTTraits.ts +2 -2
  61. package/src/traits/VRRTraits.ts +2 -2
  62. package/src/traits/__tests__/ARTraits.test.ts +3 -9
  63. package/src/traits/__tests__/EconomicPrimitives.test.ts +7 -7
  64. package/src/traits/__tests__/EconomicTraits.test.ts +9 -7
  65. package/src/types.ts +10 -3
  66. package/tsup.config.ts +3 -0
  67. package/CHANGELOG.md +0 -7
  68. package/dist/chunk-7HVUYGPS.js.map +0 -1
  69. package/dist/chunk-W2Q3LUCM.js.map +0 -1
@@ -140,8 +140,8 @@ function formatDuration(ms) {
140
140
  if (ms < 36e5) {
141
141
  return `${(ms / 6e4).toFixed(1)}m`;
142
142
  }
143
- const hours = Math.floor(ms / 36e5);
144
- const mins = Math.floor(ms % 36e5 / 6e4);
143
+ const _hours = Math.floor(ms / 36e5);
144
+ const _mins = Math.floor(ms % 36e5 / 6e4);
145
145
  return `${(ms / 36e5).toFixed(1)}h`;
146
146
  }
147
147
  function escapeHtml(s) {
@@ -345,4 +345,4 @@ export {
345
345
  similarity,
346
346
  extractTraits
347
347
  };
348
- //# sourceMappingURL=chunk-W2Q3LUCM.js.map
348
+ //# sourceMappingURL=chunk-XJIFG7G3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/string.ts"],"sourcesContent":["/**\n * @holoscript/std - String Module\n *\n * String manipulation utilities for HoloScript Plus programs.\n */\n\n/**\n * Check if a string is empty or only whitespace\n */\nexport function isBlank(s: string): boolean {\n return s.trim().length === 0;\n}\n\n/**\n * Check if a string is not empty and not only whitespace\n */\nexport function isNotBlank(s: string): boolean {\n return s.trim().length > 0;\n}\n\n/**\n * Capitalize the first letter of a string\n */\nexport function capitalize(s: string): string {\n if (s.length === 0) return s;\n return s[0].toUpperCase() + s.slice(1);\n}\n\n/**\n * Capitalize the first letter of each word\n */\nexport function titleCase(s: string): string {\n return s.split(/\\s+/).map(capitalize).join(' ');\n}\n\n/**\n * Convert to camelCase\n */\nexport function camelCase(s: string): string {\n return s\n .replace(/[-_\\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\n .replace(/^[A-Z]/, (c) => c.toLowerCase());\n}\n\n/**\n * Convert to PascalCase\n */\nexport function pascalCase(s: string): string {\n const camel = camelCase(s);\n return camel.length > 0 ? camel[0].toUpperCase() + camel.slice(1) : camel;\n}\n\n/**\n * Convert to snake_case\n */\nexport function snakeCase(s: string): string {\n return s\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[-\\s]+/g, '_')\n .toLowerCase();\n}\n\n/**\n * Convert to kebab-case\n */\nexport function kebabCase(s: string): string {\n return s\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[_\\s]+/g, '-')\n .toLowerCase();\n}\n\n/**\n * Convert to SCREAMING_SNAKE_CASE\n */\nexport function constantCase(s: string): string {\n return snakeCase(s).toUpperCase();\n}\n\n/**\n * Pad a string on the left to reach target length\n */\nexport function padLeft(s: string, length: number, char = ' '): string {\n return s.padStart(length, char);\n}\n\n/**\n * Pad a string on the right to reach target length\n */\nexport function padRight(s: string, length: number, char = ' '): string {\n return s.padEnd(length, char);\n}\n\n/**\n * Pad a string on both sides to center it\n */\nexport function center(s: string, length: number, char = ' '): string {\n if (s.length >= length) return s;\n const totalPadding = length - s.length;\n const leftPadding = Math.floor(totalPadding / 2);\n const rightPadding = totalPadding - leftPadding;\n return char.repeat(leftPadding) + s + char.repeat(rightPadding);\n}\n\n/**\n * Truncate a string to max length, adding ellipsis if needed\n */\nexport function truncate(s: string, maxLength: number, ellipsis = '...'): string {\n if (s.length <= maxLength) return s;\n return s.slice(0, maxLength - ellipsis.length) + ellipsis;\n}\n\n/**\n * Truncate a string in the middle\n */\nexport function truncateMiddle(s: string, maxLength: number, ellipsis = '...'): string {\n if (s.length <= maxLength) return s;\n const availableLength = maxLength - ellipsis.length;\n const leftLength = Math.floor(availableLength / 2);\n const rightLength = Math.ceil(availableLength / 2);\n return s.slice(0, leftLength) + ellipsis + s.slice(-rightLength);\n}\n\n/**\n * Repeat a string n times\n */\nexport function repeat(s: string, count: number): string {\n return s.repeat(count);\n}\n\n/**\n * Reverse a string\n */\nexport function reverse(s: string): string {\n return [...s].reverse().join('');\n}\n\n/**\n * Count occurrences of a substring\n */\nexport function count(s: string, substring: string): number {\n if (substring.length === 0) return 0;\n let count = 0;\n let pos = 0;\n while ((pos = s.indexOf(substring, pos)) !== -1) {\n count++;\n pos += 1;\n }\n return count;\n}\n\n/**\n * Check if string contains a substring (case-insensitive)\n */\nexport function containsIgnoreCase(s: string, substring: string): boolean {\n return s.toLowerCase().includes(substring.toLowerCase());\n}\n\n/**\n * Check if string starts with prefix (case-insensitive)\n */\nexport function startsWithIgnoreCase(s: string, prefix: string): boolean {\n return s.toLowerCase().startsWith(prefix.toLowerCase());\n}\n\n/**\n * Check if string ends with suffix (case-insensitive)\n */\nexport function endsWithIgnoreCase(s: string, suffix: string): boolean {\n return s.toLowerCase().endsWith(suffix.toLowerCase());\n}\n\n/**\n * Remove all whitespace from a string\n */\nexport function removeWhitespace(s: string): string {\n return s.replace(/\\s+/g, '');\n}\n\n/**\n * Collapse multiple spaces into single space\n */\nexport function collapseWhitespace(s: string): string {\n return s.replace(/\\s+/g, ' ').trim();\n}\n\n/**\n * Remove a prefix if present\n */\nexport function removePrefix(s: string, prefix: string): string {\n return s.startsWith(prefix) ? s.slice(prefix.length) : s;\n}\n\n/**\n * Remove a suffix if present\n */\nexport function removeSuffix(s: string, suffix: string): string {\n return s.endsWith(suffix) ? s.slice(0, -suffix.length) : s;\n}\n\n/**\n * Wrap a string with prefix and suffix\n */\nexport function wrap(s: string, wrapper: string): string;\nexport function wrap(s: string, prefix: string, suffix: string): string;\nexport function wrap(s: string, prefixOrWrapper: string, suffix?: string): string {\n if (suffix === undefined) {\n return prefixOrWrapper + s + prefixOrWrapper;\n }\n return prefixOrWrapper + s + suffix;\n}\n\n/**\n * Unwrap a string by removing matching prefix and suffix\n */\nexport function unwrap(s: string, wrapper: string): string;\nexport function unwrap(s: string, prefix: string, suffix: string): string;\nexport function unwrap(s: string, prefixOrWrapper: string, suffix?: string): string {\n const prefix = prefixOrWrapper;\n const actualSuffix = suffix ?? prefixOrWrapper;\n if (s.startsWith(prefix) && s.endsWith(actualSuffix)) {\n return s.slice(prefix.length, -actualSuffix.length || undefined);\n }\n return s;\n}\n\n/**\n * Split a string into lines\n */\nexport function lines(s: string): string[] {\n return s.split(/\\r?\\n/);\n}\n\n/**\n * Split a string into words\n */\nexport function words(s: string): string[] {\n return s.split(/\\s+/).filter((w) => w.length > 0);\n}\n\n/**\n * Split a string into characters\n */\nexport function chars(s: string): string[] {\n return [...s];\n}\n\n/**\n * Join strings with a separator\n */\nexport function join(strings: string[], separator = ''): string {\n return strings.join(separator);\n}\n\n/**\n * Format a template string with values\n */\nexport function format(template: string, values: Record<string, unknown>): string {\n return template.replace(/\\{(\\w+)\\}/g, (match, key) => {\n return key in values ? String(values[key]) : match;\n });\n}\n\n/**\n * Format a number as a string with grouping\n */\nexport function formatNumber(n: number, options: Intl.NumberFormatOptions = {}): string {\n return n.toLocaleString('en-US', options);\n}\n\n/**\n * Format a number with commas\n */\nexport function numberWithCommas(n: number): string {\n return n.toLocaleString('en-US');\n}\n\n/**\n * Format bytes as human-readable string\n */\nexport function formatBytes(bytes: number, decimals = 2): string {\n if (bytes === 0) return '0 B';\n const k = 1024;\n if (bytes < 0) return `${bytes} B`;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + ' ' + sizes[i];\n}\n\n/**\n * Format duration in milliseconds as human-readable string\n */\nexport function formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n if (ms < 3600000) {\n return `${(ms / 60000).toFixed(1)}m`;\n }\n const _hours = Math.floor(ms / 3600000);\n const _mins = Math.floor((ms % 3600000) / 60000);\n return `${(ms / 3600000).toFixed(1)}h`;\n}\n\n/**\n * Escape HTML special characters\n */\nexport function escapeHtml(s: string): string {\n const htmlEntities: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n };\n return s.replace(/[&<>\"']/g, (c) => htmlEntities[c]);\n}\n\n/**\n * Unescape HTML entities\n */\nexport function unescapeHtml(s: string): string {\n const htmlEntities: Record<string, string> = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n '&#x27;': \"'\",\n '&#x2F;': '/',\n };\n return s.replace(\n /&(?:amp|lt|gt|quot|#39|#x27|#x2F);/g,\n (entity) => htmlEntities[entity] || entity\n );\n}\n\n/**\n * Escape regex special characters\n */\nexport function escapeRegex(s: string): string {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Generate a slug from a string\n */\nexport function slugify(s: string): string {\n return s\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '') // Remove diacritics\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\n/**\n * Check if string is a valid identifier\n */\nexport function isValidIdentifier(s: string): boolean {\n return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(s);\n}\n\n/**\n * Check if string is numeric\n */\nexport function isNumeric(s: string): boolean {\n return !isNaN(parseFloat(s)) && isFinite(Number(s));\n}\n\n/**\n * Check if string is alphanumeric\n */\nexport function isAlphanumeric(s: string): boolean {\n return /^[a-zA-Z0-9]+$/.test(s);\n}\n\n/**\n * Check if string is alphabetic\n */\nexport function isAlpha(s: string): boolean {\n return /^[a-zA-Z]+$/.test(s);\n}\n\n/**\n * Generate a random string\n */\nexport function randomString(\n length: number,\n charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n): string {\n let result = '';\n for (let i = 0; i < length; i++) {\n result += charset[Math.floor(Math.random() * charset.length)];\n }\n return result;\n}\n\n/**\n * Generate a UUID v4\n */\nexport function uuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Indent each line of a string\n */\nexport function indent(s: string, spaces: number, char = ' '): string {\n const prefix = char.repeat(spaces);\n return s\n .split('\\n')\n .map((line) => prefix + line)\n .join('\\n');\n}\n\n/**\n * Dedent a string (remove common leading whitespace)\n */\nexport function dedent(s: string): string {\n const linesList = lines(s);\n const nonEmptyLines = linesList.filter((l) => l.trim().length > 0);\n if (nonEmptyLines.length === 0) return s;\n\n const minIndent = Math.min(\n ...nonEmptyLines.map((line) => {\n const match = line.match(/^(\\s*)/);\n return match ? match[1].length : 0;\n })\n );\n\n return linesList.map((line) => line.slice(minIndent)).join('\\n');\n}\n\n/**\n * Word wrap text to a maximum width\n */\nexport function wordWrap(s: string, maxWidth: number): string {\n const wordsList = words(s);\n const linesList: string[] = [];\n let currentLine = '';\n\n for (const word of wordsList) {\n if (currentLine.length === 0) {\n currentLine = word;\n } else if (currentLine.length + 1 + word.length <= maxWidth) {\n currentLine += ' ' + word;\n } else {\n linesList.push(currentLine);\n currentLine = word;\n }\n }\n\n if (currentLine.length > 0) {\n linesList.push(currentLine);\n }\n\n return linesList.join('\\n');\n}\n\n/**\n * Levenshtein distance between two strings\n */\nexport function levenshtein(a: string, b: string): number {\n if (a.length === 0) return b.length;\n if (b.length === 0) return a.length;\n\n const matrix: number[][] = [];\n\n for (let i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n for (let j = 0; j <= a.length; j++) {\n matrix[0][j] = j;\n }\n\n for (let i = 1; i <= b.length; i++) {\n for (let j = 1; j <= a.length; j++) {\n if (b[i - 1] === a[j - 1]) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1, // substitution\n matrix[i][j - 1] + 1, // insertion\n matrix[i - 1][j] + 1 // deletion\n );\n }\n }\n }\n\n return matrix[b.length][a.length];\n}\n\nfunction lcsLength(a: string, b: string): number {\n const n = b.length;\n const dp: number[] = new Array(n + 1).fill(0);\n for (let i = 0; i < a.length; i++) {\n let prev = 0;\n for (let j = 0; j < n; j++) {\n const tmp = dp[j + 1];\n dp[j + 1] = a[i] === b[j] ? prev + 1 : Math.max(dp[j + 1], dp[j]);\n prev = tmp;\n }\n }\n return dp[n];\n}\n\n/**\n * Check similarity between two strings (0-1) using Sorensen-Dice over LCS\n */\nexport function similarity(a: string, b: string): number {\n const total = a.length + b.length;\n if (total === 0) return 1;\n return (2 * lcsLength(a, b)) / total;\n}\n\n/**\n * Extract HoloScript trait annotations (@name) and JSX component names from code\n */\nexport function extractTraits(code: string): string[] {\n const traits = new Set<string>();\n let m: RegExpExecArray | null;\n const atRe = /@([a-zA-Z_]\\w*)/g;\n while ((m = atRe.exec(code)) !== null) traits.add(`@${m[1]}`);\n const tagRe = /<([A-Z][a-zA-Z0-9]*)\\b/g;\n while ((m = tagRe.exec(code)) !== null) traits.add(m[1]);\n return [...traits];\n}\n"],"mappings":";AASO,SAAS,QAAQ,GAAoB;AAC1C,SAAO,EAAE,KAAK,EAAE,WAAW;AAC7B;AAKO,SAAS,WAAW,GAAoB;AAC7C,SAAO,EAAE,KAAK,EAAE,SAAS;AAC3B;AAKO,SAAS,WAAW,GAAmB;AAC5C,MAAI,EAAE,WAAW,EAAG,QAAO;AAC3B,SAAO,EAAE,CAAC,EAAE,YAAY,IAAI,EAAE,MAAM,CAAC;AACvC;AAKO,SAAS,UAAU,GAAmB;AAC3C,SAAO,EAAE,MAAM,KAAK,EAAE,IAAI,UAAU,EAAE,KAAK,GAAG;AAChD;AAKO,SAAS,UAAU,GAAmB;AAC3C,SAAO,EACJ,QAAQ,gBAAgB,CAAC,GAAG,MAAO,IAAI,EAAE,YAAY,IAAI,EAAG,EAC5D,QAAQ,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC;AAC7C;AAKO,SAAS,WAAW,GAAmB;AAC5C,QAAM,QAAQ,UAAU,CAAC;AACzB,SAAO,MAAM,SAAS,IAAI,MAAM,CAAC,EAAE,YAAY,IAAI,MAAM,MAAM,CAAC,IAAI;AACtE;AAKO,SAAS,UAAU,GAAmB;AAC3C,SAAO,EACJ,QAAQ,mBAAmB,OAAO,EAClC,QAAQ,WAAW,GAAG,EACtB,YAAY;AACjB;AAKO,SAAS,UAAU,GAAmB;AAC3C,SAAO,EACJ,QAAQ,mBAAmB,OAAO,EAClC,QAAQ,WAAW,GAAG,EACtB,YAAY;AACjB;AAKO,SAAS,aAAa,GAAmB;AAC9C,SAAO,UAAU,CAAC,EAAE,YAAY;AAClC;AAKO,SAAS,QAAQ,GAAW,QAAgB,OAAO,KAAa;AACrE,SAAO,EAAE,SAAS,QAAQ,IAAI;AAChC;AAKO,SAAS,SAAS,GAAW,QAAgB,OAAO,KAAa;AACtE,SAAO,EAAE,OAAO,QAAQ,IAAI;AAC9B;AAKO,SAAS,OAAO,GAAW,QAAgB,OAAO,KAAa;AACpE,MAAI,EAAE,UAAU,OAAQ,QAAO;AAC/B,QAAM,eAAe,SAAS,EAAE;AAChC,QAAM,cAAc,KAAK,MAAM,eAAe,CAAC;AAC/C,QAAM,eAAe,eAAe;AACpC,SAAO,KAAK,OAAO,WAAW,IAAI,IAAI,KAAK,OAAO,YAAY;AAChE;AAKO,SAAS,SAAS,GAAW,WAAmB,WAAW,OAAe;AAC/E,MAAI,EAAE,UAAU,UAAW,QAAO;AAClC,SAAO,EAAE,MAAM,GAAG,YAAY,SAAS,MAAM,IAAI;AACnD;AAKO,SAAS,eAAe,GAAW,WAAmB,WAAW,OAAe;AACrF,MAAI,EAAE,UAAU,UAAW,QAAO;AAClC,QAAM,kBAAkB,YAAY,SAAS;AAC7C,QAAM,aAAa,KAAK,MAAM,kBAAkB,CAAC;AACjD,QAAM,cAAc,KAAK,KAAK,kBAAkB,CAAC;AACjD,SAAO,EAAE,MAAM,GAAG,UAAU,IAAI,WAAW,EAAE,MAAM,CAAC,WAAW;AACjE;AAKO,SAAS,OAAO,GAAWA,QAAuB;AACvD,SAAO,EAAE,OAAOA,MAAK;AACvB;AAKO,SAAS,QAAQ,GAAmB;AACzC,SAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;AACjC;AAKO,SAAS,MAAM,GAAW,WAA2B;AAC1D,MAAI,UAAU,WAAW,EAAG,QAAO;AACnC,MAAIA,SAAQ;AACZ,MAAI,MAAM;AACV,UAAQ,MAAM,EAAE,QAAQ,WAAW,GAAG,OAAO,IAAI;AAC/C,IAAAA;AACA,WAAO;AAAA,EACT;AACA,SAAOA;AACT;AAKO,SAAS,mBAAmB,GAAW,WAA4B;AACxE,SAAO,EAAE,YAAY,EAAE,SAAS,UAAU,YAAY,CAAC;AACzD;AAKO,SAAS,qBAAqB,GAAW,QAAyB;AACvE,SAAO,EAAE,YAAY,EAAE,WAAW,OAAO,YAAY,CAAC;AACxD;AAKO,SAAS,mBAAmB,GAAW,QAAyB;AACrE,SAAO,EAAE,YAAY,EAAE,SAAS,OAAO,YAAY,CAAC;AACtD;AAKO,SAAS,iBAAiB,GAAmB;AAClD,SAAO,EAAE,QAAQ,QAAQ,EAAE;AAC7B;AAKO,SAAS,mBAAmB,GAAmB;AACpD,SAAO,EAAE,QAAQ,QAAQ,GAAG,EAAE,KAAK;AACrC;AAKO,SAAS,aAAa,GAAW,QAAwB;AAC9D,SAAO,EAAE,WAAW,MAAM,IAAI,EAAE,MAAM,OAAO,MAAM,IAAI;AACzD;AAKO,SAAS,aAAa,GAAW,QAAwB;AAC9D,SAAO,EAAE,SAAS,MAAM,IAAI,EAAE,MAAM,GAAG,CAAC,OAAO,MAAM,IAAI;AAC3D;AAOO,SAAS,KAAK,GAAW,iBAAyB,QAAyB;AAChF,MAAI,WAAW,QAAW;AACxB,WAAO,kBAAkB,IAAI;AAAA,EAC/B;AACA,SAAO,kBAAkB,IAAI;AAC/B;AAOO,SAAS,OAAO,GAAW,iBAAyB,QAAyB;AAClF,QAAM,SAAS;AACf,QAAM,eAAe,UAAU;AAC/B,MAAI,EAAE,WAAW,MAAM,KAAK,EAAE,SAAS,YAAY,GAAG;AACpD,WAAO,EAAE,MAAM,OAAO,QAAQ,CAAC,aAAa,UAAU,MAAS;AAAA,EACjE;AACA,SAAO;AACT;AAKO,SAAS,MAAM,GAAqB;AACzC,SAAO,EAAE,MAAM,OAAO;AACxB;AAKO,SAAS,MAAM,GAAqB;AACzC,SAAO,EAAE,MAAM,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AAClD;AAKO,SAAS,MAAM,GAAqB;AACzC,SAAO,CAAC,GAAG,CAAC;AACd;AAKO,SAAS,KAAK,SAAmB,YAAY,IAAY;AAC9D,SAAO,QAAQ,KAAK,SAAS;AAC/B;AAKO,SAAS,OAAO,UAAkB,QAAyC;AAChF,SAAO,SAAS,QAAQ,cAAc,CAAC,OAAO,QAAQ;AACpD,WAAO,OAAO,SAAS,OAAO,OAAO,GAAG,CAAC,IAAI;AAAA,EAC/C,CAAC;AACH;AAKO,SAAS,aAAa,GAAW,UAAoC,CAAC,GAAW;AACtF,SAAO,EAAE,eAAe,SAAS,OAAO;AAC1C;AAKO,SAAS,iBAAiB,GAAmB;AAClD,SAAO,EAAE,eAAe,OAAO;AACjC;AAKO,SAAS,YAAY,OAAe,WAAW,GAAW;AAC/D,MAAI,UAAU,EAAG,QAAO;AACxB,QAAM,IAAI;AACV,MAAI,QAAQ,EAAG,QAAO,GAAG,KAAK;AAC9B,QAAM,QAAQ,CAAC,KAAK,MAAM,MAAM,MAAM,MAAM,IAAI;AAChD,QAAM,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;AAClD,SAAO,YAAY,QAAQ,KAAK,IAAI,GAAG,CAAC,GAAG,QAAQ,QAAQ,CAAC,IAAI,MAAM,MAAM,CAAC;AAC/E;AAKO,SAAS,eAAe,IAAoB;AACjD,MAAI,KAAK,IAAM,QAAO,GAAG,EAAE;AAC3B,MAAI,KAAK,IAAO,QAAO,IAAI,KAAK,KAAM,QAAQ,CAAC,CAAC;AAChD,MAAI,KAAK,MAAS;AAChB,WAAO,IAAI,KAAK,KAAO,QAAQ,CAAC,CAAC;AAAA,EACnC;AACA,QAAM,SAAS,KAAK,MAAM,KAAK,IAAO;AACtC,QAAM,QAAQ,KAAK,MAAO,KAAK,OAAW,GAAK;AAC/C,SAAO,IAAI,KAAK,MAAS,QAAQ,CAAC,CAAC;AACrC;AAKO,SAAS,WAAW,GAAmB;AAC5C,QAAM,eAAuC;AAAA,IAC3C,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACA,SAAO,EAAE,QAAQ,YAAY,CAAC,MAAM,aAAa,CAAC,CAAC;AACrD;AAKO,SAAS,aAAa,GAAmB;AAC9C,QAAM,eAAuC;AAAA,IAC3C,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AACA,SAAO,EAAE;AAAA,IACP;AAAA,IACA,CAAC,WAAW,aAAa,MAAM,KAAK;AAAA,EACtC;AACF;AAKO,SAAS,YAAY,GAAmB;AAC7C,SAAO,EAAE,QAAQ,uBAAuB,MAAM;AAChD;AAKO,SAAS,QAAQ,GAAmB;AACzC,SAAO,EACJ,YAAY,EACZ,UAAU,KAAK,EACf,QAAQ,oBAAoB,EAAE,EAC9B,QAAQ,eAAe,GAAG,EAC1B,QAAQ,YAAY,EAAE;AAC3B;AAKO,SAAS,kBAAkB,GAAoB;AACpD,SAAO,6BAA6B,KAAK,CAAC;AAC5C;AAKO,SAAS,UAAU,GAAoB;AAC5C,SAAO,CAAC,MAAM,WAAW,CAAC,CAAC,KAAK,SAAS,OAAO,CAAC,CAAC;AACpD;AAKO,SAAS,eAAe,GAAoB;AACjD,SAAO,iBAAiB,KAAK,CAAC;AAChC;AAKO,SAAS,QAAQ,GAAoB;AAC1C,SAAO,cAAc,KAAK,CAAC;AAC7B;AAKO,SAAS,aACd,QACA,UAAU,kEACF;AACR,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,cAAU,QAAQ,KAAK,MAAM,KAAK,OAAO,IAAI,QAAQ,MAAM,CAAC;AAAA,EAC9D;AACA,SAAO;AACT;AAKO,SAAS,OAAe;AAC7B,SAAO,uCAAuC,QAAQ,SAAS,CAAC,MAAM;AACpE,UAAM,IAAK,KAAK,OAAO,IAAI,KAAM;AACjC,UAAM,IAAI,MAAM,MAAM,IAAK,IAAI,IAAO;AACtC,WAAO,EAAE,SAAS,EAAE;AAAA,EACtB,CAAC;AACH;AAKO,SAAS,OAAO,GAAW,QAAgB,OAAO,KAAa;AACpE,QAAM,SAAS,KAAK,OAAO,MAAM;AACjC,SAAO,EACJ,MAAM,IAAI,EACV,IAAI,CAAC,SAAS,SAAS,IAAI,EAC3B,KAAK,IAAI;AACd;AAKO,SAAS,OAAO,GAAmB;AACxC,QAAM,YAAY,MAAM,CAAC;AACzB,QAAM,gBAAgB,UAAU,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;AACjE,MAAI,cAAc,WAAW,EAAG,QAAO;AAEvC,QAAM,YAAY,KAAK;AAAA,IACrB,GAAG,cAAc,IAAI,CAAC,SAAS;AAC7B,YAAM,QAAQ,KAAK,MAAM,QAAQ;AACjC,aAAO,QAAQ,MAAM,CAAC,EAAE,SAAS;AAAA,IACnC,CAAC;AAAA,EACH;AAEA,SAAO,UAAU,IAAI,CAAC,SAAS,KAAK,MAAM,SAAS,CAAC,EAAE,KAAK,IAAI;AACjE;AAKO,SAAS,SAAS,GAAW,UAA0B;AAC5D,QAAM,YAAY,MAAM,CAAC;AACzB,QAAM,YAAsB,CAAC;AAC7B,MAAI,cAAc;AAElB,aAAW,QAAQ,WAAW;AAC5B,QAAI,YAAY,WAAW,GAAG;AAC5B,oBAAc;AAAA,IAChB,WAAW,YAAY,SAAS,IAAI,KAAK,UAAU,UAAU;AAC3D,qBAAe,MAAM;AAAA,IACvB,OAAO;AACL,gBAAU,KAAK,WAAW;AAC1B,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,MAAI,YAAY,SAAS,GAAG;AAC1B,cAAU,KAAK,WAAW;AAAA,EAC5B;AAEA,SAAO,UAAU,KAAK,IAAI;AAC5B;AAKO,SAAS,YAAY,GAAW,GAAmB;AACxD,MAAI,EAAE,WAAW,EAAG,QAAO,EAAE;AAC7B,MAAI,EAAE,WAAW,EAAG,QAAO,EAAE;AAE7B,QAAM,SAAqB,CAAC;AAE5B,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,WAAO,CAAC,IAAI,CAAC,CAAC;AAAA,EAChB;AACA,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,WAAO,CAAC,EAAE,CAAC,IAAI;AAAA,EACjB;AAEA,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,aAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,UAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG;AACzB,eAAO,CAAC,EAAE,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,MACpC,OAAO;AACL,eAAO,CAAC,EAAE,CAAC,IAAI,KAAK;AAAA,UAClB,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;AAAA;AAAA,UACvB,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI;AAAA;AAAA,UACnB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI;AAAA;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM;AAClC;AAEA,SAAS,UAAU,GAAW,GAAmB;AAC/C,QAAM,IAAI,EAAE;AACZ,QAAM,KAAe,IAAI,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC;AAC5C,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,QAAI,OAAO;AACX,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAM,MAAM,GAAG,IAAI,CAAC;AACpB,SAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAChE,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,GAAG,CAAC;AACb;AAKO,SAAS,WAAW,GAAW,GAAmB;AACvD,QAAM,QAAQ,EAAE,SAAS,EAAE;AAC3B,MAAI,UAAU,EAAG,QAAO;AACxB,SAAQ,IAAI,UAAU,GAAG,CAAC,IAAK;AACjC;AAKO,SAAS,cAAc,MAAwB;AACpD,QAAM,SAAS,oBAAI,IAAY;AAC/B,MAAI;AACJ,QAAM,OAAO;AACb,UAAQ,IAAI,KAAK,KAAK,IAAI,OAAO,KAAM,QAAO,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE;AAC5D,QAAM,QAAQ;AACd,UAAQ,IAAI,MAAM,KAAK,IAAI,OAAO,KAAM,QAAO,IAAI,EAAE,CAAC,CAAC;AACvD,SAAO,CAAC,GAAG,MAAM;AACnB;","names":["count"]}
@@ -5,6 +5,7 @@ import {
5
5
  PriorityQueue,
6
6
  SpatialGrid
7
7
  } from "./chunk-PFX2JM4X.js";
8
+ import "./chunk-PR4QN5HX.js";
8
9
  export {
9
10
  HoloMap,
10
11
  HoloSet,
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=file-watch-system.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-watch-system.test.d.ts","sourceRoot":"","sources":["../../../src/fs/__tests__/file-watch-system.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=path-utilities.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-utilities.test.d.ts","sourceRoot":"","sources":["../../../src/fs/__tests__/path-utilities.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=path.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.test.d.ts","sourceRoot":"","sources":["../../../src/fs/__tests__/path.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,288 @@
1
+ /**
2
+ * @holoscript/fs - File System Module
3
+ *
4
+ * File and directory operations for HoloScript Plus programs.
5
+ */
6
+ export type Encoding = BufferEncoding;
7
+ /**
8
+ * File stats information
9
+ */
10
+ export interface FileStats {
11
+ size: number;
12
+ isFile: boolean;
13
+ isDirectory: boolean;
14
+ isSymlink: boolean;
15
+ createdAt: Date;
16
+ modifiedAt: Date;
17
+ accessedAt: Date;
18
+ mode: number;
19
+ }
20
+ /**
21
+ * Directory entry
22
+ */
23
+ export interface DirEntry {
24
+ name: string;
25
+ path: string;
26
+ isFile: boolean;
27
+ isDirectory: boolean;
28
+ isSymlink: boolean;
29
+ }
30
+ /**
31
+ * Read options
32
+ */
33
+ export interface ReadOptions {
34
+ encoding?: Encoding;
35
+ }
36
+ /**
37
+ * Write options
38
+ */
39
+ export interface WriteOptions {
40
+ encoding?: Encoding;
41
+ mode?: number;
42
+ flag?: string;
43
+ append?: boolean;
44
+ }
45
+ /**
46
+ * Copy options
47
+ */
48
+ export interface CopyOptions {
49
+ overwrite?: boolean;
50
+ recursive?: boolean;
51
+ filter?: (src: string) => boolean;
52
+ }
53
+ /**
54
+ * Read a file as text
55
+ */
56
+ export declare function readText(path: string, encoding?: Encoding): Promise<string>;
57
+ /**
58
+ * Read a file as text (sync)
59
+ */
60
+ export declare function readTextSync(path: string, encoding?: Encoding): string;
61
+ /**
62
+ * Read a file as bytes
63
+ */
64
+ export declare function readBytes(path: string): Promise<Buffer>;
65
+ /**
66
+ * Read a file as bytes (sync)
67
+ */
68
+ export declare function readBytesSync(path: string): Buffer;
69
+ /**
70
+ * Read a JSON file
71
+ */
72
+ export declare function readJson<T = unknown>(path: string): Promise<T>;
73
+ /**
74
+ * Read a JSON file (sync)
75
+ */
76
+ export declare function readJsonSync<T = unknown>(path: string): T;
77
+ /**
78
+ * Read file lines as an array
79
+ */
80
+ export declare function readLines(path: string, encoding?: Encoding): Promise<string[]>;
81
+ /**
82
+ * Read file lines as an array (sync)
83
+ */
84
+ export declare function readLinesSync(path: string, encoding?: Encoding): string[];
85
+ /**
86
+ * Write text to a file
87
+ */
88
+ export declare function writeText(path: string, content: string, options?: WriteOptions): Promise<void>;
89
+ /**
90
+ * Write text to a file (sync)
91
+ */
92
+ export declare function writeTextSync(path: string, content: string, options?: WriteOptions): void;
93
+ /**
94
+ * Write bytes to a file
95
+ */
96
+ export declare function writeBytes(path: string, content: Buffer, options?: WriteOptions): Promise<void>;
97
+ /**
98
+ * Write bytes to a file (sync)
99
+ */
100
+ export declare function writeBytesSync(path: string, content: Buffer, options?: WriteOptions): void;
101
+ /**
102
+ * Write JSON to a file
103
+ */
104
+ export declare function writeJson(path: string, data: unknown, options?: WriteOptions & {
105
+ pretty?: boolean;
106
+ }): Promise<void>;
107
+ /**
108
+ * Write JSON to a file (sync)
109
+ */
110
+ export declare function writeJsonSync(path: string, data: unknown, options?: WriteOptions & {
111
+ pretty?: boolean;
112
+ }): void;
113
+ /**
114
+ * Append text to a file
115
+ */
116
+ export declare function appendText(path: string, content: string, encoding?: Encoding): Promise<void>;
117
+ /**
118
+ * Append text to a file (sync)
119
+ */
120
+ export declare function appendTextSync(path: string, content: string, encoding?: Encoding): void;
121
+ /**
122
+ * Append a line to a file
123
+ */
124
+ export declare function appendLine(path: string, line: string, encoding?: Encoding): Promise<void>;
125
+ /**
126
+ * Append a line to a file (sync)
127
+ */
128
+ export declare function appendLineSync(path: string, line: string, encoding?: Encoding): void;
129
+ /**
130
+ * Check if a path exists
131
+ */
132
+ export declare function exists(path: string): Promise<boolean>;
133
+ /**
134
+ * Check if a path exists (sync)
135
+ */
136
+ export declare function existsSync(path: string): boolean;
137
+ /**
138
+ * Check if path is a file
139
+ */
140
+ export declare function isFile(path: string): Promise<boolean>;
141
+ /**
142
+ * Check if path is a file (sync)
143
+ */
144
+ export declare function isFileSync(path: string): boolean;
145
+ /**
146
+ * Check if path is a directory
147
+ */
148
+ export declare function isDirectory(path: string): Promise<boolean>;
149
+ /**
150
+ * Check if path is a directory (sync)
151
+ */
152
+ export declare function isDirectorySync(path: string): boolean;
153
+ /**
154
+ * Get file/directory stats
155
+ */
156
+ export declare function stat(path: string): Promise<FileStats>;
157
+ /**
158
+ * Get file/directory stats (sync)
159
+ */
160
+ export declare function statSync(path: string): FileStats;
161
+ /**
162
+ * Create a directory (and parents if needed)
163
+ */
164
+ export declare function mkdir(path: string, recursive?: boolean): Promise<void>;
165
+ /**
166
+ * Create a directory (sync)
167
+ */
168
+ export declare function mkdirSync(path: string, recursive?: boolean): void;
169
+ /**
170
+ * Ensure a directory exists
171
+ */
172
+ export declare function ensureDir(path: string): Promise<void>;
173
+ /**
174
+ * Ensure a directory exists (sync)
175
+ */
176
+ export declare function ensureDirSync(path: string): void;
177
+ /**
178
+ * Ensure a file exists (create empty if not)
179
+ */
180
+ export declare function ensureFile(path: string): Promise<void>;
181
+ /**
182
+ * Ensure a file exists (sync)
183
+ */
184
+ export declare function ensureFileSync(path: string): void;
185
+ /**
186
+ * Remove a file or directory
187
+ */
188
+ export declare function remove(path: string, recursive?: boolean): Promise<void>;
189
+ /**
190
+ * Remove a file or directory (sync)
191
+ */
192
+ export declare function removeSync(path: string, recursive?: boolean): void;
193
+ /**
194
+ * Copy a file or directory
195
+ */
196
+ export declare function copy(src: string, dest: string, options?: CopyOptions): Promise<void>;
197
+ /**
198
+ * Copy a file or directory (sync)
199
+ */
200
+ export declare function copySync(src: string, dest: string, options?: CopyOptions): void;
201
+ /**
202
+ * Move/rename a file or directory
203
+ */
204
+ export declare function move(src: string, dest: string, overwrite?: boolean): Promise<void>;
205
+ /**
206
+ * Move/rename a file or directory (sync)
207
+ */
208
+ export declare function moveSync(src: string, dest: string, overwrite?: boolean): void;
209
+ /**
210
+ * Read directory entries
211
+ */
212
+ export declare function readDir(path: string): Promise<DirEntry[]>;
213
+ /**
214
+ * Read directory entries (sync)
215
+ */
216
+ export declare function readDirSync(path: string): DirEntry[];
217
+ /**
218
+ * List files in a directory (names only)
219
+ */
220
+ export declare function listFiles(path: string): Promise<string[]>;
221
+ /**
222
+ * List files in a directory (sync)
223
+ */
224
+ export declare function listFilesSync(path: string): string[];
225
+ /**
226
+ * List directories in a directory (names only)
227
+ */
228
+ export declare function listDirs(path: string): Promise<string[]>;
229
+ /**
230
+ * List directories in a directory (sync)
231
+ */
232
+ export declare function listDirsSync(path: string): string[];
233
+ /**
234
+ * Walk directory recursively
235
+ */
236
+ export declare function walk(path: string, options?: {
237
+ depth?: number;
238
+ followSymlinks?: boolean;
239
+ }): AsyncGenerator<DirEntry>;
240
+ /**
241
+ * Find files matching a glob pattern
242
+ */
243
+ export declare function glob(pattern: string, options?: {
244
+ cwd?: string;
245
+ ignore?: string[];
246
+ }): Promise<string[]>;
247
+ /**
248
+ * Find files matching a glob pattern (sync)
249
+ */
250
+ export declare function globSync(pattern: string, options?: {
251
+ cwd?: string;
252
+ ignore?: string[];
253
+ }): string[];
254
+ /**
255
+ * Get the system temp directory
256
+ */
257
+ export declare function tempDir(): string;
258
+ /**
259
+ * Create a temporary file
260
+ */
261
+ export declare function createTempFile(prefix?: string, suffix?: string, dir?: string): Promise<{
262
+ path: string;
263
+ cleanup: () => Promise<void>;
264
+ }>;
265
+ /**
266
+ * Create a temporary directory
267
+ */
268
+ export declare function createTempDir(prefix?: string): Promise<{
269
+ path: string;
270
+ cleanup: () => Promise<void>;
271
+ }>;
272
+ /**
273
+ * Get file size in bytes
274
+ */
275
+ export declare function fileSize(path: string): Promise<number>;
276
+ /**
277
+ * Get file size in bytes (sync)
278
+ */
279
+ export declare function fileSizeSync(path: string): number;
280
+ /**
281
+ * Get directory size (recursive)
282
+ */
283
+ export declare function dirSize(path: string): Promise<number>;
284
+ /**
285
+ * Format bytes as human-readable string
286
+ */
287
+ export declare function formatSize(bytes: number, decimals?: number): string;
288
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/fs/fs.ts"],"names":[],"mappings":"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"}