@jogak/core 0.1.0-alpha.8 → 0.1.0-alpha.9.1
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/CHANGELOG.md +31 -0
- package/dist/adapter.d.ts +80 -0
- package/dist/builder-detect.d.ts +9 -0
- package/dist/config.d.ts +21 -8
- package/dist/detect-global-css-CDcuUAYE.cjs +1 -0
- package/dist/detect-global-css-CIVMmgzy.js +33 -0
- package/dist/index.cjs +43 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.mjs +210 -162
- package/dist/preview-entry/protocol.d.ts +29 -0
- package/dist/preview-entry/source.d.ts +30 -0
- package/dist/server.cjs +1 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.mjs +45 -0
- package/dist/types.d.ts +17 -5
- package/dist/vite/index.cjs +118 -0
- package/dist/vite/index.mjs +183 -207
- package/package.json +8 -3
- package/dist/index.js +0 -1
- package/dist/vite/index.js +0 -116
- /package/dist/build/{index.js → index.cjs} +0 -0
- /package/dist/meta/{extractor-child.js → extractor-child.cjs} +0 -0
package/dist/vite/index.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";var Q=Object.create;var N=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var ee=Object.getOwnPropertyNames;var te=Object.getPrototypeOf,re=Object.prototype.hasOwnProperty;var ne=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of ee(t))!re.call(e,a)&&a!==r&&N(e,a,{get:()=>t[a],enumerable:!(o=Z(t,a))||o.enumerable});return e};var oe=(e,t,r)=>(r=e!=null?Q(te(e)):{},ne(t||!e||!e.__esModule?N(r,"default",{value:e,enumerable:!0}):r,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("node:path"),E=require("node:fs"),I=require("node:fs/promises"),D=require("../extractor-client-CiWszHel.cjs"),ae=["@jogak/core","@jogak/react","@jogak/web-components","@jogak/next"];async function B(e){try{const o=await I.stat(e);if(!o.isDirectory())return o.mtimeMs}catch{return 0}let t=0,r;try{r=await I.readdir(e)}catch{return 0}for(const o of r){const a=g.join(e,o);try{const l=await I.stat(a);if(l.isDirectory()){const f=await B(a);f>t&&(t=f)}else l.mtimeMs>t&&(t=l.mtimeMs)}catch{continue}}return t}async function se(e){const t=g.resolve(e.root,"node_modules/.vite/deps");if(!E.existsSync(t))return{purged:!1};const r=g.join(t,"_metadata.json");if(!E.existsSync(r))return{purged:!1};let o;try{o=(await I.stat(r)).mtimeMs}catch(l){return e.logger.warn(`[jogak] cache validation: failed to stat _metadata.json (${l.message})`),{purged:!1}}const a=e.packages??ae;for(const l of a){const f=g.resolve(e.root,"node_modules",l,"dist");if(!E.existsSync(f))continue;let v;try{v=await B(f)}catch(w){e.logger.warn(`[jogak] cache validation: failed to walk ${l}/dist (${w.message})`);continue}if(v>o+1e3)try{return await I.rm(t,{recursive:!0,force:!0}),e.logger.info(`[jogak] vite deps cache invalidated (stale): ${l} dist newer than cache`),{purged:!0,reason:l}}catch(w){return e.logger.warn(`[jogak] cache validation: failed to purge ${t} (${w.message})`),{purged:!1}}}return{purged:!1}}const ie=["src/index.css","src/main.css","src/styles.css","src/styles/globals.css","src/styles/index.css","src/app/globals.css","src/global.css","src/app.css"];function ce(e){for(const t of ie){const r=g.resolve(e,t);if(E.existsSync(r))return[r]}return[]}function J(e,t){if(e===void 0||e===!1)return[];if(e===!0)return ce(t);if(typeof e=="string")return e.length>0?[g.resolve(t,e)]:[];const r=[];for(const o of e)typeof o=="string"&&o.length>0&&r.push(g.resolve(t,o));return r}function le(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/^\s*\/\/.*$/gm,"")}function ue(e){if(E.existsSync(e))try{const t=E.readFileSync(e,"utf8");return JSON.parse(le(t))}catch{return}}function de(e,t,r){if(!e.endsWith("/*")||!t.endsWith("/*"))return;const o=e.slice(0,-2),a=g.resolve(r,t.slice(0,-2));return[o,a]}function ge(e,t){var a,l;const r={},o=new Set([e,g.resolve(t,"tsconfig.app.json")]);for(const f of o){const v=ue(f);if(v===void 0)continue;const w=(a=v.compilerOptions)==null?void 0:a.paths;if(w===void 0)continue;const T=((l=v.compilerOptions)==null?void 0:l.baseUrl)??".",R=g.resolve(g.dirname(f),T);for(const[d,y]of Object.entries(w)){const _=y[0];if(_===void 0)continue;const k=de(d,_,R);if(k===void 0)continue;const[S,b]=k;r[S]===void 0&&(r[S]=b)}}return r}const W="virtual:jogak",O="\0"+W,K="virtual:jogak/entry/",L="\0"+K,H="virtual:jogak/global-css",U="\0"+H,M="virtual:jogak/preview-entry",$="\0"+M,Y="virtual:jogak/preview-global-css",F="\0"+Y;function fe(e){return Buffer.from(e,"utf8").toString("base64url")}function me(e){return Buffer.from(e,"base64url").toString("utf8")}const pe="/__jogak_preview__/index.html";function ye(e){return{name:"vite-plugin-jogak-preview-frame",enforce:"pre",configureServer(t){t.middlewares.use((r,o,a)=>{if(r.url===void 0||r.url.split("?")[0]!==pe||r.method!=="GET")return a();const f=ve();t.transformIndexHtml(r.url,f).then(v=>{o.statusCode=200,o.setHeader("Content-Type","text/html; charset=utf-8"),o.end(v)}).catch(a)})},resolveId(t){if(t===M)return $;if(t===Y)return F},load(t){if(t===F){const r=J(e.globalCss,e.userRoot);return r.length===0?`// [jogak] preview-global-css: no candidates
|
|
2
|
-
export {}
|
|
3
|
-
`:r.map(o=>`import ${JSON.stringify(o)}`).join(`
|
|
4
|
-
`)+`
|
|
5
|
-
export {}
|
|
6
|
-
`}if(t===$)return he}}}function ve(){return`<!doctype html>
|
|
7
|
-
<html lang="en">
|
|
8
|
-
<head>
|
|
9
|
-
<meta charset="UTF-8" />
|
|
10
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
11
|
-
<title>jogak preview</title>
|
|
12
|
-
<style>
|
|
13
|
-
html, body { margin: 0; padding: 0; }
|
|
14
|
-
#jogak-preview-root { display: block; }
|
|
15
|
-
</style>
|
|
16
|
-
</head>
|
|
17
|
-
<body>
|
|
18
|
-
<div id="jogak-preview-root"></div>
|
|
19
|
-
<script type="module" src="/@id/${M}"><\/script>
|
|
20
|
-
</body>
|
|
21
|
-
</html>
|
|
22
|
-
`}const he=`
|
|
23
|
-
import { reactAdapter } from '@jogak/react'
|
|
24
|
-
import { defaultRegistry } from '@jogak/core'
|
|
25
|
-
import 'virtual:jogak'
|
|
26
|
-
import 'virtual:jogak/preview-global-css'
|
|
27
|
-
|
|
28
|
-
const rootEl = document.getElementById('jogak-preview-root')
|
|
29
|
-
if (rootEl === null) throw new Error('[jogak] #jogak-preview-root not found')
|
|
30
|
-
|
|
31
|
-
let currentContainer = null
|
|
32
|
-
let currentArgs = {}
|
|
33
|
-
let currentEntryId = null
|
|
34
|
-
|
|
35
|
-
async function renderEntry(entryId, args) {
|
|
36
|
-
currentEntryId = entryId
|
|
37
|
-
currentArgs = args
|
|
38
|
-
const entry = await defaultRegistry.requestEntry(entryId)
|
|
39
|
-
if (currentContainer === null) {
|
|
40
|
-
currentContainer = document.createElement('div')
|
|
41
|
-
rootEl.replaceChildren(currentContainer)
|
|
42
|
-
}
|
|
43
|
-
reactAdapter.render(entry, args, currentContainer)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function unmount() {
|
|
47
|
-
if (currentContainer !== null) {
|
|
48
|
-
reactAdapter.unmount(currentContainer)
|
|
49
|
-
currentContainer = null
|
|
50
|
-
currentEntryId = null
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
window.addEventListener('message', (event) => {
|
|
55
|
-
const data = event.data
|
|
56
|
-
if (data == null || typeof data !== 'object') return
|
|
57
|
-
if (data.type === 'jogak:setProps') {
|
|
58
|
-
void renderEntry(data.entryId, data.args ?? {}).then(() => {
|
|
59
|
-
window.parent.postMessage({ type: 'jogak:rendered', entryId: data.entryId }, '*')
|
|
60
|
-
}).catch((err) => {
|
|
61
|
-
window.parent.postMessage({ type: 'jogak:error', message: String(err?.message ?? err) }, '*')
|
|
62
|
-
})
|
|
63
|
-
} else if (data.type === 'jogak:unmount') {
|
|
64
|
-
unmount()
|
|
65
|
-
}
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
window.parent.postMessage({ type: 'jogak:ready' }, '*')
|
|
69
|
-
`;function G(e){return{title:e.title,jogakNamesKey:[...e.jogakNames].sort().join("|")}}function we(e,t){return e!==void 0&&e.title===t.title&&e.jogakNamesKey===t.jogakNamesKey}function je(e={}){const{patterns:t=["src/**/*.jogak.ts","src/**/*.jogak.tsx"],codeTheme:r="vsDark"}=e,o=e.cwd,a=e.tsConfigFilePath,l=e.disableCacheValidation===!0,f=e.resolveAlias,v=e.globalCss,w=e.previewIsolation??"iframe",T=e.previewFrame===!0,R=e.userViteUrl??"";let d,y,_;const k=new Map,S=new Map,b=new Map;async function P(){const{glob:n}=await import("glob"),m=_??process.cwd(),s=(await n(t,{cwd:m,absolute:!0})).sort(),u=[];k.clear(),S.clear();for(const i of s){let h="";try{h=await I.readFile(i,"utf8")}catch{continue}let j={},c=null;if(y!==void 0){try{j=await y.extract(i)}catch{j={}}try{c=await y.extractMeta(i)}catch{c=null}}if(c===null)continue;const p=c.title;k.set(p,i),S.set(i,p);const C={id:p,title:c.title,jogakNames:c.jogakNames,autoArgTypes:j,userArgTypes:c.userArgTypes,source:h,filePath:i,metaExtras:c.metaExtras};b.set(i,G(C)),u.push({id:p,filePath:i,meta:C})}return u}return{name:"vite-plugin-jogak",config(){const n=o??process.cwd(),m=a??g.resolve(n,"tsconfig.json"),s=ge(m,n),u={};if(f!==void 0)for(const[h,j]of Object.entries(f))u[h]=g.resolve(n,j);const i={...s,...u};if(Object.keys(i).length!==0)return{resolve:{alias:i}}},async configResolved(n){_=o??n.root,n.command==="serve"&&!l&&await se({root:n.root,logger:{info:s=>n.logger.info(s),warn:s=>n.logger.warn(s)}});const m=a??g.resolve(_,"tsconfig.json");y=E.existsSync(m)?D.createPropsExtractor({tsConfigFilePath:m}):D.createPropsExtractor()},configureServer(n){d=n},buildEnd(){y==null||y.releaseCache()},resolveId(n){if(n===W)return O;if(n===H)return U;if(n.startsWith(K))return"\0"+n},async load(n){if(n===U){const m=_??process.cwd(),s=J(v,m);return s.length===0?`// [jogak] globalCss not configured or no candidates found.
|
|
70
|
-
export {}
|
|
71
|
-
`:`${s.map(i=>`import ${JSON.stringify(i)}`).join(`
|
|
72
|
-
`)}
|
|
73
|
-
export {}
|
|
74
|
-
`}if(n===O){const s=(await P()).map(i=>i.meta),u=T?"":`
|
|
75
|
-
export const _jogakCodeTheme = ${JSON.stringify(r)}
|
|
76
|
-
export const _jogakPreviewIsolation = ${JSON.stringify(w)}
|
|
77
|
-
export const _jogakUserViteUrl = ${JSON.stringify(R)}
|
|
78
|
-
export const _jogakMetas = _metas
|
|
79
|
-
`;return`import { defaultRegistry } from '@jogak/core'
|
|
80
|
-
|
|
81
|
-
const _entryLoader = (slug) =>
|
|
82
|
-
import(/* @vite-ignore */ '/@id/__x00__virtual:jogak/entry/' + slug)
|
|
83
|
-
defaultRegistry.setEntryLoader((id) => {
|
|
84
|
-
const slug = ${_e()}
|
|
85
|
-
return _entryLoader(slug(id))
|
|
86
|
-
})
|
|
87
|
-
|
|
88
|
-
const _metas = ${JSON.stringify(s)}
|
|
89
|
-
|
|
90
|
-
for (const m of _metas) defaultRegistry.registerMeta(m)
|
|
91
|
-
${u}`}if(n.startsWith(L)){const m=n.slice(L.length),s=me(m);let u=k.get(s);return u===void 0&&(await P(),u=k.get(s)),u===void 0?`// [jogak] unknown entry id: ${JSON.stringify(s)}
|
|
92
|
-
export {}
|
|
93
|
-
`:`import * as _user from ${JSON.stringify(u)}
|
|
94
|
-
import { defaultRegistry } from '@jogak/core'
|
|
95
|
-
|
|
96
|
-
const _meta = _user.default
|
|
97
|
-
const _named = { ..._user }
|
|
98
|
-
delete _named.default
|
|
99
|
-
const _jogaks = Object.values(_named).filter(
|
|
100
|
-
(v) => v !== null && typeof v === 'object' && typeof v.name === 'string'
|
|
101
|
-
)
|
|
102
|
-
defaultRegistry.hydrateEntry(${JSON.stringify(s)}, _jogaks, _meta?.component)
|
|
103
|
-
|
|
104
|
-
if (import.meta.hot) {
|
|
105
|
-
import.meta.hot.accept()
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export {}
|
|
109
|
-
`}},async handleHotUpdate({file:n,modules:m}){const s=/\.jogak\.(tsx?|jsx?)$/.test(n),u=/\.(tsx?|jsx?)$/.test(n)&&!s;if(!s&&!u||d===void 0||!s)return;const i=d.moduleGraph.getModuleById(O),h=S.get(n),j=h!==void 0?L+fe(h):void 0,c=j!==void 0?d.moduleGraph.getModuleById(j):void 0;let p=null,C={},A="";if(y!==void 0){try{p=await y.extractMeta(n)}catch{p=null}try{C=await y.extract(n)}catch{C={}}try{A=await I.readFile(n,"utf8")}catch{A=""}}if(p===null){i!==void 0&&d.moduleGraph.invalidateModule(i),c!==void 0&&d.moduleGraph.invalidateModule(c),d.ws.send({type:"full-reload"});return}const V=G(p),X=b.get(n),q=we(X,V);if(b.set(n,V),!q||h===void 0){i!==void 0&&d.moduleGraph.invalidateModule(i),c!==void 0&&d.moduleGraph.invalidateModule(c),d.ws.send({type:"full-reload"});return}const z={id:h,title:p.title,jogakNames:p.jogakNames,autoArgTypes:C,userArgTypes:p.userArgTypes,source:A,filePath:n,metaExtras:p.metaExtras};c!==void 0&&d.moduleGraph.invalidateModule(c),d.ws.send({type:"custom",event:"jogak:meta-update",data:{id:h,meta:z}});const x=[...m];return c!==void 0&&!x.includes(c)&&x.push(c),x}}}function _e(){return`(rawId) => {
|
|
110
|
-
if (typeof Buffer !== 'undefined') return Buffer.from(rawId, 'utf8').toString('base64url')
|
|
111
|
-
// 브라우저 폴백: btoa는 binary string 기준이라 UTF-8을 한번 인코딩해야 한다.
|
|
112
|
-
const enc = new TextEncoder().encode(rawId)
|
|
113
|
-
let bin = ''
|
|
114
|
-
for (let i = 0; i < enc.length; i++) bin += String.fromCharCode(enc[i])
|
|
115
|
-
return btoa(bin).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')
|
|
116
|
-
}`}exports.jogak=je;exports.jogakPreviewFramePlugin=ye;
|
|
File without changes
|
|
File without changes
|