tjs-lang 0.2.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.
- package/CONTEXT.md +594 -0
- package/LICENSE +190 -0
- package/README.md +220 -0
- package/bin/benchmarks.ts +351 -0
- package/bin/dev.ts +205 -0
- package/bin/docs.js +170 -0
- package/bin/install-cursor.sh +71 -0
- package/bin/install-vscode.sh +71 -0
- package/bin/select-local-models.d.ts +1 -0
- package/bin/select-local-models.js +28 -0
- package/bin/select-local-models.ts +31 -0
- package/demo/autocomplete.test.ts +232 -0
- package/demo/docs.json +186 -0
- package/demo/examples.test.ts +598 -0
- package/demo/index.html +91 -0
- package/demo/src/autocomplete.ts +482 -0
- package/demo/src/capabilities.ts +859 -0
- package/demo/src/demo-nav.ts +2097 -0
- package/demo/src/examples.test.ts +161 -0
- package/demo/src/examples.ts +476 -0
- package/demo/src/imports.test.ts +196 -0
- package/demo/src/imports.ts +421 -0
- package/demo/src/index.ts +639 -0
- package/demo/src/module-store.ts +635 -0
- package/demo/src/module-sw.ts +132 -0
- package/demo/src/playground.ts +949 -0
- package/demo/src/service-host.ts +389 -0
- package/demo/src/settings.ts +440 -0
- package/demo/src/style.ts +280 -0
- package/demo/src/tjs-playground.ts +1605 -0
- package/demo/src/ts-examples.ts +478 -0
- package/demo/src/ts-playground.ts +1092 -0
- package/demo/static/favicon.svg +30 -0
- package/demo/static/photo-1.jpg +0 -0
- package/demo/static/photo-2.jpg +0 -0
- package/demo/static/texts/ai-history.txt +9 -0
- package/demo/static/texts/coffee-origins.txt +9 -0
- package/demo/static/texts/renewable-energy.txt +9 -0
- package/dist/index.js +256 -0
- package/dist/index.js.map +37 -0
- package/dist/tjs-batteries.js +4 -0
- package/dist/tjs-batteries.js.map +15 -0
- package/dist/tjs-full.js +256 -0
- package/dist/tjs-full.js.map +37 -0
- package/dist/tjs-transpiler.js +220 -0
- package/dist/tjs-transpiler.js.map +21 -0
- package/dist/tjs-vm.js +4 -0
- package/dist/tjs-vm.js.map +14 -0
- package/docs/CNAME +1 -0
- package/docs/favicon.svg +30 -0
- package/docs/index.html +91 -0
- package/docs/index.js +10468 -0
- package/docs/index.js.map +92 -0
- package/docs/photo-1.jpg +0 -0
- package/docs/photo-1.webp +0 -0
- package/docs/photo-2.jpg +0 -0
- package/docs/photo-2.webp +0 -0
- package/docs/texts/ai-history.txt +9 -0
- package/docs/texts/coffee-origins.txt +9 -0
- package/docs/texts/renewable-energy.txt +9 -0
- package/docs/tjs-lang.svg +31 -0
- package/docs/tosijs-agent.svg +31 -0
- package/editors/README.md +325 -0
- package/editors/ace/ajs-mode.js +328 -0
- package/editors/ace/ajs-mode.ts +269 -0
- package/editors/ajs-syntax.ts +212 -0
- package/editors/build-grammars.ts +510 -0
- package/editors/codemirror/ajs-language.js +287 -0
- package/editors/codemirror/ajs-language.ts +1447 -0
- package/editors/codemirror/autocomplete.test.ts +531 -0
- package/editors/codemirror/component.ts +404 -0
- package/editors/monaco/ajs-monarch.js +243 -0
- package/editors/monaco/ajs-monarch.ts +225 -0
- package/editors/tjs-syntax.ts +115 -0
- package/editors/vscode/language-configuration.json +37 -0
- package/editors/vscode/package.json +65 -0
- package/editors/vscode/syntaxes/ajs-injection.tmLanguage.json +107 -0
- package/editors/vscode/syntaxes/ajs.tmLanguage.json +252 -0
- package/editors/vscode/syntaxes/tjs.tmLanguage.json +333 -0
- package/package.json +83 -0
- package/src/cli/commands/check.ts +41 -0
- package/src/cli/commands/convert.ts +133 -0
- package/src/cli/commands/emit.ts +260 -0
- package/src/cli/commands/run.ts +68 -0
- package/src/cli/commands/test.ts +194 -0
- package/src/cli/commands/types.ts +20 -0
- package/src/cli/create-app.ts +236 -0
- package/src/cli/playground.ts +250 -0
- package/src/cli/tjs.ts +166 -0
- package/src/cli/tjsx.ts +160 -0
- package/tjs-lang.svg +31 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module Cache Service Worker
|
|
3
|
+
*
|
|
4
|
+
* Caches fetched ESM modules from CDN for offline/fast access.
|
|
5
|
+
* Uses Cache API for persistence across page loads.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const CACHE_NAME = 'tjs-modules-v1'
|
|
9
|
+
const CDN_HOSTS = ['esm.sh', 'cdn.skypack.dev', 'unpkg.com', 'cdn.jsdelivr.net']
|
|
10
|
+
|
|
11
|
+
// Install - open cache
|
|
12
|
+
self.addEventListener('install', (event: ExtendableEvent) => {
|
|
13
|
+
event.waitUntil(
|
|
14
|
+
caches.open(CACHE_NAME).then(() => {
|
|
15
|
+
console.log('[SW] Module cache initialized')
|
|
16
|
+
})
|
|
17
|
+
)
|
|
18
|
+
// Activate immediately
|
|
19
|
+
;(self as any).skipWaiting()
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
// Activate - clean old caches
|
|
23
|
+
self.addEventListener('activate', (event: ExtendableEvent) => {
|
|
24
|
+
event.waitUntil(
|
|
25
|
+
caches.keys().then((cacheNames) => {
|
|
26
|
+
return Promise.all(
|
|
27
|
+
cacheNames
|
|
28
|
+
.filter(
|
|
29
|
+
(name) => name.startsWith('tjs-modules-') && name !== CACHE_NAME
|
|
30
|
+
)
|
|
31
|
+
.map((name) => caches.delete(name))
|
|
32
|
+
)
|
|
33
|
+
})
|
|
34
|
+
)
|
|
35
|
+
// Take control of all pages immediately
|
|
36
|
+
;(self as any).clients.claim()
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
// Fetch - intercept CDN requests
|
|
40
|
+
self.addEventListener('fetch', (event: FetchEvent) => {
|
|
41
|
+
const url = new URL(event.request.url)
|
|
42
|
+
|
|
43
|
+
// Only cache CDN module requests
|
|
44
|
+
if (!CDN_HOSTS.some((host) => url.hostname.includes(host))) {
|
|
45
|
+
return
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
event.respondWith(
|
|
49
|
+
caches.open(CACHE_NAME).then(async (cache) => {
|
|
50
|
+
// Check cache first
|
|
51
|
+
const cached = await cache.match(event.request)
|
|
52
|
+
if (cached) {
|
|
53
|
+
console.log('[SW] Cache hit:', url.pathname)
|
|
54
|
+
return cached
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Fetch from network
|
|
58
|
+
console.log('[SW] Fetching:', url.href)
|
|
59
|
+
try {
|
|
60
|
+
const response = await fetch(event.request)
|
|
61
|
+
|
|
62
|
+
// Only cache successful responses
|
|
63
|
+
if (response.ok) {
|
|
64
|
+
// Clone response since it can only be consumed once
|
|
65
|
+
cache.put(event.request, response.clone())
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return response
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.error('[SW] Fetch failed:', url.href, error)
|
|
71
|
+
throw error
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
)
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
// Message handler for cache management
|
|
78
|
+
self.addEventListener('message', (event: MessageEvent) => {
|
|
79
|
+
const { type, payload } = event.data || {}
|
|
80
|
+
|
|
81
|
+
switch (type) {
|
|
82
|
+
case 'CLEAR_CACHE':
|
|
83
|
+
caches.delete(CACHE_NAME).then(() => {
|
|
84
|
+
caches.open(CACHE_NAME)
|
|
85
|
+
event.ports[0]?.postMessage({ success: true })
|
|
86
|
+
})
|
|
87
|
+
break
|
|
88
|
+
|
|
89
|
+
case 'GET_CACHE_STATS':
|
|
90
|
+
caches.open(CACHE_NAME).then(async (cache) => {
|
|
91
|
+
const keys = await cache.keys()
|
|
92
|
+
event.ports[0]?.postMessage({
|
|
93
|
+
size: keys.length,
|
|
94
|
+
entries: keys.map((req) => req.url),
|
|
95
|
+
})
|
|
96
|
+
})
|
|
97
|
+
break
|
|
98
|
+
|
|
99
|
+
case 'PREFETCH':
|
|
100
|
+
// Prefetch a list of modules
|
|
101
|
+
if (Array.isArray(payload?.urls)) {
|
|
102
|
+
caches.open(CACHE_NAME).then(async (cache) => {
|
|
103
|
+
const results = await Promise.allSettled(
|
|
104
|
+
payload.urls.map(async (url: string) => {
|
|
105
|
+
const cached = await cache.match(url)
|
|
106
|
+
if (!cached) {
|
|
107
|
+
const response = await fetch(url)
|
|
108
|
+
if (response.ok) {
|
|
109
|
+
await cache.put(url, response)
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
})
|
|
113
|
+
)
|
|
114
|
+
event.ports[0]?.postMessage({
|
|
115
|
+
success: results.filter((r) => r.status === 'fulfilled').length,
|
|
116
|
+
failed: results.filter((r) => r.status === 'rejected').length,
|
|
117
|
+
})
|
|
118
|
+
})
|
|
119
|
+
}
|
|
120
|
+
break
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
// TypeScript declarations for service worker globals
|
|
125
|
+
declare const self: ServiceWorkerGlobalScope
|
|
126
|
+
interface ExtendableEvent extends Event {
|
|
127
|
+
waitUntil(promise: Promise<any>): void
|
|
128
|
+
}
|
|
129
|
+
interface FetchEvent extends Event {
|
|
130
|
+
request: Request
|
|
131
|
+
respondWith(response: Promise<Response> | Response): void
|
|
132
|
+
}
|