fractalpop 0.1.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 (77) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +232 -0
  3. package/dist/core.d.ts +110 -0
  4. package/dist/core.js +313 -0
  5. package/dist/full.d.ts +1 -0
  6. package/dist/full.js +356 -0
  7. package/dist/gpu.d.ts +59 -0
  8. package/dist/gpu.js +215 -0
  9. package/dist/index.d.ts +108 -0
  10. package/dist/index.js +523 -0
  11. package/dist/lang/c.d.ts +5 -0
  12. package/dist/lang/c.js +90 -0
  13. package/dist/lang/cpp.d.ts +5 -0
  14. package/dist/lang/cpp.js +138 -0
  15. package/dist/lang/csharp.d.ts +5 -0
  16. package/dist/lang/csharp.js +148 -0
  17. package/dist/lang/css.d.ts +21 -0
  18. package/dist/lang/css.js +164 -0
  19. package/dist/lang/diff.d.ts +30 -0
  20. package/dist/lang/diff.js +18 -0
  21. package/dist/lang/dockerfile.d.ts +5 -0
  22. package/dist/lang/dockerfile.js +60 -0
  23. package/dist/lang/go.d.ts +5 -0
  24. package/dist/lang/go.js +91 -0
  25. package/dist/lang/graphql.d.ts +5 -0
  26. package/dist/lang/graphql.js +66 -0
  27. package/dist/lang/hcl.d.ts +5 -0
  28. package/dist/lang/hcl.js +51 -0
  29. package/dist/lang/html.d.ts +12 -0
  30. package/dist/lang/html.js +168 -0
  31. package/dist/lang/java.d.ts +5 -0
  32. package/dist/lang/java.js +96 -0
  33. package/dist/lang/javascript.d.ts +5 -0
  34. package/dist/lang/javascript.js +0 -0
  35. package/dist/lang/json.d.ts +5 -0
  36. package/dist/lang/json.js +47 -0
  37. package/dist/lang/kotlin.d.ts +5 -0
  38. package/dist/lang/kotlin.js +113 -0
  39. package/dist/lang/lua.d.ts +5 -0
  40. package/dist/lang/lua.js +65 -0
  41. package/dist/lang/markdown.d.ts +12 -0
  42. package/dist/lang/markdown.js +172 -0
  43. package/dist/lang/php.d.ts +5 -0
  44. package/dist/lang/php.js +129 -0
  45. package/dist/lang/plaintext.d.ts +7 -0
  46. package/dist/lang/plaintext.js +3 -0
  47. package/dist/lang/powershell.d.ts +5 -0
  48. package/dist/lang/powershell.js +74 -0
  49. package/dist/lang/python.d.ts +5 -0
  50. package/dist/lang/python.js +75 -0
  51. package/dist/lang/ruby.d.ts +5 -0
  52. package/dist/lang/ruby.js +84 -0
  53. package/dist/lang/rust.d.ts +5 -0
  54. package/dist/lang/rust.js +95 -0
  55. package/dist/lang/sass.d.ts +15 -0
  56. package/dist/lang/sass.js +201 -0
  57. package/dist/lang/scss.d.ts +14 -0
  58. package/dist/lang/scss.js +105 -0
  59. package/dist/lang/shell.d.ts +5 -0
  60. package/dist/lang/shell.js +64 -0
  61. package/dist/lang/sql.d.ts +5 -0
  62. package/dist/lang/sql.js +129 -0
  63. package/dist/lang/svelte.d.ts +15 -0
  64. package/dist/lang/svelte.js +0 -0
  65. package/dist/lang/swift.d.ts +5 -0
  66. package/dist/lang/swift.js +125 -0
  67. package/dist/lang/toml.d.ts +5 -0
  68. package/dist/lang/toml.js +45 -0
  69. package/dist/lang/typescript.d.ts +5 -0
  70. package/dist/lang/typescript.js +0 -0
  71. package/dist/lang/yaml.d.ts +5 -0
  72. package/dist/lang/yaml.js +64 -0
  73. package/dist/lang/zig.d.ts +5 -0
  74. package/dist/lang/zig.js +133 -0
  75. package/dist/lang.d.ts +30 -0
  76. package/dist/lang.js +345 -0
  77. package/package.json +68 -0
package/dist/lang.js ADDED
@@ -0,0 +1,345 @@
1
+ import { config as config$1 } from './lang/typescript.js';
2
+ import { config } from './lang/plaintext.js';
3
+
4
+ /** Mutable registry that maps a canonical language id to its parse config. */ const configRegistry = new Map();
5
+ function registerLanguageConfig(id, config) {
6
+ configRegistry.set(id, config);
7
+ }
8
+ function getLanguageConfig(id) {
9
+ return configRegistry.get(id);
10
+ }
11
+ function resetLanguageConfigRegistry() {
12
+ configRegistry.clear();
13
+ }
14
+
15
+ const languageRegistry = new Map();
16
+ function normalizeLanguageName(value) {
17
+ return value.trim().toLowerCase().replace(/^\./, '');
18
+ }
19
+ function registerName(name, language) {
20
+ const normalized = normalizeLanguageName(name);
21
+ if (!normalized) return;
22
+ const existing = languageRegistry.get(normalized);
23
+ if (existing && existing.id !== language.id) {
24
+ throw new Error(`Language name "${normalized}" is shared by "${existing.id}" and "${language.id}"`);
25
+ }
26
+ languageRegistry.set(normalized, language);
27
+ }
28
+ function registerLanguage(language, config) {
29
+ const names = new Set([
30
+ language.id,
31
+ language.extension,
32
+ ...language.aliases
33
+ ]);
34
+ for (const name of names){
35
+ registerName(name, language);
36
+ }
37
+ if (config) {
38
+ registerLanguageConfig(language.id, config);
39
+ }
40
+ }
41
+ function setDefaults(input) {
42
+ resetLanguageRegistry();
43
+ resetLanguageConfigRegistry();
44
+ if (Array.isArray(input)) {
45
+ for (const language of input){
46
+ registerLanguage(language);
47
+ }
48
+ } else {
49
+ for (const [id, config] of Object.entries(input)){
50
+ const language = allLanguages.find((l)=>l.id === id);
51
+ if (language) {
52
+ registerLanguage(language, config);
53
+ } else {
54
+ registerLanguage({
55
+ id,
56
+ extension: id,
57
+ aliases: []
58
+ }, config);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ const configImporters = {
64
+ javascript: ()=>import('./lang/javascript.js'),
65
+ typescript: ()=>import('./lang/typescript.js'),
66
+ css: ()=>import('./lang/css.js'),
67
+ scss: ()=>import('./lang/scss.js'),
68
+ sass: ()=>import('./lang/sass.js'),
69
+ html: ()=>import('./lang/html.js'),
70
+ svelte: ()=>import('./lang/svelte.js'),
71
+ markdown: ()=>import('./lang/markdown.js'),
72
+ diff: ()=>import('./lang/diff.js'),
73
+ plaintext: ()=>import('./lang/plaintext.js'),
74
+ c: ()=>import('./lang/c.js'),
75
+ cpp: ()=>import('./lang/cpp.js'),
76
+ csharp: ()=>import('./lang/csharp.js'),
77
+ dockerfile: ()=>import('./lang/dockerfile.js'),
78
+ go: ()=>import('./lang/go.js'),
79
+ graphql: ()=>import('./lang/graphql.js'),
80
+ hcl: ()=>import('./lang/hcl.js'),
81
+ java: ()=>import('./lang/java.js'),
82
+ json: ()=>import('./lang/json.js'),
83
+ kotlin: ()=>import('./lang/kotlin.js'),
84
+ lua: ()=>import('./lang/lua.js'),
85
+ php: ()=>import('./lang/php.js'),
86
+ powershell: ()=>import('./lang/powershell.js'),
87
+ python: ()=>import('./lang/python.js'),
88
+ ruby: ()=>import('./lang/ruby.js'),
89
+ rust: ()=>import('./lang/rust.js'),
90
+ shell: ()=>import('./lang/shell.js'),
91
+ sql: ()=>import('./lang/sql.js'),
92
+ swift: ()=>import('./lang/swift.js'),
93
+ toml: ()=>import('./lang/toml.js'),
94
+ yaml: ()=>import('./lang/yaml.js'),
95
+ zig: ()=>import('./lang/zig.js')
96
+ };
97
+ async function importDefaults(ids) {
98
+ await Promise.all(ids.map(async (id)=>{
99
+ const importer = configImporters[id];
100
+ if (!importer) return;
101
+ const { config } = await importer();
102
+ const language = allLanguages.find((l)=>l.id === id);
103
+ if (language) {
104
+ registerLanguage(language, config);
105
+ } else {
106
+ registerLanguage({
107
+ id,
108
+ extension: id,
109
+ aliases: []
110
+ }, config);
111
+ }
112
+ }));
113
+ }
114
+ /** Find canonical language metadata by name, alias, or extension. */ function findLanguage(name) {
115
+ if (typeof name !== 'string') return undefined;
116
+ return languageRegistry.get(normalizeLanguageName(name));
117
+ }
118
+ /** Resolve a name/alias/extension to its canonical language id. */ function lang(name) {
119
+ return findLanguage(name)?.id;
120
+ }
121
+ /** Alias for {@link lang}. */ const canonicalizeLang = lang;
122
+ function getRegisteredLanguages() {
123
+ return [
124
+ ...new Set(languageRegistry.values())
125
+ ];
126
+ }
127
+ function resetLanguageRegistry() {
128
+ languageRegistry.clear();
129
+ }
130
+ const allLanguages = [
131
+ {
132
+ id: 'javascript',
133
+ extension: 'js',
134
+ aliases: [
135
+ 'jsx',
136
+ 'node'
137
+ ]
138
+ },
139
+ {
140
+ id: 'typescript',
141
+ extension: 'ts',
142
+ aliases: [
143
+ 'tsx'
144
+ ]
145
+ },
146
+ {
147
+ id: 'css',
148
+ extension: 'css',
149
+ aliases: []
150
+ },
151
+ {
152
+ id: 'scss',
153
+ extension: 'scss',
154
+ aliases: []
155
+ },
156
+ {
157
+ id: 'sass',
158
+ extension: 'sass',
159
+ aliases: [
160
+ 'indented-sass'
161
+ ]
162
+ },
163
+ {
164
+ id: 'html',
165
+ extension: 'html',
166
+ aliases: [
167
+ 'htm',
168
+ 'xml'
169
+ ]
170
+ },
171
+ {
172
+ id: 'svelte',
173
+ extension: 'svelte',
174
+ aliases: []
175
+ },
176
+ {
177
+ id: 'markdown',
178
+ extension: 'md',
179
+ aliases: [
180
+ 'md',
181
+ 'mdx',
182
+ 'svx'
183
+ ]
184
+ },
185
+ {
186
+ id: 'diff',
187
+ extension: 'diff',
188
+ aliases: [
189
+ 'patch'
190
+ ]
191
+ },
192
+ {
193
+ id: 'plaintext',
194
+ extension: 'txt',
195
+ aliases: [
196
+ 'text',
197
+ 'plain'
198
+ ]
199
+ },
200
+ {
201
+ id: 'c',
202
+ extension: 'c',
203
+ aliases: []
204
+ },
205
+ {
206
+ id: 'cpp',
207
+ extension: 'cpp',
208
+ aliases: [
209
+ 'c++',
210
+ 'cc',
211
+ 'cxx'
212
+ ]
213
+ },
214
+ {
215
+ id: 'csharp',
216
+ extension: 'cs',
217
+ aliases: [
218
+ 'c#',
219
+ 'dotnet'
220
+ ]
221
+ },
222
+ {
223
+ id: 'dockerfile',
224
+ extension: 'dockerfile',
225
+ aliases: [
226
+ 'docker'
227
+ ]
228
+ },
229
+ {
230
+ id: 'go',
231
+ extension: 'go',
232
+ aliases: [
233
+ 'golang'
234
+ ]
235
+ },
236
+ {
237
+ id: 'graphql',
238
+ extension: 'graphql',
239
+ aliases: [
240
+ 'gql'
241
+ ]
242
+ },
243
+ {
244
+ id: 'hcl',
245
+ extension: 'hcl',
246
+ aliases: [
247
+ 'terraform',
248
+ 'tf'
249
+ ]
250
+ },
251
+ {
252
+ id: 'java',
253
+ extension: 'java',
254
+ aliases: []
255
+ },
256
+ {
257
+ id: 'json',
258
+ extension: 'json',
259
+ aliases: [
260
+ 'jsonc'
261
+ ]
262
+ },
263
+ {
264
+ id: 'kotlin',
265
+ extension: 'kt',
266
+ aliases: [
267
+ 'kts'
268
+ ]
269
+ },
270
+ {
271
+ id: 'lua',
272
+ extension: 'lua',
273
+ aliases: []
274
+ },
275
+ {
276
+ id: 'php',
277
+ extension: 'php',
278
+ aliases: []
279
+ },
280
+ {
281
+ id: 'powershell',
282
+ extension: 'ps1',
283
+ aliases: [
284
+ 'pwsh'
285
+ ]
286
+ },
287
+ {
288
+ id: 'python',
289
+ extension: 'py',
290
+ aliases: [
291
+ 'python3'
292
+ ]
293
+ },
294
+ {
295
+ id: 'ruby',
296
+ extension: 'rb',
297
+ aliases: []
298
+ },
299
+ {
300
+ id: 'rust',
301
+ extension: 'rs',
302
+ aliases: []
303
+ },
304
+ {
305
+ id: 'shell',
306
+ extension: 'sh',
307
+ aliases: [
308
+ 'bash',
309
+ 'zsh'
310
+ ]
311
+ },
312
+ {
313
+ id: 'sql',
314
+ extension: 'sql',
315
+ aliases: []
316
+ },
317
+ {
318
+ id: 'swift',
319
+ extension: 'swift',
320
+ aliases: []
321
+ },
322
+ {
323
+ id: 'toml',
324
+ extension: 'toml',
325
+ aliases: []
326
+ },
327
+ {
328
+ id: 'yaml',
329
+ extension: 'yaml',
330
+ aliases: [
331
+ 'yml'
332
+ ]
333
+ },
334
+ {
335
+ id: 'zig',
336
+ extension: 'zig',
337
+ aliases: []
338
+ }
339
+ ];
340
+ setDefaults({
341
+ typescript: config$1,
342
+ plaintext: config
343
+ });
344
+
345
+ export { allLanguages, canonicalizeLang, findLanguage, getLanguageConfig, getRegisteredLanguages, importDefaults, lang, registerLanguage, resetLanguageRegistry, setDefaults };
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "fractalpop",
3
+ "version": "0.1.0",
4
+ "description": "Lightweight, Svelte-first syntax highlighting with first-class indented Sass. Returns HTML without a DOM.",
5
+ "type": "module",
6
+ "sideEffects": [
7
+ "./dist/full.js"
8
+ ],
9
+ "license": "MIT",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/fractalmandala/fractalpop.git",
13
+ "directory": "packages/core"
14
+ },
15
+ "types": "./dist/index.d.ts",
16
+ "main": "./dist/index.js",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "default": "./dist/index.js"
21
+ },
22
+ "./core": {
23
+ "types": "./dist/core.d.ts",
24
+ "default": "./dist/core.js"
25
+ },
26
+ "./lang": {
27
+ "types": "./dist/lang.d.ts",
28
+ "default": "./dist/lang.js"
29
+ },
30
+ "./lang/*": {
31
+ "types": "./dist/lang/*.d.ts",
32
+ "default": "./dist/lang/*.js"
33
+ },
34
+ "./full": {
35
+ "types": "./dist/full.d.ts",
36
+ "default": "./dist/full.js"
37
+ },
38
+ "./gpu": {
39
+ "types": "./dist/gpu.d.ts",
40
+ "default": "./dist/gpu.js"
41
+ }
42
+ },
43
+ "peerDependencies": {
44
+ "gpu-lexer": ">=0.0.2"
45
+ },
46
+ "peerDependenciesMeta": {
47
+ "gpu-lexer": {
48
+ "optional": true
49
+ }
50
+ },
51
+ "files": [
52
+ "dist"
53
+ ],
54
+ "publishConfig": {
55
+ "access": "public"
56
+ },
57
+ "scripts": {
58
+ "build": "bunchee",
59
+ "dev": "bunchee --watch",
60
+ "test": "vitest run",
61
+ "clean": "rm -rf dist"
62
+ },
63
+ "devDependencies": {
64
+ "bunchee": "^6.0.0",
65
+ "typescript": "^5.6.0",
66
+ "vitest": "^4.1.11"
67
+ }
68
+ }