@ai-matrx/kit 0.5.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 (118) hide show
  1. package/CHANGELOG.md +132 -0
  2. package/LICENSE +21 -0
  3. package/README.md +72 -0
  4. package/dist/autosave.cjs +92 -0
  5. package/dist/autosave.cjs.map +1 -0
  6. package/dist/autosave.d.cts +17 -0
  7. package/dist/autosave.d.ts +17 -0
  8. package/dist/autosave.js +72 -0
  9. package/dist/autosave.js.map +1 -0
  10. package/dist/clipboard.cjs +152 -0
  11. package/dist/clipboard.cjs.map +1 -0
  12. package/dist/clipboard.d.cts +17 -0
  13. package/dist/clipboard.d.ts +17 -0
  14. package/dist/clipboard.js +132 -0
  15. package/dist/clipboard.js.map +1 -0
  16. package/dist/color-util.cjs +790 -0
  17. package/dist/color-util.cjs.map +1 -0
  18. package/dist/color-util.d.cts +235 -0
  19. package/dist/color-util.d.ts +235 -0
  20. package/dist/color-util.js +767 -0
  21. package/dist/color-util.js.map +1 -0
  22. package/dist/concurrency.cjs +59 -0
  23. package/dist/concurrency.cjs.map +1 -0
  24. package/dist/concurrency.d.cts +19 -0
  25. package/dist/concurrency.d.ts +19 -0
  26. package/dist/concurrency.js +38 -0
  27. package/dist/concurrency.js.map +1 -0
  28. package/dist/confirm.cjs +344 -0
  29. package/dist/confirm.cjs.map +1 -0
  30. package/dist/confirm.d.cts +132 -0
  31. package/dist/confirm.d.ts +132 -0
  32. package/dist/confirm.js +312 -0
  33. package/dist/confirm.js.map +1 -0
  34. package/dist/delimiter-guard.cjs +172 -0
  35. package/dist/delimiter-guard.cjs.map +1 -0
  36. package/dist/delimiter-guard.d.cts +119 -0
  37. package/dist/delimiter-guard.d.ts +119 -0
  38. package/dist/delimiter-guard.js +151 -0
  39. package/dist/delimiter-guard.js.map +1 -0
  40. package/dist/drafts.cjs +223 -0
  41. package/dist/drafts.cjs.map +1 -0
  42. package/dist/drafts.d.cts +62 -0
  43. package/dist/drafts.d.ts +62 -0
  44. package/dist/drafts.js +201 -0
  45. package/dist/drafts.js.map +1 -0
  46. package/dist/idb-store.cjs +178 -0
  47. package/dist/idb-store.cjs.map +1 -0
  48. package/dist/idb-store.d.cts +111 -0
  49. package/dist/idb-store.d.ts +111 -0
  50. package/dist/idb-store.js +155 -0
  51. package/dist/idb-store.js.map +1 -0
  52. package/dist/idle-scheduler.cjs +268 -0
  53. package/dist/idle-scheduler.cjs.map +1 -0
  54. package/dist/idle-scheduler.d.cts +185 -0
  55. package/dist/idle-scheduler.d.ts +185 -0
  56. package/dist/idle-scheduler.js +246 -0
  57. package/dist/idle-scheduler.js.map +1 -0
  58. package/dist/index.cjs +3113 -0
  59. package/dist/index.cjs.map +1 -0
  60. package/dist/index.d.cts +897 -0
  61. package/dist/index.d.ts +897 -0
  62. package/dist/index.js +3088 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/invalidation.cjs +64 -0
  65. package/dist/invalidation.cjs.map +1 -0
  66. package/dist/invalidation.d.cts +52 -0
  67. package/dist/invalidation.d.ts +52 -0
  68. package/dist/invalidation.js +43 -0
  69. package/dist/invalidation.js.map +1 -0
  70. package/dist/json-format.cjs +319 -0
  71. package/dist/json-format.cjs.map +1 -0
  72. package/dist/json-format.d.cts +148 -0
  73. package/dist/json-format.d.ts +148 -0
  74. package/dist/json-format.js +286 -0
  75. package/dist/json-format.js.map +1 -0
  76. package/dist/latest-request.cjs +36 -0
  77. package/dist/latest-request.cjs.map +1 -0
  78. package/dist/latest-request.d.cts +29 -0
  79. package/dist/latest-request.d.ts +29 -0
  80. package/dist/latest-request.js +16 -0
  81. package/dist/latest-request.js.map +1 -0
  82. package/dist/qr.cjs +109 -0
  83. package/dist/qr.cjs.map +1 -0
  84. package/dist/qr.d.cts +47 -0
  85. package/dist/qr.d.ts +47 -0
  86. package/dist/qr.js +78 -0
  87. package/dist/qr.js.map +1 -0
  88. package/dist/react-tree.cjs +69 -0
  89. package/dist/react-tree.cjs.map +1 -0
  90. package/dist/react-tree.d.cts +38 -0
  91. package/dist/react-tree.d.ts +38 -0
  92. package/dist/react-tree.js +38 -0
  93. package/dist/react-tree.js.map +1 -0
  94. package/dist/search-scoring.cjs +116 -0
  95. package/dist/search-scoring.cjs.map +1 -0
  96. package/dist/search-scoring.d.cts +77 -0
  97. package/dist/search-scoring.d.ts +77 -0
  98. package/dist/search-scoring.js +95 -0
  99. package/dist/search-scoring.js.map +1 -0
  100. package/dist/text-case.cjs +313 -0
  101. package/dist/text-case.cjs.map +1 -0
  102. package/dist/text-case.d.cts +53 -0
  103. package/dist/text-case.d.ts +53 -0
  104. package/dist/text-case.js +292 -0
  105. package/dist/text-case.js.map +1 -0
  106. package/dist/toast.cjs +74 -0
  107. package/dist/toast.cjs.map +1 -0
  108. package/dist/toast.d.cts +92 -0
  109. package/dist/toast.d.ts +92 -0
  110. package/dist/toast.js +54 -0
  111. package/dist/toast.js.map +1 -0
  112. package/dist/url-state.cjs +212 -0
  113. package/dist/url-state.cjs.map +1 -0
  114. package/dist/url-state.d.cts +90 -0
  115. package/dist/url-state.d.ts +90 -0
  116. package/dist/url-state.js +199 -0
  117. package/dist/url-state.js.map +1 -0
  118. package/package.json +286 -0
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/text-case.ts
21
+ var text_case_exports = {};
22
+ __export(text_case_exports, {
23
+ DEFAULT_WORD_REPLACEMENTS: () => DEFAULT_WORD_REPLACEMENTS,
24
+ createFormatter: () => createFormatter,
25
+ formatLowerCase: () => formatLowerCase,
26
+ formatNormalCase: () => formatNormalCase,
27
+ formatSentenceCase: () => formatSentenceCase,
28
+ formatText: () => formatText,
29
+ formatTitleCase: () => formatTitleCase,
30
+ formatUpperCase: () => formatUpperCase,
31
+ formatWithoutReplacements: () => formatWithoutReplacements
32
+ });
33
+ module.exports = __toCommonJS(text_case_exports);
34
+ var DEFAULT_WORD_REPLACEMENTS = {
35
+ // Acronyms & initialisms
36
+ "api": "API",
37
+ "apis": "APIs",
38
+ "ui": "UI",
39
+ "ux": "UX",
40
+ "id": "ID",
41
+ "ids": "IDs",
42
+ "qr": "QR",
43
+ "ssr": "SSR",
44
+ "csr": "CSR",
45
+ "ssg": "SSG",
46
+ "isr": "ISR",
47
+ "spa": "SPA",
48
+ "pwa": "PWA",
49
+ "sdk": "SDK",
50
+ "sdks": "SDKs",
51
+ "cli": "CLI",
52
+ "tty": "TTY",
53
+ "repl": "REPL",
54
+ "ci": "CI",
55
+ "cd": "CD",
56
+ "cpu": "CPU",
57
+ "cpus": "CPUs",
58
+ "gpu": "GPU",
59
+ "gpus": "GPUs",
60
+ "ram": "RAM",
61
+ "rom": "ROM",
62
+ "ssd": "SSD",
63
+ "ssds": "SSDs",
64
+ "hdd": "HDD",
65
+ "hdds": "HDDs",
66
+ "kpi": "KPI",
67
+ "kpis": "KPIs",
68
+ "sla": "SLA",
69
+ "slas": "SLAs",
70
+ "slo": "SLO",
71
+ "slos": "SLOs",
72
+ "sli": "SLI",
73
+ "slis": "SLIs",
74
+ "dom": "DOM",
75
+ // Web, formats, protocols
76
+ "url": "URL",
77
+ "urls": "URLs",
78
+ "uri": "URI",
79
+ "uris": "URIs",
80
+ "http": "HTTP",
81
+ "https": "HTTPS",
82
+ "html": "HTML",
83
+ "css": "CSS",
84
+ "json": "JSON",
85
+ "yaml": "YAML",
86
+ "yml": "YML",
87
+ "toml": "TOML",
88
+ "csv": "CSV",
89
+ "pdf": "PDF",
90
+ "tsv": "TSV",
91
+ "jpg": "JPG",
92
+ "jpeg": "JPEG",
93
+ "png": "PNG",
94
+ "gif": "GIF",
95
+ "webp": "WebP",
96
+ "heic": "HEIC",
97
+ "heif": "HEIF",
98
+ "bmp": "BMP",
99
+ "tiff": "TIFF",
100
+ "ico": "ICO",
101
+ "xml": "XML",
102
+ "sql": "SQL",
103
+ "db": "DB",
104
+ "dbs": "DBs",
105
+ "nosql": "NoSQL",
106
+ "graphql": "GraphQL",
107
+ "grpc": "gRPC",
108
+ "rest": "REST",
109
+ "restful": "RESTful",
110
+ "websocket": "WebSocket",
111
+ "websockets": "WebSockets",
112
+ "webrtc": "WebRTC",
113
+ // Networking
114
+ "ip": "IP",
115
+ "ipv4": "IPv4",
116
+ "ipv6": "IPv6",
117
+ "dns": "DNS",
118
+ "dhcp": "DHCP",
119
+ "nat": "NAT",
120
+ "tcp": "TCP",
121
+ "udp": "UDP",
122
+ "icmp": "ICMP",
123
+ "ttl": "TTL",
124
+ "lan": "LAN",
125
+ "wan": "WAN",
126
+ "vlan": "VLAN",
127
+ "cdn": "CDN",
128
+ "ftp": "FTP",
129
+ "ssh": "SSH",
130
+ "tls": "TLS",
131
+ "ssl": "SSL",
132
+ // Security & crypto
133
+ "jwt": "JWT",
134
+ "jws": "JWS",
135
+ "jwe": "JWE",
136
+ "hmac": "HMAC",
137
+ "rsa": "RSA",
138
+ "ecdsa": "ECDSA",
139
+ "aes": "AES",
140
+ "pbkdf2": "PBKDF2",
141
+ "argon2": "Argon2",
142
+ "scrypt": "scrypt",
143
+ "totp": "TOTP",
144
+ "hotp": "HOTP",
145
+ "mfa": "MFA",
146
+ "2fa": "2FA",
147
+ "csrf": "CSRF",
148
+ "xss": "XSS",
149
+ "ssrf": "SSRF",
150
+ "rce": "RCE",
151
+ "dos": "DoS",
152
+ "ddos": "DDoS",
153
+ "mitm": "MITM",
154
+ "csp": "CSP",
155
+ "cors": "CORS",
156
+ "pii": "PII",
157
+ "phi": "PHI",
158
+ "gdpr": "GDPR",
159
+ "ccpa": "CCPA",
160
+ "hipaa": "HIPAA",
161
+ "rfc": "RFC",
162
+ // Platforms, langs, tools (single-token)
163
+ "javascript": "JavaScript",
164
+ "typescript": "TypeScript",
165
+ "jsx": "JSX",
166
+ "tsx": "TSX",
167
+ "node": "Node",
168
+ // (used when tokenized alone)
169
+ "deno": "Deno",
170
+ "bun": "Bun",
171
+ "react": "React",
172
+ "nextjs": "Next.js",
173
+ // if your tokenizer drops dots, keep this
174
+ "nodejs": "Node.js",
175
+ "postgresql": "PostgreSQL",
176
+ "postgres": "Postgres",
177
+ "mysql": "MySQL",
178
+ "sqlite": "SQLite",
179
+ "redis": "Redis",
180
+ "supabase": "Supabase",
181
+ "docker": "Docker",
182
+ "kubernetes": "Kubernetes",
183
+ "k8s": "Kubernetes",
184
+ "helm": "Helm",
185
+ "npm": "npm",
186
+ "pnpm": "pnpm",
187
+ "yarn": "Yarn",
188
+ "eslint": "ESLint",
189
+ "prettier": "Prettier",
190
+ "vite": "Vite",
191
+ "webpack": "Webpack",
192
+ "babel": "Babel",
193
+ // OS & vendors
194
+ "macos": "macOS",
195
+ "ios": "iOS",
196
+ "ipados": "iPadOS",
197
+ "watchos": "watchOS",
198
+ "tvos": "tvOS",
199
+ "windows": "Windows",
200
+ "linux": "Linux",
201
+ "ubuntu": "Ubuntu",
202
+ "github": "GitHub",
203
+ "gitlab": "GitLab",
204
+ "bitbucket": "Bitbucket",
205
+ // Data & analytics
206
+ "etl": "ETL",
207
+ "elt": "ELT",
208
+ "olap": "OLAP",
209
+ "oltp": "OLTP",
210
+ "bi": "BI",
211
+ // Time & locales
212
+ "utc": "UTC",
213
+ "gmt": "GMT",
214
+ "pst": "PST",
215
+ "pdt": "PDT",
216
+ "pt": "PT",
217
+ // Common “small words” to keep lowercase (unless first/last word)
218
+ "or": "or",
219
+ "and": "and",
220
+ "the": "the",
221
+ "of": "of",
222
+ "in": "in",
223
+ "to": "to",
224
+ "with": "with",
225
+ "as": "as",
226
+ "by": "by",
227
+ "for": "for",
228
+ "on": "on",
229
+ "at": "at",
230
+ "up": "up",
231
+ "a": "a",
232
+ "an": "an",
233
+ "is": "is",
234
+ "are": "are",
235
+ "was": "was",
236
+ "were": "were",
237
+ "be": "be",
238
+ "but": "but",
239
+ "nor": "nor",
240
+ "so": "so",
241
+ "yet": "yet",
242
+ "per": "per",
243
+ "via": "via",
244
+ // Latin abbreviations (tokenized as words in some pipelines)
245
+ "eg": "e.g.",
246
+ "ie": "i.e.",
247
+ "etc": "etc.",
248
+ "aka": "aka",
249
+ "vs": "vs.",
250
+ "v": "v.",
251
+ // Client abbreviations
252
+ "CIC": "CIC",
253
+ "AGR": "AGR",
254
+ "AGER": "AGER",
255
+ "DD": "DD",
256
+ "TS": "TS",
257
+ "TM": "TM",
258
+ "arman": "Arman"
259
+ };
260
+ var DEFAULT_OPTIONS = {
261
+ textCase: "title",
262
+ wordReplacements: DEFAULT_WORD_REPLACEMENTS,
263
+ trim: true
264
+ };
265
+ function formatText(text, options = {}) {
266
+ const opts = { ...DEFAULT_OPTIONS, ...options };
267
+ if (!text) return "";
268
+ let normalized = text.replace(/_/g, " ").replace(/-/g, " ").replace(/([a-z])([A-Z])/g, "$1 $2").replace(/\s+/g, " ");
269
+ if (opts.trim) {
270
+ normalized = normalized.trim();
271
+ }
272
+ let caseTransformed = normalized;
273
+ switch (opts.textCase) {
274
+ case "title":
275
+ caseTransformed = normalized.replace(
276
+ /\w\S*/g,
277
+ (word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()
278
+ );
279
+ break;
280
+ case "sentence":
281
+ if (normalized.length > 0) {
282
+ caseTransformed = normalized.charAt(0).toUpperCase() + normalized.slice(1).toLowerCase();
283
+ }
284
+ break;
285
+ case "lower":
286
+ caseTransformed = normalized.toLowerCase();
287
+ break;
288
+ case "upper":
289
+ caseTransformed = normalized.toUpperCase();
290
+ break;
291
+ case "normal":
292
+ default:
293
+ break;
294
+ }
295
+ let result = caseTransformed;
296
+ if (opts.wordReplacements) {
297
+ Object.entries(opts.wordReplacements).forEach(([key, value]) => {
298
+ const regex = new RegExp(`\\b${key}\\b`, "gi");
299
+ result = result.replace(regex, value);
300
+ });
301
+ }
302
+ return result;
303
+ }
304
+ function createFormatter(defaultOptions = {}) {
305
+ return (text, overrideOptions = {}) => formatText(text, { ...defaultOptions, ...overrideOptions });
306
+ }
307
+ var formatTitleCase = createFormatter({ textCase: "title" });
308
+ var formatSentenceCase = createFormatter({ textCase: "sentence" });
309
+ var formatNormalCase = createFormatter({ textCase: "normal" });
310
+ var formatUpperCase = createFormatter({ textCase: "upper" });
311
+ var formatLowerCase = createFormatter({ textCase: "lower" });
312
+ var formatWithoutReplacements = createFormatter({ wordReplacements: {} });
313
+ //# sourceMappingURL=text-case.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/text-case.ts"],"sourcesContent":["/**\n * Text formatting options\n */\nexport type TextCaseOption = 'title' | 'sentence' | 'normal' | 'lower' | 'upper';\n\nexport interface TextFormatterOptions {\n /**\n * Text case to apply after normalization\n * - title: First Letter Of Each Word Capitalized\n * - sentence: First letter of first word capitalized\n * - normal: No case transformation after normalization\n * - lower: all text lowercase\n * - upper: ALL TEXT UPPERCASE\n */\n textCase?: TextCaseOption;\n \n /**\n * Map of words to replace with specific formatting\n * Example: { 'api': 'API', 'ui': 'UI' }\n */\n wordReplacements?: Record<string, string>;\n \n /**\n * Whether to trim the result\n */\n trim?: boolean;\n}\n\n/**\n * Default word replacements for common acronyms and terms\n */\nexport type ReplacementMap = Readonly<Record<string, string>>;\n\nexport const DEFAULT_WORD_REPLACEMENTS: ReplacementMap = {\n // Acronyms & initialisms\n 'api': 'API',\n 'apis': 'APIs',\n 'ui': 'UI',\n 'ux': 'UX',\n 'id': 'ID',\n 'ids': 'IDs',\n 'qr': 'QR',\n 'ssr': 'SSR',\n 'csr': 'CSR',\n 'ssg': 'SSG',\n 'isr': 'ISR',\n 'spa': 'SPA',\n 'pwa': 'PWA',\n 'sdk': 'SDK',\n 'sdks': 'SDKs',\n 'cli': 'CLI',\n 'tty': 'TTY',\n 'repl': 'REPL',\n 'ci': 'CI',\n 'cd': 'CD',\n 'cpu': 'CPU',\n 'cpus': 'CPUs',\n 'gpu': 'GPU',\n 'gpus': 'GPUs',\n 'ram': 'RAM',\n 'rom': 'ROM',\n 'ssd': 'SSD',\n 'ssds': 'SSDs',\n 'hdd': 'HDD',\n 'hdds': 'HDDs',\n 'kpi': 'KPI',\n 'kpis': 'KPIs',\n 'sla': 'SLA',\n 'slas': 'SLAs',\n 'slo': 'SLO',\n 'slos': 'SLOs',\n 'sli': 'SLI',\n 'slis': 'SLIs',\n 'dom': 'DOM',\n\n // Web, formats, protocols\n 'url': 'URL',\n 'urls': 'URLs',\n 'uri': 'URI',\n 'uris': 'URIs',\n 'http': 'HTTP',\n 'https': 'HTTPS',\n 'html': 'HTML',\n 'css': 'CSS',\n 'json': 'JSON',\n 'yaml': 'YAML',\n 'yml': 'YML',\n 'toml': 'TOML',\n 'csv': 'CSV',\n 'pdf': 'PDF',\n 'tsv': 'TSV',\n 'jpg': 'JPG',\n 'jpeg': 'JPEG',\n 'png': 'PNG',\n 'gif': 'GIF',\n 'webp': 'WebP',\n 'heic': 'HEIC',\n 'heif': 'HEIF',\n 'bmp': 'BMP',\n 'tiff': 'TIFF',\n 'ico': 'ICO',\n 'xml': 'XML',\n 'sql': 'SQL',\n 'db': 'DB',\n 'dbs': 'DBs',\n 'nosql': 'NoSQL',\n 'graphql': 'GraphQL',\n 'grpc': 'gRPC',\n 'rest': 'REST',\n 'restful': 'RESTful',\n 'websocket': 'WebSocket',\n 'websockets': 'WebSockets',\n 'webrtc': 'WebRTC',\n\n // Networking\n 'ip': 'IP',\n 'ipv4': 'IPv4',\n 'ipv6': 'IPv6',\n 'dns': 'DNS',\n 'dhcp': 'DHCP',\n 'nat': 'NAT',\n 'tcp': 'TCP',\n 'udp': 'UDP',\n 'icmp': 'ICMP',\n 'ttl': 'TTL',\n 'lan': 'LAN',\n 'wan': 'WAN',\n 'vlan': 'VLAN',\n 'cdn': 'CDN',\n 'ftp': 'FTP',\n 'ssh': 'SSH',\n 'tls': 'TLS',\n 'ssl': 'SSL',\n\n // Security & crypto\n 'jwt': 'JWT',\n 'jws': 'JWS',\n 'jwe': 'JWE',\n 'hmac': 'HMAC',\n 'rsa': 'RSA',\n 'ecdsa': 'ECDSA',\n 'aes': 'AES',\n 'pbkdf2': 'PBKDF2',\n 'argon2': 'Argon2',\n 'scrypt': 'scrypt',\n 'totp': 'TOTP',\n 'hotp': 'HOTP',\n 'mfa': 'MFA',\n '2fa': '2FA',\n 'csrf': 'CSRF',\n 'xss': 'XSS',\n 'ssrf': 'SSRF',\n 'rce': 'RCE',\n 'dos': 'DoS',\n 'ddos': 'DDoS',\n 'mitm': 'MITM',\n 'csp': 'CSP',\n 'cors': 'CORS',\n 'pii': 'PII',\n 'phi': 'PHI',\n 'gdpr': 'GDPR',\n 'ccpa': 'CCPA',\n 'hipaa': 'HIPAA',\n 'rfc': 'RFC',\n\n // Platforms, langs, tools (single-token)\n 'javascript': 'JavaScript',\n 'typescript': 'TypeScript',\n 'jsx': 'JSX',\n 'tsx': 'TSX',\n 'node': 'Node', // (used when tokenized alone)\n 'deno': 'Deno',\n 'bun': 'Bun',\n 'react': 'React',\n 'nextjs': 'Next.js', // if your tokenizer drops dots, keep this\n 'nodejs': 'Node.js',\n 'postgresql': 'PostgreSQL',\n 'postgres': 'Postgres',\n 'mysql': 'MySQL',\n 'sqlite': 'SQLite',\n 'redis': 'Redis',\n 'supabase': 'Supabase',\n 'docker': 'Docker',\n 'kubernetes': 'Kubernetes',\n 'k8s': 'Kubernetes',\n 'helm': 'Helm',\n 'npm': 'npm',\n 'pnpm': 'pnpm',\n 'yarn': 'Yarn',\n 'eslint': 'ESLint',\n 'prettier': 'Prettier',\n 'vite': 'Vite',\n 'webpack': 'Webpack',\n 'babel': 'Babel',\n\n // OS & vendors\n 'macos': 'macOS',\n 'ios': 'iOS',\n 'ipados': 'iPadOS',\n 'watchos': 'watchOS',\n 'tvos': 'tvOS',\n 'windows': 'Windows',\n 'linux': 'Linux',\n 'ubuntu': 'Ubuntu',\n 'github': 'GitHub',\n 'gitlab': 'GitLab',\n 'bitbucket': 'Bitbucket',\n\n // Data & analytics\n 'etl': 'ETL',\n 'elt': 'ELT',\n 'olap': 'OLAP',\n 'oltp': 'OLTP',\n 'bi': 'BI',\n\n // Time & locales\n 'utc': 'UTC',\n 'gmt': 'GMT',\n 'pst': 'PST',\n 'pdt': 'PDT',\n 'pt': 'PT',\n\n // Common “small words” to keep lowercase (unless first/last word)\n 'or': 'or',\n 'and': 'and',\n 'the': 'the',\n 'of': 'of',\n 'in': 'in',\n 'to': 'to',\n 'with': 'with',\n 'as': 'as',\n 'by': 'by',\n 'for': 'for',\n 'on': 'on',\n 'at': 'at',\n 'up': 'up',\n 'a': 'a',\n 'an': 'an',\n 'is': 'is',\n 'are': 'are',\n 'was': 'was',\n 'were': 'were',\n 'be': 'be',\n 'but': 'but',\n 'nor': 'nor',\n 'so': 'so',\n 'yet': 'yet',\n 'per': 'per',\n 'via': 'via',\n\n // Latin abbreviations (tokenized as words in some pipelines)\n 'eg': 'e.g.',\n 'ie': 'i.e.',\n 'etc': 'etc.',\n 'aka': 'aka',\n 'vs': 'vs.',\n 'v': 'v.',\n\n // Client abbreviations\n 'CIC': 'CIC',\n 'AGR': 'AGR',\n 'AGER': 'AGER',\n 'DD': 'DD',\n 'TS': 'TS',\n 'TM': 'TM',\n 'arman': \"Arman\",\n};\n\n/**\n * Default options for text formatting\n */\nconst DEFAULT_OPTIONS: TextFormatterOptions = {\n textCase: 'title',\n wordReplacements: DEFAULT_WORD_REPLACEMENTS,\n trim: true,\n};\n\n/**\n * Formats text by normalizing case styles, applying case transformations,\n * and replacing specific words with custom formatting.\n * \n * @param text The input text to format\n * @param options Formatting options\n * @returns Formatted text\n */\nexport function formatText(text: string, options: TextFormatterOptions = {}): string {\n // Merge provided options with defaults\n const opts = { ...DEFAULT_OPTIONS, ...options };\n \n // Handle empty text\n if (!text) return '';\n \n // Step 1: Normalize various case styles to space-separated words\n let normalized = text\n // Convert snake_case to space-separated\n .replace(/_/g, ' ')\n // Convert kebab-case to space-separated\n .replace(/-/g, ' ')\n // Convert camelCase and PascalCase to space-separated\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n // Replace multiple spaces with a single space\n .replace(/\\s+/g, ' ');\n \n // Step 2: Apply trim if needed\n if (opts.trim) {\n normalized = normalized.trim();\n }\n \n // Step 3: Apply the specified text case\n let caseTransformed = normalized;\n switch (opts.textCase) {\n case 'title':\n caseTransformed = normalized.replace(/\\w\\S*/g, (word) => \n word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n );\n break;\n case 'sentence':\n if (normalized.length > 0) {\n caseTransformed = normalized.charAt(0).toUpperCase() + normalized.slice(1).toLowerCase();\n }\n break;\n case 'lower':\n caseTransformed = normalized.toLowerCase();\n break;\n case 'upper':\n caseTransformed = normalized.toUpperCase();\n break;\n case 'normal':\n default:\n // No case transformation\n break;\n }\n \n // Step 4: Apply word replacements if provided\n let result = caseTransformed;\n if (opts.wordReplacements) {\n Object.entries(opts.wordReplacements).forEach(([key, value]) => {\n // Create a regex that matches the key as a whole word (case insensitive)\n const regex = new RegExp(`\\\\b${key}\\\\b`, 'gi');\n result = result.replace(regex, value);\n });\n }\n \n return result;\n}\n\n/**\n * Creates a pre-configured formatter function with specific options\n * \n * @param defaultOptions Default options for the formatter\n * @returns A formatter function with the specified default options\n */\nexport function createFormatter(defaultOptions: TextFormatterOptions = {}) {\n return (text: string, overrideOptions: TextFormatterOptions = {}) => \n formatText(text, { ...defaultOptions, ...overrideOptions });\n}\n\n// Some pre-configured formatters for common use cases\nexport const formatTitleCase = createFormatter({ textCase: 'title' });\nexport const formatSentenceCase = createFormatter({ textCase: 'sentence' });\nexport const formatNormalCase = createFormatter({ textCase: 'normal' });\nexport const formatUpperCase = createFormatter({ textCase: 'upper' });\nexport const formatLowerCase = createFormatter({ textCase: 'lower' });\nexport const formatWithoutReplacements = createFormatter({ wordReplacements: {} });\n"],"mappings":"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","names":[]}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Text formatting options
3
+ */
4
+ type TextCaseOption = 'title' | 'sentence' | 'normal' | 'lower' | 'upper';
5
+ interface TextFormatterOptions {
6
+ /**
7
+ * Text case to apply after normalization
8
+ * - title: First Letter Of Each Word Capitalized
9
+ * - sentence: First letter of first word capitalized
10
+ * - normal: No case transformation after normalization
11
+ * - lower: all text lowercase
12
+ * - upper: ALL TEXT UPPERCASE
13
+ */
14
+ textCase?: TextCaseOption;
15
+ /**
16
+ * Map of words to replace with specific formatting
17
+ * Example: { 'api': 'API', 'ui': 'UI' }
18
+ */
19
+ wordReplacements?: Record<string, string>;
20
+ /**
21
+ * Whether to trim the result
22
+ */
23
+ trim?: boolean;
24
+ }
25
+ /**
26
+ * Default word replacements for common acronyms and terms
27
+ */
28
+ type ReplacementMap = Readonly<Record<string, string>>;
29
+ declare const DEFAULT_WORD_REPLACEMENTS: ReplacementMap;
30
+ /**
31
+ * Formats text by normalizing case styles, applying case transformations,
32
+ * and replacing specific words with custom formatting.
33
+ *
34
+ * @param text The input text to format
35
+ * @param options Formatting options
36
+ * @returns Formatted text
37
+ */
38
+ declare function formatText(text: string, options?: TextFormatterOptions): string;
39
+ /**
40
+ * Creates a pre-configured formatter function with specific options
41
+ *
42
+ * @param defaultOptions Default options for the formatter
43
+ * @returns A formatter function with the specified default options
44
+ */
45
+ declare function createFormatter(defaultOptions?: TextFormatterOptions): (text: string, overrideOptions?: TextFormatterOptions) => string;
46
+ declare const formatTitleCase: (text: string, overrideOptions?: TextFormatterOptions) => string;
47
+ declare const formatSentenceCase: (text: string, overrideOptions?: TextFormatterOptions) => string;
48
+ declare const formatNormalCase: (text: string, overrideOptions?: TextFormatterOptions) => string;
49
+ declare const formatUpperCase: (text: string, overrideOptions?: TextFormatterOptions) => string;
50
+ declare const formatLowerCase: (text: string, overrideOptions?: TextFormatterOptions) => string;
51
+ declare const formatWithoutReplacements: (text: string, overrideOptions?: TextFormatterOptions) => string;
52
+
53
+ export { DEFAULT_WORD_REPLACEMENTS, type ReplacementMap, type TextCaseOption, type TextFormatterOptions, createFormatter, formatLowerCase, formatNormalCase, formatSentenceCase, formatText, formatTitleCase, formatUpperCase, formatWithoutReplacements };
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Text formatting options
3
+ */
4
+ type TextCaseOption = 'title' | 'sentence' | 'normal' | 'lower' | 'upper';
5
+ interface TextFormatterOptions {
6
+ /**
7
+ * Text case to apply after normalization
8
+ * - title: First Letter Of Each Word Capitalized
9
+ * - sentence: First letter of first word capitalized
10
+ * - normal: No case transformation after normalization
11
+ * - lower: all text lowercase
12
+ * - upper: ALL TEXT UPPERCASE
13
+ */
14
+ textCase?: TextCaseOption;
15
+ /**
16
+ * Map of words to replace with specific formatting
17
+ * Example: { 'api': 'API', 'ui': 'UI' }
18
+ */
19
+ wordReplacements?: Record<string, string>;
20
+ /**
21
+ * Whether to trim the result
22
+ */
23
+ trim?: boolean;
24
+ }
25
+ /**
26
+ * Default word replacements for common acronyms and terms
27
+ */
28
+ type ReplacementMap = Readonly<Record<string, string>>;
29
+ declare const DEFAULT_WORD_REPLACEMENTS: ReplacementMap;
30
+ /**
31
+ * Formats text by normalizing case styles, applying case transformations,
32
+ * and replacing specific words with custom formatting.
33
+ *
34
+ * @param text The input text to format
35
+ * @param options Formatting options
36
+ * @returns Formatted text
37
+ */
38
+ declare function formatText(text: string, options?: TextFormatterOptions): string;
39
+ /**
40
+ * Creates a pre-configured formatter function with specific options
41
+ *
42
+ * @param defaultOptions Default options for the formatter
43
+ * @returns A formatter function with the specified default options
44
+ */
45
+ declare function createFormatter(defaultOptions?: TextFormatterOptions): (text: string, overrideOptions?: TextFormatterOptions) => string;
46
+ declare const formatTitleCase: (text: string, overrideOptions?: TextFormatterOptions) => string;
47
+ declare const formatSentenceCase: (text: string, overrideOptions?: TextFormatterOptions) => string;
48
+ declare const formatNormalCase: (text: string, overrideOptions?: TextFormatterOptions) => string;
49
+ declare const formatUpperCase: (text: string, overrideOptions?: TextFormatterOptions) => string;
50
+ declare const formatLowerCase: (text: string, overrideOptions?: TextFormatterOptions) => string;
51
+ declare const formatWithoutReplacements: (text: string, overrideOptions?: TextFormatterOptions) => string;
52
+
53
+ export { DEFAULT_WORD_REPLACEMENTS, type ReplacementMap, type TextCaseOption, type TextFormatterOptions, createFormatter, formatLowerCase, formatNormalCase, formatSentenceCase, formatText, formatTitleCase, formatUpperCase, formatWithoutReplacements };