metadatafy 1.4.2 → 1.4.3

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.
@@ -1 +1 @@
1
- async function a(e){switch(e.provider){case "supabase":let{SupabaseProvider:r}=await import('./supabase-TGVJDKHE.js');return new r(e);case "custom":let{CustomApiProvider:t}=await import('./custom-api-MPVFDKPU.js');return new t(e);default:throw new Error(`Unknown provider: ${e.provider}`)}}export{a};
1
+ async function a(e){switch(e.provider){case "supabase":let{SupabaseProvider:r}=await import('./supabase-QJ4W7OH5.js');return new r(e);case "custom":let{CustomApiProvider:t}=await import('./custom-api-MPVFDKPU.js');return new t(e);default:throw new Error(`Unknown provider: ${e.provider}`)}}export{a};
@@ -1 +1 @@
1
- 'use strict';async function a(e){switch(e.provider){case "supabase":let{SupabaseProvider:r}=await import('./supabase-HWODZTEI.cjs');return new r(e);case "custom":let{CustomApiProvider:t}=await import('./custom-api-THEHQ4IR.cjs');return new t(e);default:throw new Error(`Unknown provider: ${e.provider}`)}}exports.a=a;
1
+ 'use strict';async function a(e){switch(e.provider){case "supabase":let{SupabaseProvider:r}=await import('./supabase-ODLVMAF6.cjs');return new r(e);case "custom":let{CustomApiProvider:t}=await import('./custom-api-THEHQ4IR.cjs');return new t(e);default:throw new Error(`Unknown provider: ${e.provider}`)}}exports.a=a;
package/dist/cli.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- 'use strict';var chunkXR3EVOXW_cjs=require('./chunk-XR3EVOXW.cjs'),chunkOPGCPTPY_cjs=require('./chunk-OPGCPTPY.cjs'),chunkZAACVJBX_cjs=require('./chunk-ZAACVJBX.cjs'),util=require('util'),f=require('path'),m=require('fs/promises'),_=require('readline');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var f__namespace=/*#__PURE__*/_interopNamespace(f);var m__namespace=/*#__PURE__*/_interopNamespace(m);var ___namespace=/*#__PURE__*/_interopNamespace(_);async function oe(e){let s=[{file:"pnpm-lock.yaml",manager:"pnpm"},{file:"yarn.lock",manager:"yarn"},{file:"package-lock.json",manager:"npm"}];for(let{file:t,manager:a}of s)try{return await m__namespace.access(f__namespace.join(e,t)),a}catch{}return "npm"}async function ae(e){let s={};try{let a=await m__namespace.readFile(f__namespace.join(e,"package.json"),"utf-8");s=JSON.parse(a);}catch{return "unknown"}let t={...s.dependencies||{},...s.devDependencies||{}};return t.next?await S(f__namespace.join(e,"app"))||await S(f__namespace.join(e,"src","app"))?"nextjs-app":"nextjs-pages":t.vite?"vite":t["react-scripts"]?"cra":t.express||t.fastify||t.koa?"node":"unknown"}async function D(e){let[s,t]=await Promise.all([ae(e),oe(e)]),a=await se(f__namespace.join(e,"tsconfig.json")),o=await S(f__namespace.join(e,"src")),n=["app","pages","components","hooks","services","lib","utils","api","src/app","src/pages","src/components","src/hooks","src/services","src/lib","src/utils"],i=[];for(let c of n)await S(f__namespace.join(e,c))&&i.push(c);let r=await S(f__namespace.join(e,"prisma")),u=await S(f__namespace.join(e,"supabase"));return {type:s,packageManager:t,hasTypescript:a,hasSrc:o,existingFolders:i,hasPrisma:r,hasSupabase:u}}async function se(e){try{return (await m__namespace.stat(e)).isFile()}catch{return false}}async function S(e){try{return (await m__namespace.stat(e)).isDirectory()}catch{return false}}function O(e){return {"nextjs-app":"Next.js (App Router)","nextjs-pages":"Next.js (Pages Router)",vite:"Vite + React",cra:"Create React App",node:"Node.js Backend",unknown:"Unknown"}[e]}var x=null;function ne(){return x||(x=___namespace.createInterface({input:process.stdin,output:process.stdout,terminal:false})),x}function b(e){return new Promise(s=>{process.stdout.write(e),ne().once("line",t=>{s(t);});})}function F(){x&&(x.close(),x=null);}async function M(e){let s=[{key:"1",type:"nextjs-app",label:"Next.js (App Router)"},{key:"2",type:"nextjs-pages",label:"Next.js (Pages Router)"},{key:"3",type:"vite",label:"Vite + React"},{key:"4",type:"cra",label:"Create React App"},{key:"5",type:"node",label:"Node.js Backend"}],t=s.findIndex(r=>r.type===e),a=t>=0?s[t].key:"1";console.log(`
2
+ 'use strict';var chunkW2STEULD_cjs=require('./chunk-W2STEULD.cjs'),chunkOPGCPTPY_cjs=require('./chunk-OPGCPTPY.cjs'),chunkZAACVJBX_cjs=require('./chunk-ZAACVJBX.cjs'),util=require('util'),f=require('path'),m=require('fs/promises'),_=require('readline');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var f__namespace=/*#__PURE__*/_interopNamespace(f);var m__namespace=/*#__PURE__*/_interopNamespace(m);var ___namespace=/*#__PURE__*/_interopNamespace(_);async function oe(e){let s=[{file:"pnpm-lock.yaml",manager:"pnpm"},{file:"yarn.lock",manager:"yarn"},{file:"package-lock.json",manager:"npm"}];for(let{file:t,manager:a}of s)try{return await m__namespace.access(f__namespace.join(e,t)),a}catch{}return "npm"}async function ae(e){let s={};try{let a=await m__namespace.readFile(f__namespace.join(e,"package.json"),"utf-8");s=JSON.parse(a);}catch{return "unknown"}let t={...s.dependencies||{},...s.devDependencies||{}};return t.next?await S(f__namespace.join(e,"app"))||await S(f__namespace.join(e,"src","app"))?"nextjs-app":"nextjs-pages":t.vite?"vite":t["react-scripts"]?"cra":t.express||t.fastify||t.koa?"node":"unknown"}async function D(e){let[s,t]=await Promise.all([ae(e),oe(e)]),a=await se(f__namespace.join(e,"tsconfig.json")),o=await S(f__namespace.join(e,"src")),n=["app","pages","components","hooks","services","lib","utils","api","src/app","src/pages","src/components","src/hooks","src/services","src/lib","src/utils"],i=[];for(let c of n)await S(f__namespace.join(e,c))&&i.push(c);let r=await S(f__namespace.join(e,"prisma")),u=await S(f__namespace.join(e,"supabase"));return {type:s,packageManager:t,hasTypescript:a,hasSrc:o,existingFolders:i,hasPrisma:r,hasSupabase:u}}async function se(e){try{return (await m__namespace.stat(e)).isFile()}catch{return false}}async function S(e){try{return (await m__namespace.stat(e)).isDirectory()}catch{return false}}function O(e){return {"nextjs-app":"Next.js (App Router)","nextjs-pages":"Next.js (Pages Router)",vite:"Vite + React",cra:"Create React App",node:"Node.js Backend",unknown:"Unknown"}[e]}var x=null;function ne(){return x||(x=___namespace.createInterface({input:process.stdin,output:process.stdout,terminal:false})),x}function b(e){return new Promise(s=>{process.stdout.write(e),ne().once("line",t=>{s(t);});})}function F(){x&&(x.close(),x=null);}async function M(e){let s=[{key:"1",type:"nextjs-app",label:"Next.js (App Router)"},{key:"2",type:"nextjs-pages",label:"Next.js (Pages Router)"},{key:"3",type:"vite",label:"Vite + React"},{key:"4",type:"cra",label:"Create React App"},{key:"5",type:"node",label:"Node.js Backend"}],t=s.findIndex(r=>r.type===e),a=t>=0?s[t].key:"1";console.log(`
3
3
  \u{1F4E6} \uD504\uB85C\uC81D\uD2B8 \uD0C0\uC785\uC744 \uC120\uD0DD\uD558\uC138\uC694:`),s.forEach(r=>{let c=r.type===e?" (\uAC10\uC9C0\uB428)":"";console.log(` ${r.key}) ${r.label}${c}`);});let n=(await b(`
4
4
  \uC120\uD0DD [${a}]: `)).trim()||a;return s.find(r=>r.key===n)?.type||e}async function B(e){let s=[{key:"1",manager:"npm"},{key:"2",manager:"yarn"},{key:"3",manager:"pnpm"}],t=s.findIndex(r=>r.manager===e),a=t>=0?s[t].key:"1";console.log(`
5
5
  \u{1F4E6} \uD328\uD0A4\uC9C0 \uB9E4\uB2C8\uC800\uB97C \uC120\uD0DD\uD558\uC138\uC694:`),s.forEach(r=>{let c=r.manager===e?" (\uAC10\uC9C0\uB428)":"";console.log(` ${r.key}) ${r.manager}${c}`);});let n=(await b(`
@@ -32,7 +32,7 @@ Supabase \uC5F0\uB3D9 \uC124\uC815? [y/N]: `)).trim().toLowerCase()==="y"}async
32
32
  \uD14C\uC774\uBE14 \uC774\uB984 [project_metadata]: `)).trim()||"project_metadata";console.log(`
33
33
  \u{1F4DD} \uD544\uB4DC \uB9E4\uD551 \uC124\uC815`),console.log(`\uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC800\uC7A5\uD560 \uCEEC\uB7FC \uC774\uB984\uC744 \uC785\uB825\uD558\uC138\uC694.
34
34
  `);let r=await g("\uD504\uB85C\uC81D\uD2B8 ID \uD544\uB4DC [project_id]: "),u=await g("\uBA54\uD0C0\uB370\uC774\uD130 JSON \uD544\uB4DC [metadata]: "),c=await g('\uC0DD\uC131 \uC2DC\uAC04 \uD544\uB4DC (\uBE48\uCE78=created_at, "none"=\uC0AC\uC6A9\uC548\uD568) [created_at]: '),l=await g('\uC5C5\uB370\uC774\uD2B8 \uC2DC\uAC04 \uD544\uB4DC (\uBE48\uCE78=updated_at, "none"=\uC0AC\uC6A9\uC548\uD568) [updated_at]: ');return {config:{enabled:true,provider:"supabase",supabase:{url:a,serviceRoleKey:o,tableName:i,fields:{projectId:r.trim()||"project_id",metadata:u.trim()||"metadata",...c.trim().toLowerCase()!=="none"&&{createdAt:c.trim()||"created_at"},...l.trim().toLowerCase()!=="none"&&{updatedAt:l.trim()||"updated_at"}}}},actualValues:{url:s.trim(),serviceRoleKey:t}}}async function ue(e,s){if(console.log(`
35
- \u{1F50C} \uC5F0\uACB0 \uD14C\uC2A4\uD2B8 \uC911...`),e.provider!=="supabase"||!e.supabase)return true;let t={provider:"supabase",enabled:true,url:s.url,serviceRoleKey:s.serviceRoleKey,tableName:e.supabase.tableName,fields:{projectId:e.supabase.fields.projectId,metadata:e.supabase.fields.metadata,createdAt:e.supabase.fields.createdAt,updatedAt:e.supabase.fields.updatedAt}};try{return await(await chunkXR3EVOXW_cjs.a(t)).testConnection()?(console.log("\u2705 \uC5F0\uACB0 \uC131\uACF5!"),!0):(console.log("\u274C \uC5F0\uACB0 \uC2E4\uD328. \uC124\uC815\uC744 \uD655\uC778\uD574\uC8FC\uC138\uC694."),!1)}catch(a){return console.log(`\u274C \uC5F0\uACB0 \uC624\uB958: ${a instanceof Error?a.message:a}`),false}}async function de(e,s){let t=f__namespace.join(e,"metadata.config.json"),a={};try{let n=await m__namespace.readFile(t,"utf-8");a=JSON.parse(n);}catch{a={projectId:f__namespace.basename(e),include:["src/**/*.{ts,tsx}"],exclude:["**/node_modules/**","**/*.test.{ts,tsx}"],output:{}};}let o=a.output||{};return o.database=s,a.output=o,await m__namespace.writeFile(t,JSON.stringify(a,null,2)),t}function ge(e){if(!e.supabase)return;let{tableName:s,fields:t}=e.supabase;console.log(`
35
+ \u{1F50C} \uC5F0\uACB0 \uD14C\uC2A4\uD2B8 \uC911...`),e.provider!=="supabase"||!e.supabase)return true;let t={provider:"supabase",enabled:true,url:s.url,serviceRoleKey:s.serviceRoleKey,tableName:e.supabase.tableName,fields:{projectId:e.supabase.fields.projectId,metadata:e.supabase.fields.metadata,createdAt:e.supabase.fields.createdAt,updatedAt:e.supabase.fields.updatedAt}};try{return await(await chunkW2STEULD_cjs.a(t)).testConnection()?(console.log("\u2705 \uC5F0\uACB0 \uC131\uACF5!"),!0):(console.log("\u274C \uC5F0\uACB0 \uC2E4\uD328. \uC124\uC815\uC744 \uD655\uC778\uD574\uC8FC\uC138\uC694."),!1)}catch(a){return console.log(`\u274C \uC5F0\uACB0 \uC624\uB958: ${a instanceof Error?a.message:a}`),false}}async function de(e,s){let t=f__namespace.join(e,"metadata.config.json"),a={};try{let n=await m__namespace.readFile(t,"utf-8");a=JSON.parse(n);}catch{a={projectId:f__namespace.basename(e),include:["src/**/*.{ts,tsx}"],exclude:["**/node_modules/**","**/*.test.{ts,tsx}"],output:{}};}let o=a.output||{};return o.database=s,a.output=o,await m__namespace.writeFile(t,JSON.stringify(a,null,2)),t}function ge(e){if(!e.supabase)return;let{tableName:s,fields:t}=e.supabase;console.log(`
36
36
  \u{1F4CB} Supabase\uC5D0\uC11C \uB2E4\uC74C SQL\uB85C \uD14C\uC774\uBE14\uC744 \uC0DD\uC131\uD558\uC138\uC694:
37
37
  `),console.log("```sql"),console.log(`CREATE TABLE ${s} (`),console.log(" id UUID DEFAULT gen_random_uuid() PRIMARY KEY,"),console.log(` ${t.projectId} TEXT UNIQUE NOT NULL,`),console.log(` ${t.metadata} JSONB NOT NULL,`),t.createdAt&&console.log(` ${t.createdAt} TIMESTAMPTZ DEFAULT NOW(),`),t.updatedAt&&console.log(` ${t.updatedAt} TIMESTAMPTZ DEFAULT NOW()`),console.log(");"),console.log(""),console.log("-- RLS \uC815\uCC45 (\uD544\uC694\uC2DC)"),console.log(`ALTER TABLE ${s} ENABLE ROW LEVEL SECURITY;`),console.log("```\n");}function fe(e){if(e.provider!=="supabase"||!e.supabase)return;let{url:s,serviceRoleKey:t}=e.supabase;if(s.startsWith("${")||t.startsWith("${")){if(console.log(`\u{1F510} .env \uD30C\uC77C\uC5D0 \uB2E4\uC74C \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694:
38
38
  `),s.startsWith("${")){let a=s.slice(2,-1);console.log(`${a}=https://your-project.supabase.co`);}if(t.startsWith("${")){let a=t.slice(2,-1);console.log(`${a}=your-service-role-key`);}console.log(`
@@ -93,7 +93,7 @@ Options:
93
93
  `),console.log("\u{1F4CA} Results:"),console.log(` Total files: ${p.stats.totalFiles}`),console.log(` - Routes: ${p.stats.byType.route}`),console.log(` - Components: ${p.stats.byType.component}`),console.log(` - Hooks: ${p.stats.byType.hook}`),console.log(` - Services: ${p.stats.byType.service}`),console.log(` - APIs: ${p.stats.byType.api}`),console.log(` - Tables: ${p.stats.byType.table}`),console.log(` - Utilities: ${p.stats.byType.utility}`),console.log(`
94
94
  \u{1F4C4} Output: ${v}`),p.stats.parseErrors.length>0&&(console.log(`
95
95
  \u26A0\uFE0F Parse errors (${p.stats.parseErrors.length}):`),p.stats.parseErrors.slice(0,5).forEach(h=>{console.log(` - ${h}`);}),p.stats.parseErrors.length>5&&console.log(` ... and ${p.stats.parseErrors.length-5} more`)),console.log("");}catch(l){console.error("\u274C Analysis failed:",l),process.exit(1);}}async function Pe(e){let{values:s}=util.parseArgs({args:e,options:{input:{type:"string",short:"i"},config:{type:"string",short:"c"},verbose:{type:"boolean"},help:{type:"boolean",short:"h"}}});s.help&&(console.log(be),process.exit(0));let t=process.cwd();chunkZAACVJBX_cjs.b(t,s.verbose);let a=s.input||"project-metadata.json",o=s.verbose||false,n={};if(s.config)try{let c=await m__namespace.readFile(s.config,"utf-8");n=JSON.parse(c);}catch{console.error(`Failed to load config file: ${s.config}`),process.exit(1);}else {let c=f__namespace.join(t,"metadata.config.json");try{let l=await m__namespace.readFile(c,"utf-8");n=JSON.parse(l),o&&console.log(`Loaded config from ${c}`);}catch{console.error("\u274C metadata.config.json \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."),console.log(" npx metadatafy init \uC73C\uB85C \uC124\uC815\uC744 \uBA3C\uC800 \uC0DD\uC131\uD558\uC138\uC694."),process.exit(1);}}let i=f__namespace.resolve(t,a),r;try{let c=await m__namespace.readFile(i,"utf-8");r=JSON.parse(c);}catch{console.error(`\u274C \uBA54\uD0C0\uB370\uC774\uD130 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: ${i}`),console.log(" npx metadatafy analyze \uB85C \uBA3C\uC800 \uBD84\uC11D\uC744 \uC2E4\uD589\uD558\uC138\uC694."),process.exit(1);}console.log(`
96
- \u{1F4E4} Uploading metadata from: ${i}`);let u=await te(t,n);u||(console.error("\u274C \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uC124\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."),console.log(" npx metadatafy database-init \uC73C\uB85C \uC124\uC815\uC744 \uCD94\uAC00\uD558\uC138\uC694."),process.exit(1));try{let l=await(await chunkXR3EVOXW_cjs.a(u)).upload(r);l.success?console.log(`
96
+ \u{1F4E4} Uploading metadata from: ${i}`);let u=await te(t,n);u||(console.error("\u274C \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uC124\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."),console.log(" npx metadatafy database-init \uC73C\uB85C \uC124\uC815\uC744 \uCD94\uAC00\uD558\uC138\uC694."),process.exit(1));try{let l=await(await chunkW2STEULD_cjs.a(u)).upload(r);l.success?console.log(`
97
97
  \u2705 ${l.message} (${u.provider})`):(console.error(`
98
98
  \u274C Upload failed: ${l.error}`),process.exit(1));}catch(c){console.error(`
99
99
  \u274C Upload error: ${c instanceof Error?c.message:c}`),process.exit(1);}}async function je(){let e=process.cwd(),s=f__namespace.basename(e);console.log(`
@@ -114,4 +114,4 @@ Options:
114
114
  \u{1F4CB} Supabase\uC5D0\uC11C \uD14C\uC774\uBE14\uC744 \uC0DD\uC131\uD558\uC138\uC694:
115
115
  `),console.log(` CREATE TABLE ${u.tableName} (`),console.log(" id UUID DEFAULT gen_random_uuid() PRIMARY KEY,"),console.log(" project_id TEXT UNIQUE NOT NULL,"),console.log(" metadata JSONB NOT NULL,"),console.log(" created_at TIMESTAMPTZ DEFAULT NOW(),"),console.log(" updated_at TIMESTAMPTZ DEFAULT NOW()"),console.log(` );
116
116
  `));}finally{F();}}function T(e){if(!e||typeof e!="string")return e;if(e.startsWith("${")&&e.endsWith("}")){let s=e.slice(2,-1);return process.env[s]||""}return e}async function te(e,s){let t=s.output?.database;if(!t||!t.enabled)return null;if(t.provider==="supabase"&&t.supabase){let{supabase:a}=t,o=T(a.url),n=T(a.serviceRoleKey);return !o||!n?(console.log("\u26A0\uFE0F Supabase \uD658\uACBD\uBCC0\uC218\uAC00 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."),a.url.startsWith("${")&&console.log(` ${a.url.slice(2,-1)}\uC744(\uB97C) \uC124\uC815\uD574\uC8FC\uC138\uC694.`),a.serviceRoleKey.startsWith("${")&&console.log(` ${a.serviceRoleKey.slice(2,-1)}\uC744(\uB97C) \uC124\uC815\uD574\uC8FC\uC138\uC694.`),null):{provider:"supabase",enabled:true,url:o,serviceRoleKey:n,tableName:a.tableName,fields:{projectId:a.fields.projectId,metadata:a.fields.metadata,createdAt:a.fields.createdAt,updatedAt:a.fields.updatedAt}}}if(t.provider==="custom"&&t.custom){let{custom:a}=t,o={};if(a.headers)for(let[n,i]of Object.entries(a.headers))o[n]=T(i);return {provider:"custom",enabled:true,endpoint:T(a.endpoint),method:a.method,headers:o}}return null}async function ve(e,s,t){let a=await te(process.cwd(),e);if(a){t&&console.log(`
117
- \u{1F5C4}\uFE0F Uploading to ${a.provider}...`);try{let n=await(await chunkXR3EVOXW_cjs.a(a)).upload(s);n.success?console.log(`\u{1F5C4}\uFE0F ${n.message} (${a.provider})`):console.log(`\u26A0\uFE0F Database upload failed: ${n.error}`);}catch(o){console.log(`\u26A0\uFE0F Database upload error: ${o instanceof Error?o.message:o}`);}}}he().catch(e=>{console.error("Fatal error:",e),process.exit(1);});
117
+ \u{1F5C4}\uFE0F Uploading to ${a.provider}...`);try{let n=await(await chunkW2STEULD_cjs.a(a)).upload(s);n.success?console.log(`\u{1F5C4}\uFE0F ${n.message} (${a.provider})`):console.log(`\u26A0\uFE0F Database upload failed: ${n.error}`);}catch(o){console.log(`\u26A0\uFE0F Database upload error: ${o instanceof Error?o.message:o}`);}}}he().catch(e=>{console.error("Fatal error:",e),process.exit(1);});
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {a}from'./chunk-ESZLTJIF.js';import {d,y,z as z$1,A}from'./chunk-UIDEH2GS.js';import {b as b$1}from'./chunk-BJMCLX3M.js';import {parseArgs}from'util';import*as f from'path';import*as m from'fs/promises';import*as _ from'readline';async function oe(e){let s=[{file:"pnpm-lock.yaml",manager:"pnpm"},{file:"yarn.lock",manager:"yarn"},{file:"package-lock.json",manager:"npm"}];for(let{file:t,manager:a}of s)try{return await m.access(f.join(e,t)),a}catch{}return "npm"}async function ae(e){let s={};try{let a=await m.readFile(f.join(e,"package.json"),"utf-8");s=JSON.parse(a);}catch{return "unknown"}let t={...s.dependencies||{},...s.devDependencies||{}};return t.next?await S(f.join(e,"app"))||await S(f.join(e,"src","app"))?"nextjs-app":"nextjs-pages":t.vite?"vite":t["react-scripts"]?"cra":t.express||t.fastify||t.koa?"node":"unknown"}async function D(e){let[s,t]=await Promise.all([ae(e),oe(e)]),a=await se(f.join(e,"tsconfig.json")),o=await S(f.join(e,"src")),n=["app","pages","components","hooks","services","lib","utils","api","src/app","src/pages","src/components","src/hooks","src/services","src/lib","src/utils"],i=[];for(let c of n)await S(f.join(e,c))&&i.push(c);let r=await S(f.join(e,"prisma")),u=await S(f.join(e,"supabase"));return {type:s,packageManager:t,hasTypescript:a,hasSrc:o,existingFolders:i,hasPrisma:r,hasSupabase:u}}async function se(e){try{return (await m.stat(e)).isFile()}catch{return false}}async function S(e){try{return (await m.stat(e)).isDirectory()}catch{return false}}function O(e){return {"nextjs-app":"Next.js (App Router)","nextjs-pages":"Next.js (Pages Router)",vite:"Vite + React",cra:"Create React App",node:"Node.js Backend",unknown:"Unknown"}[e]}var x=null;function ne(){return x||(x=_.createInterface({input:process.stdin,output:process.stdout,terminal:false})),x}function b(e){return new Promise(s=>{process.stdout.write(e),ne().once("line",t=>{s(t);});})}function F(){x&&(x.close(),x=null);}async function M(e){let s=[{key:"1",type:"nextjs-app",label:"Next.js (App Router)"},{key:"2",type:"nextjs-pages",label:"Next.js (Pages Router)"},{key:"3",type:"vite",label:"Vite + React"},{key:"4",type:"cra",label:"Create React App"},{key:"5",type:"node",label:"Node.js Backend"}],t=s.findIndex(r=>r.type===e),a=t>=0?s[t].key:"1";console.log(`
2
+ import {a}from'./chunk-7VGYPCY7.js';import {d,y,z as z$1,A}from'./chunk-UIDEH2GS.js';import {b as b$1}from'./chunk-BJMCLX3M.js';import {parseArgs}from'util';import*as f from'path';import*as m from'fs/promises';import*as _ from'readline';async function oe(e){let s=[{file:"pnpm-lock.yaml",manager:"pnpm"},{file:"yarn.lock",manager:"yarn"},{file:"package-lock.json",manager:"npm"}];for(let{file:t,manager:a}of s)try{return await m.access(f.join(e,t)),a}catch{}return "npm"}async function ae(e){let s={};try{let a=await m.readFile(f.join(e,"package.json"),"utf-8");s=JSON.parse(a);}catch{return "unknown"}let t={...s.dependencies||{},...s.devDependencies||{}};return t.next?await S(f.join(e,"app"))||await S(f.join(e,"src","app"))?"nextjs-app":"nextjs-pages":t.vite?"vite":t["react-scripts"]?"cra":t.express||t.fastify||t.koa?"node":"unknown"}async function D(e){let[s,t]=await Promise.all([ae(e),oe(e)]),a=await se(f.join(e,"tsconfig.json")),o=await S(f.join(e,"src")),n=["app","pages","components","hooks","services","lib","utils","api","src/app","src/pages","src/components","src/hooks","src/services","src/lib","src/utils"],i=[];for(let c of n)await S(f.join(e,c))&&i.push(c);let r=await S(f.join(e,"prisma")),u=await S(f.join(e,"supabase"));return {type:s,packageManager:t,hasTypescript:a,hasSrc:o,existingFolders:i,hasPrisma:r,hasSupabase:u}}async function se(e){try{return (await m.stat(e)).isFile()}catch{return false}}async function S(e){try{return (await m.stat(e)).isDirectory()}catch{return false}}function O(e){return {"nextjs-app":"Next.js (App Router)","nextjs-pages":"Next.js (Pages Router)",vite:"Vite + React",cra:"Create React App",node:"Node.js Backend",unknown:"Unknown"}[e]}var x=null;function ne(){return x||(x=_.createInterface({input:process.stdin,output:process.stdout,terminal:false})),x}function b(e){return new Promise(s=>{process.stdout.write(e),ne().once("line",t=>{s(t);});})}function F(){x&&(x.close(),x=null);}async function M(e){let s=[{key:"1",type:"nextjs-app",label:"Next.js (App Router)"},{key:"2",type:"nextjs-pages",label:"Next.js (Pages Router)"},{key:"3",type:"vite",label:"Vite + React"},{key:"4",type:"cra",label:"Create React App"},{key:"5",type:"node",label:"Node.js Backend"}],t=s.findIndex(r=>r.type===e),a=t>=0?s[t].key:"1";console.log(`
3
3
  \u{1F4E6} \uD504\uB85C\uC81D\uD2B8 \uD0C0\uC785\uC744 \uC120\uD0DD\uD558\uC138\uC694:`),s.forEach(r=>{let c=r.type===e?" (\uAC10\uC9C0\uB428)":"";console.log(` ${r.key}) ${r.label}${c}`);});let n=(await b(`
4
4
  \uC120\uD0DD [${a}]: `)).trim()||a;return s.find(r=>r.key===n)?.type||e}async function B(e){let s=[{key:"1",manager:"npm"},{key:"2",manager:"yarn"},{key:"3",manager:"pnpm"}],t=s.findIndex(r=>r.manager===e),a=t>=0?s[t].key:"1";console.log(`
5
5
  \u{1F4E6} \uD328\uD0A4\uC9C0 \uB9E4\uB2C8\uC800\uB97C \uC120\uD0DD\uD558\uC138\uC694:`),s.forEach(r=>{let c=r.manager===e?" (\uAC10\uC9C0\uB428)":"";console.log(` ${r.key}) ${r.manager}${c}`);});let n=(await b(`
package/dist/next.cjs CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkXR3EVOXW_cjs=require('./chunk-XR3EVOXW.cjs'),chunkOPGCPTPY_cjs=require('./chunk-OPGCPTPY.cjs'),u=require('path'),v=require('fs/promises');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var u__namespace=/*#__PURE__*/_interopNamespace(u);var v__namespace=/*#__PURE__*/_interopNamespace(v);async function m(a,t,e){let i=new chunkOPGCPTPY_cjs.y(a),n=new chunkOPGCPTPY_cjs.z(a),l=a.output.api?.enabled?new chunkOPGCPTPY_cjs.A(a):null;a.verbose&&console.log("[metadata-plugin] Starting analysis...");let r=await i.analyze(t);if(a.output.file?.enabled){let s=u__namespace.resolve(t,a.output.file.path);await n.write(r,s),a.verbose&&console.log(`[metadata-plugin] Wrote metadata to ${s}`);}if(l&&(await l.send(r),a.verbose&&console.log("[metadata-plugin] Sent metadata to API")),e?.url&&e?.serviceRoleKey)try{let s={provider:"supabase",enabled:!0,url:e.url,serviceRoleKey:e.serviceRoleKey,tableName:e.tableName,fields:{projectId:e.fields?.projectId||"project_id",metadata:e.fields?.metadata||"metadata",createdAt:e.fields?.createdAt||"created_at",updatedAt:e.fields?.updatedAt||"updated_at"}},p=await(await chunkXR3EVOXW_cjs.a(s)).upload(r);a.verbose&&(p.success?console.log(`[metadata-plugin] ${p.message} (Supabase)`):console.log(`[metadata-plugin] Supabase upload failed: ${p.error}`));}catch(s){console.error("[metadata-plugin] Supabase upload error:",s);}}function A(a={}){let t=chunkOPGCPTPY_cjs.d(a),e=a.supabase,i=chunkOPGCPTPY_cjs.e(t);if(i.length>0)throw new Error(`[metadata-plugin] Invalid config:
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkW2STEULD_cjs=require('./chunk-W2STEULD.cjs'),chunkOPGCPTPY_cjs=require('./chunk-OPGCPTPY.cjs'),u=require('path'),v=require('fs/promises');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var u__namespace=/*#__PURE__*/_interopNamespace(u);var v__namespace=/*#__PURE__*/_interopNamespace(v);async function m(a,t,e){let i=new chunkOPGCPTPY_cjs.y(a),n=new chunkOPGCPTPY_cjs.z(a),l=a.output.api?.enabled?new chunkOPGCPTPY_cjs.A(a):null;a.verbose&&console.log("[metadata-plugin] Starting analysis...");let r=await i.analyze(t);if(a.output.file?.enabled){let s=u__namespace.resolve(t,a.output.file.path);await n.write(r,s),a.verbose&&console.log(`[metadata-plugin] Wrote metadata to ${s}`);}if(l&&(await l.send(r),a.verbose&&console.log("[metadata-plugin] Sent metadata to API")),e?.url&&e?.serviceRoleKey)try{let s={provider:"supabase",enabled:!0,url:e.url,serviceRoleKey:e.serviceRoleKey,tableName:e.tableName,fields:{projectId:e.fields?.projectId||"project_id",metadata:e.fields?.metadata||"metadata",createdAt:e.fields?.createdAt||"created_at",updatedAt:e.fields?.updatedAt||"updated_at"}},p=await(await chunkW2STEULD_cjs.a(s)).upload(r);a.verbose&&(p.success?console.log(`[metadata-plugin] ${p.message} (Supabase)`):console.log(`[metadata-plugin] Supabase upload failed: ${p.error}`));}catch(s){console.error("[metadata-plugin] Supabase upload error:",s);}}function A(a={}){let t=chunkOPGCPTPY_cjs.d(a),e=a.supabase,i=chunkOPGCPTPY_cjs.e(t);if(i.length>0)throw new Error(`[metadata-plugin] Invalid config:
2
2
  ${i.join(`
3
3
  `)}`);return {name:"metadata-adapter",async onBuildComplete({projectDir:n}){t.verbose&&console.log("[metadata-plugin] Build completed, running analysis..."),await m(t,n,e),t.verbose&&console.log("[metadata-plugin] Analysis completed");}}}async function N(a,t={}){let e=u__namespace.join(a,".metadata-adapter.js"),i=`
4
4
  // Auto-generated by metadatafy
package/dist/next.js CHANGED
@@ -1,4 +1,4 @@
1
- import {a}from'./chunk-ESZLTJIF.js';import {d,e,y,z,A as A$1}from'./chunk-UIDEH2GS.js';import*as u from'path';import*as v from'fs/promises';async function m(a$1,t,e){let i=new y(a$1),n=new z(a$1),l=a$1.output.api?.enabled?new A$1(a$1):null;a$1.verbose&&console.log("[metadata-plugin] Starting analysis...");let r=await i.analyze(t);if(a$1.output.file?.enabled){let s=u.resolve(t,a$1.output.file.path);await n.write(r,s),a$1.verbose&&console.log(`[metadata-plugin] Wrote metadata to ${s}`);}if(l&&(await l.send(r),a$1.verbose&&console.log("[metadata-plugin] Sent metadata to API")),e?.url&&e?.serviceRoleKey)try{let s={provider:"supabase",enabled:!0,url:e.url,serviceRoleKey:e.serviceRoleKey,tableName:e.tableName,fields:{projectId:e.fields?.projectId||"project_id",metadata:e.fields?.metadata||"metadata",createdAt:e.fields?.createdAt||"created_at",updatedAt:e.fields?.updatedAt||"updated_at"}},p=await(await a(s)).upload(r);a$1.verbose&&(p.success?console.log(`[metadata-plugin] ${p.message} (Supabase)`):console.log(`[metadata-plugin] Supabase upload failed: ${p.error}`));}catch(s){console.error("[metadata-plugin] Supabase upload error:",s);}}function A(a={}){let t=d(a),e$1=a.supabase,i=e(t);if(i.length>0)throw new Error(`[metadata-plugin] Invalid config:
1
+ import {a}from'./chunk-7VGYPCY7.js';import {d,e,y,z,A as A$1}from'./chunk-UIDEH2GS.js';import*as u from'path';import*as v from'fs/promises';async function m(a$1,t,e){let i=new y(a$1),n=new z(a$1),l=a$1.output.api?.enabled?new A$1(a$1):null;a$1.verbose&&console.log("[metadata-plugin] Starting analysis...");let r=await i.analyze(t);if(a$1.output.file?.enabled){let s=u.resolve(t,a$1.output.file.path);await n.write(r,s),a$1.verbose&&console.log(`[metadata-plugin] Wrote metadata to ${s}`);}if(l&&(await l.send(r),a$1.verbose&&console.log("[metadata-plugin] Sent metadata to API")),e?.url&&e?.serviceRoleKey)try{let s={provider:"supabase",enabled:!0,url:e.url,serviceRoleKey:e.serviceRoleKey,tableName:e.tableName,fields:{projectId:e.fields?.projectId||"project_id",metadata:e.fields?.metadata||"metadata",createdAt:e.fields?.createdAt||"created_at",updatedAt:e.fields?.updatedAt||"updated_at"}},p=await(await a(s)).upload(r);a$1.verbose&&(p.success?console.log(`[metadata-plugin] ${p.message} (Supabase)`):console.log(`[metadata-plugin] Supabase upload failed: ${p.error}`));}catch(s){console.error("[metadata-plugin] Supabase upload error:",s);}}function A(a={}){let t=d(a),e$1=a.supabase,i=e(t);if(i.length>0)throw new Error(`[metadata-plugin] Invalid config:
2
2
  ${i.join(`
3
3
  `)}`);return {name:"metadata-adapter",async onBuildComplete({projectDir:n}){t.verbose&&console.log("[metadata-plugin] Build completed, running analysis..."),await m(t,n,e$1),t.verbose&&console.log("[metadata-plugin] Analysis completed");}}}async function N(a,t={}){let e=u.join(a,".metadata-adapter.js"),i=`
4
4
  // Auto-generated by metadatafy
@@ -0,0 +1 @@
1
+ 'use strict';var i=class{constructor(e){this.name="Supabase";this.config=e;}getRestUrl(e){return `${this.config.url.replace(/\/$/,"")}/rest/v1/${e}`}getHeaders(){return {apikey:this.config.serviceRoleKey,Authorization:`Bearer ${this.config.serviceRoleKey}`,"Content-Type":"application/json"}}async testConnection(){try{let e=await fetch(this.getRestUrl(this.config.tableName),{method:"GET",headers:{...this.getHeaders(),Range:"0-0"}});return e.ok||e.status===416}catch{return false}}async upload(e){let{tableName:a}=this.config;try{if(await this.deleteByProjectId(e.projectId),e.items.length>0){let t=await this.bulkInsertItems(e.items);if(!t.success)return t}return await this.logAnalysis(e),{success:!0,message:`${e.items.length} files uploaded to ${a}`,data:{itemsCount:e.items.length,stats:e.stats}}}catch(t){return {success:false,message:"Failed to upload metadata",error:t instanceof Error?t.message:String(t)}}}async deleteByProjectId(e){let{tableName:a}=this.config,t=await fetch(`${this.getRestUrl(a)}?project_id=eq.${encodeURIComponent(e)}`,{method:"DELETE",headers:this.getHeaders()});if(!t.ok&&t.status!==404){let r=await t.text();throw new Error(`Failed to delete existing data: ${r}`)}}async bulkInsertItems(e){let{tableName:a}=this.config,t=e.map(s=>({id:s.id,project_id:s.projectId,file_type:s.type,name:s.name,path:s.path,keywords:s.keywords,search_text:s.searchText,calls:s.calls,called_by:s.calledBy,metadata:s.metadata})),n=this.chunkArray(t,500);for(let s of n){let o=await fetch(this.getRestUrl(a),{method:"POST",headers:{...this.getHeaders(),Prefer:"return=minimal"},body:JSON.stringify(s)});if(!o.ok)return {success:false,message:"Failed to insert items",error:await o.text()}}return {success:true,message:"Items inserted successfully"}}async logAnalysis(e){let a="code_analysis_log",t={project_id:e.projectId,total_files:e.stats.totalFiles,stats:e.stats.byType,parse_errors:e.stats.parseErrors,analyzed_at:e.timestamp};try{await fetch(this.getRestUrl(a),{method:"POST",headers:{...this.getHeaders(),Prefer:"return=minimal"},body:JSON.stringify(t)});}catch{}}chunkArray(e,a){let t=[];for(let r=0;r<e.length;r+=a)t.push(e.slice(r,r+a));return t}};exports.SupabaseProvider=i;
@@ -0,0 +1 @@
1
+ var i=class{constructor(e){this.name="Supabase";this.config=e;}getRestUrl(e){return `${this.config.url.replace(/\/$/,"")}/rest/v1/${e}`}getHeaders(){return {apikey:this.config.serviceRoleKey,Authorization:`Bearer ${this.config.serviceRoleKey}`,"Content-Type":"application/json"}}async testConnection(){try{let e=await fetch(this.getRestUrl(this.config.tableName),{method:"GET",headers:{...this.getHeaders(),Range:"0-0"}});return e.ok||e.status===416}catch{return false}}async upload(e){let{tableName:a}=this.config;try{if(await this.deleteByProjectId(e.projectId),e.items.length>0){let t=await this.bulkInsertItems(e.items);if(!t.success)return t}return await this.logAnalysis(e),{success:!0,message:`${e.items.length} files uploaded to ${a}`,data:{itemsCount:e.items.length,stats:e.stats}}}catch(t){return {success:false,message:"Failed to upload metadata",error:t instanceof Error?t.message:String(t)}}}async deleteByProjectId(e){let{tableName:a}=this.config,t=await fetch(`${this.getRestUrl(a)}?project_id=eq.${encodeURIComponent(e)}`,{method:"DELETE",headers:this.getHeaders()});if(!t.ok&&t.status!==404){let r=await t.text();throw new Error(`Failed to delete existing data: ${r}`)}}async bulkInsertItems(e){let{tableName:a}=this.config,t=e.map(s=>({id:s.id,project_id:s.projectId,file_type:s.type,name:s.name,path:s.path,keywords:s.keywords,search_text:s.searchText,calls:s.calls,called_by:s.calledBy,metadata:s.metadata})),n=this.chunkArray(t,500);for(let s of n){let o=await fetch(this.getRestUrl(a),{method:"POST",headers:{...this.getHeaders(),Prefer:"return=minimal"},body:JSON.stringify(s)});if(!o.ok)return {success:false,message:"Failed to insert items",error:await o.text()}}return {success:true,message:"Items inserted successfully"}}async logAnalysis(e){let a="code_analysis_log",t={project_id:e.projectId,total_files:e.stats.totalFiles,stats:e.stats.byType,parse_errors:e.stats.parseErrors,analyzed_at:e.timestamp};try{await fetch(this.getRestUrl(a),{method:"POST",headers:{...this.getHeaders(),Prefer:"return=minimal"},body:JSON.stringify(t)});}catch{}}chunkArray(e,a){let t=[];for(let r=0;r<e.length;r+=a)t.push(e.slice(r,r+a));return t}};export{i as SupabaseProvider};
package/dist/vite.cjs CHANGED
@@ -1,3 +1,3 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkXR3EVOXW_cjs=require('./chunk-XR3EVOXW.cjs'),chunkOPGCPTPY_cjs=require('./chunk-OPGCPTPY.cjs'),v=require('path');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var v__namespace=/*#__PURE__*/_interopNamespace(v);async function P(e,l,t){let s=new chunkOPGCPTPY_cjs.y(e),n=new chunkOPGCPTPY_cjs.z(e),o=e.output.api?.enabled?new chunkOPGCPTPY_cjs.A(e):null;e.verbose&&console.log("[metadata-plugin] Starting analysis...");let a=await s.analyze(l);if(e.output.file?.enabled){let r=v__namespace.resolve(l,e.output.file.path);await n.write(a,r),e.verbose&&console.log(`[metadata-plugin] Wrote metadata to ${r}`);}if(o&&(await o.send(a),e.verbose&&console.log("[metadata-plugin] Sent metadata to API")),t?.url&&t?.serviceRoleKey)try{let r={provider:"supabase",enabled:!0,url:t.url,serviceRoleKey:t.serviceRoleKey,tableName:t.tableName,fields:{projectId:t.fields?.projectId||"project_id",metadata:t.fields?.metadata||"metadata",createdAt:t.fields?.createdAt||"created_at",updatedAt:t.fields?.updatedAt||"updated_at"}},i=await(await chunkXR3EVOXW_cjs.a(r)).upload(a);e.verbose&&(i.success?console.log(`[metadata-plugin] ${i.message} (Supabase)`):console.log(`[metadata-plugin] Supabase upload failed: ${i.error}`));}catch(r){console.error("[metadata-plugin] Supabase upload error:",r);}return a}function b(e={}){let l=chunkOPGCPTPY_cjs.d(e),t=e.runOn||"build",s=e.emitStatsFile!==false,n=e.supabase,o,a=null,r=false;return {name:"vite-metadata-plugin",enforce:"post",configResolved(d){o=d;let i=chunkOPGCPTPY_cjs.e(l);if(i.length>0)throw new Error(`[metadata-plugin] Invalid config:
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkW2STEULD_cjs=require('./chunk-W2STEULD.cjs'),chunkOPGCPTPY_cjs=require('./chunk-OPGCPTPY.cjs'),v=require('path');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var v__namespace=/*#__PURE__*/_interopNamespace(v);async function P(e,l,t){let s=new chunkOPGCPTPY_cjs.y(e),n=new chunkOPGCPTPY_cjs.z(e),o=e.output.api?.enabled?new chunkOPGCPTPY_cjs.A(e):null;e.verbose&&console.log("[metadata-plugin] Starting analysis...");let a=await s.analyze(l);if(e.output.file?.enabled){let r=v__namespace.resolve(l,e.output.file.path);await n.write(a,r),e.verbose&&console.log(`[metadata-plugin] Wrote metadata to ${r}`);}if(o&&(await o.send(a),e.verbose&&console.log("[metadata-plugin] Sent metadata to API")),t?.url&&t?.serviceRoleKey)try{let r={provider:"supabase",enabled:!0,url:t.url,serviceRoleKey:t.serviceRoleKey,tableName:t.tableName,fields:{projectId:t.fields?.projectId||"project_id",metadata:t.fields?.metadata||"metadata",createdAt:t.fields?.createdAt||"created_at",updatedAt:t.fields?.updatedAt||"updated_at"}},i=await(await chunkW2STEULD_cjs.a(r)).upload(a);e.verbose&&(i.success?console.log(`[metadata-plugin] ${i.message} (Supabase)`):console.log(`[metadata-plugin] Supabase upload failed: ${i.error}`));}catch(r){console.error("[metadata-plugin] Supabase upload error:",r);}return a}function b(e={}){let l=chunkOPGCPTPY_cjs.d(e),t=e.runOn||"build",s=e.emitStatsFile!==false,n=e.supabase,o,a=null,r=false;return {name:"vite-metadata-plugin",enforce:"post",configResolved(d){o=d;let i=chunkOPGCPTPY_cjs.e(l);if(i.length>0)throw new Error(`[metadata-plugin] Invalid config:
2
2
  ${i.join(`
3
3
  `)}`)},async buildStart(){if(r||!(t==="both"||t==="build"&&o.command==="build"||t==="serve"&&o.command==="serve"))return;r=true;let i=o.root;try{a=await P(l,i,n);}catch(u){if(console.error("[metadata-plugin] Analysis failed:",u),o.command==="build")throw u}},generateBundle(){!a||!s||this.emitFile({type:"asset",fileName:"metadata-stats.json",source:JSON.stringify(a.stats,null,2)});},closeBundle(){l.verbose&&a&&console.log(`[metadata-plugin] Build complete. Analyzed ${a.stats.totalFiles} files.`),r=false,a=null;}}}exports.default=b;exports.metadataPlugin=b;
package/dist/vite.js CHANGED
@@ -1,3 +1,3 @@
1
- import {a}from'./chunk-ESZLTJIF.js';import {d,e,y,z,A}from'./chunk-UIDEH2GS.js';import*as v from'path';async function P(e,l,t){let s=new y(e),n=new z(e),o=e.output.api?.enabled?new A(e):null;e.verbose&&console.log("[metadata-plugin] Starting analysis...");let a$1=await s.analyze(l);if(e.output.file?.enabled){let r=v.resolve(l,e.output.file.path);await n.write(a$1,r),e.verbose&&console.log(`[metadata-plugin] Wrote metadata to ${r}`);}if(o&&(await o.send(a$1),e.verbose&&console.log("[metadata-plugin] Sent metadata to API")),t?.url&&t?.serviceRoleKey)try{let r={provider:"supabase",enabled:!0,url:t.url,serviceRoleKey:t.serviceRoleKey,tableName:t.tableName,fields:{projectId:t.fields?.projectId||"project_id",metadata:t.fields?.metadata||"metadata",createdAt:t.fields?.createdAt||"created_at",updatedAt:t.fields?.updatedAt||"updated_at"}},i=await(await a(r)).upload(a$1);e.verbose&&(i.success?console.log(`[metadata-plugin] ${i.message} (Supabase)`):console.log(`[metadata-plugin] Supabase upload failed: ${i.error}`));}catch(r){console.error("[metadata-plugin] Supabase upload error:",r);}return a$1}function b(e$1={}){let l=d(e$1),t=e$1.runOn||"build",s=e$1.emitStatsFile!==false,n=e$1.supabase,o,a=null,r=false;return {name:"vite-metadata-plugin",enforce:"post",configResolved(d){o=d;let i=e(l);if(i.length>0)throw new Error(`[metadata-plugin] Invalid config:
1
+ import {a}from'./chunk-7VGYPCY7.js';import {d,e,y,z,A}from'./chunk-UIDEH2GS.js';import*as v from'path';async function P(e,l,t){let s=new y(e),n=new z(e),o=e.output.api?.enabled?new A(e):null;e.verbose&&console.log("[metadata-plugin] Starting analysis...");let a$1=await s.analyze(l);if(e.output.file?.enabled){let r=v.resolve(l,e.output.file.path);await n.write(a$1,r),e.verbose&&console.log(`[metadata-plugin] Wrote metadata to ${r}`);}if(o&&(await o.send(a$1),e.verbose&&console.log("[metadata-plugin] Sent metadata to API")),t?.url&&t?.serviceRoleKey)try{let r={provider:"supabase",enabled:!0,url:t.url,serviceRoleKey:t.serviceRoleKey,tableName:t.tableName,fields:{projectId:t.fields?.projectId||"project_id",metadata:t.fields?.metadata||"metadata",createdAt:t.fields?.createdAt||"created_at",updatedAt:t.fields?.updatedAt||"updated_at"}},i=await(await a(r)).upload(a$1);e.verbose&&(i.success?console.log(`[metadata-plugin] ${i.message} (Supabase)`):console.log(`[metadata-plugin] Supabase upload failed: ${i.error}`));}catch(r){console.error("[metadata-plugin] Supabase upload error:",r);}return a$1}function b(e$1={}){let l=d(e$1),t=e$1.runOn||"build",s=e$1.emitStatsFile!==false,n=e$1.supabase,o,a=null,r=false;return {name:"vite-metadata-plugin",enforce:"post",configResolved(d){o=d;let i=e(l);if(i.length>0)throw new Error(`[metadata-plugin] Invalid config:
2
2
  ${i.join(`
3
3
  `)}`)},async buildStart(){if(r||!(t==="both"||t==="build"&&o.command==="build"||t==="serve"&&o.command==="serve"))return;r=true;let i=o.root;try{a=await P(l,i,n);}catch(u){if(console.error("[metadata-plugin] Analysis failed:",u),o.command==="build")throw u}},generateBundle(){!a||!s||this.emitFile({type:"asset",fileName:"metadata-stats.json",source:JSON.stringify(a.stats,null,2)});},closeBundle(){l.verbose&&a&&console.log(`[metadata-plugin] Build complete. Analyzed ${a.stats.totalFiles} files.`),r=false,a=null;}}}export{b as default,b as metadataPlugin};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "metadatafy",
3
- "version": "1.4.2",
3
+ "version": "1.4.3",
4
4
  "description": "Build plugin for extracting project metadata for ticket analysis system",
5
5
  "type": "module",
6
6
  "exports": {
@@ -1 +0,0 @@
1
- 'use strict';var i=class{constructor(e){this.name="Supabase";this.config=e;}getRestUrl(e){return `${this.config.url.replace(/\/$/,"")}/rest/v1/${e}`}async testConnection(){try{let e=await fetch(this.getRestUrl(this.config.tableName),{method:"GET",headers:{apikey:this.config.serviceRoleKey,Authorization:`Bearer ${this.config.serviceRoleKey}`,"Content-Type":"application/json",Range:"0-0"}});return e.ok||e.status===416}catch{return false}}async upload(e){let{fields:t,tableName:o}=this.config,s=await this.findByProjectId(e.projectId),a={[t.projectId]:e.projectId,[t.metadata]:e};t.updatedAt&&(a[t.updatedAt]=new Date().toISOString()),!s&&t.createdAt&&(a[t.createdAt]=new Date().toISOString());try{let r;if(s?r=await fetch(`${this.getRestUrl(o)}?${t.projectId}=eq.${e.projectId}`,{method:"PATCH",headers:{apikey:this.config.serviceRoleKey,Authorization:`Bearer ${this.config.serviceRoleKey}`,"Content-Type":"application/json",Prefer:"return=representation"},body:JSON.stringify(a)}):r=await fetch(this.getRestUrl(o),{method:"POST",headers:{apikey:this.config.serviceRoleKey,Authorization:`Bearer ${this.config.serviceRoleKey}`,"Content-Type":"application/json",Prefer:"return=representation"},body:JSON.stringify(a)}),!r.ok){let c=await r.text();return {success:!1,message:`Supabase API error: ${r.status}`,error:c}}let n=await r.json();return {success:!0,message:s?"Metadata updated":"Metadata created",data:n}}catch(r){return {success:false,message:"Failed to upload metadata",error:r instanceof Error?r.message:String(r)}}}async findByProjectId(e){try{let{fields:t,tableName:o}=this.config,s=await fetch(`${this.getRestUrl(o)}?${t.projectId}=eq.${e}&limit=1`,{method:"GET",headers:{apikey:this.config.serviceRoleKey,Authorization:`Bearer ${this.config.serviceRoleKey}`,"Content-Type":"application/json"}});if(!s.ok)return null;let a=await s.json();return Array.isArray(a)&&a.length>0?a[0]:null}catch{return null}}};exports.SupabaseProvider=i;
@@ -1 +0,0 @@
1
- var i=class{constructor(e){this.name="Supabase";this.config=e;}getRestUrl(e){return `${this.config.url.replace(/\/$/,"")}/rest/v1/${e}`}async testConnection(){try{let e=await fetch(this.getRestUrl(this.config.tableName),{method:"GET",headers:{apikey:this.config.serviceRoleKey,Authorization:`Bearer ${this.config.serviceRoleKey}`,"Content-Type":"application/json",Range:"0-0"}});return e.ok||e.status===416}catch{return false}}async upload(e){let{fields:t,tableName:o}=this.config,s=await this.findByProjectId(e.projectId),a={[t.projectId]:e.projectId,[t.metadata]:e};t.updatedAt&&(a[t.updatedAt]=new Date().toISOString()),!s&&t.createdAt&&(a[t.createdAt]=new Date().toISOString());try{let r;if(s?r=await fetch(`${this.getRestUrl(o)}?${t.projectId}=eq.${e.projectId}`,{method:"PATCH",headers:{apikey:this.config.serviceRoleKey,Authorization:`Bearer ${this.config.serviceRoleKey}`,"Content-Type":"application/json",Prefer:"return=representation"},body:JSON.stringify(a)}):r=await fetch(this.getRestUrl(o),{method:"POST",headers:{apikey:this.config.serviceRoleKey,Authorization:`Bearer ${this.config.serviceRoleKey}`,"Content-Type":"application/json",Prefer:"return=representation"},body:JSON.stringify(a)}),!r.ok){let c=await r.text();return {success:!1,message:`Supabase API error: ${r.status}`,error:c}}let n=await r.json();return {success:!0,message:s?"Metadata updated":"Metadata created",data:n}}catch(r){return {success:false,message:"Failed to upload metadata",error:r instanceof Error?r.message:String(r)}}}async findByProjectId(e){try{let{fields:t,tableName:o}=this.config,s=await fetch(`${this.getRestUrl(o)}?${t.projectId}=eq.${e}&limit=1`,{method:"GET",headers:{apikey:this.config.serviceRoleKey,Authorization:`Bearer ${this.config.serviceRoleKey}`,"Content-Type":"application/json"}});if(!s.ok)return null;let a=await s.json();return Array.isArray(a)&&a.length>0?a[0]:null}catch{return null}}};export{i as SupabaseProvider};