@lunora/codegen 1.0.0-alpha.329 → 1.0.0-alpha.330
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/dist/index.d.mts +29 -1
- package/dist/index.d.ts +29 -1
- package/dist/index.mjs +1 -1
- package/dist/packem_shared/{MUTATORS_FILENAME-Jkk8Zgkb.mjs → MUTATORS_FILENAME-B_I0kkvJ.mjs} +1 -1
- package/dist/packem_shared/{NOTIFY_FILENAME-DiYZjYts.mjs → NOTIFY_FILENAME-DOIxn0Qb.mjs} +1 -1
- package/dist/packem_shared/SCHEMA_SNAPSHOT_FILENAME-DdPW4JCi.mjs +31 -0
- package/dist/packem_shared/{SHAPES_FILENAME-DkBUN9dK.mjs → SHAPES_FILENAME-D7Ifi5Ce.mjs} +1 -1
- package/dist/packem_shared/chain-ZlTHdRo2.mjs +1 -0
- package/dist/packem_shared/classify-procedure-call-Bw5sia-K.mjs +1 -0
- package/dist/packem_shared/{context-property-calls-eO5eiVZG.mjs → context-property-calls-Co_G3ENU.mjs} +1 -1
- package/dist/packem_shared/{context-root-D-pTjHtx.mjs → context-root-BTW5XwVq.mjs} +1 -1
- package/dist/packem_shared/{database-calls-DJgmh0Kv.mjs → database-calls-D-GwIhWO.mjs} +1 -1
- package/dist/packem_shared/{discoverCrons-DBnCama4.mjs → discoverCrons-B2SdRjRO.mjs} +1 -1
- package/dist/packem_shared/{discoverFunctions-CIJja4zp.mjs → discoverFunctions-C9Ra5XXH.mjs} +1 -1
- package/dist/packem_shared/discoverHyperdriveCalls-DfCAjBgd.mjs +1 -0
- package/dist/packem_shared/{discoverInserts-CednbRCq.mjs → discoverInserts-T5ojinqL.mjs} +1 -1
- package/dist/packem_shared/discoverMaskProcedures-DKd9fVDa.mjs +1 -0
- package/dist/packem_shared/{discoverMigrations-C9mLIhGZ.mjs → discoverMigrations-ClgjUkaG.mjs} +1 -1
- package/dist/packem_shared/{discoverNondeterministicCalls-B6FUSWes.mjs → discoverNondeterministicCalls-UCUCyCox.mjs} +1 -1
- package/dist/packem_shared/{discoverQueries-BezURxvr.mjs → discoverQueries-u2XNpxsn.mjs} +1 -1
- package/dist/packem_shared/discoverR2sqlCalls-jz5KouxF.mjs +1 -0
- package/dist/packem_shared/{discoverRlsMetadata-DCgP2H39.mjs → discoverRlsMetadata-D2G3YAoe.mjs} +1 -1
- package/dist/packem_shared/{discoverRlsProcedures-Os1lrVX_.mjs → discoverRlsProcedures-BD8aG1BU.mjs} +1 -1
- package/dist/packem_shared/{discoverStorageRulesMetadata-BTD9Vs5X.mjs → discoverStorageRulesMetadata-C2ceH0ZO.mjs} +1 -1
- package/dist/packem_shared/{emitShard-Ba8hJ_G8.mjs → emitShard-DtfjUgjj.mjs} +1 -1
- package/dist/packem_shared/{exported-procedure-chains-DOFtzPZn.mjs → exported-procedure-chains-CVzkVdq4.mjs} +1 -1
- package/dist/packem_shared/{index-iWQbulvu.mjs → index-BPUxZYM5.mjs} +1 -1
- package/dist/packem_shared/{module-specifiers-WF8iAydP.mjs → module-specifiers-BctA0m_p.mjs} +1 -1
- package/dist/packem_shared/{shard-BtImwCVL.mjs → shard-CsfiXxV0.mjs} +130 -105
- package/package.json +9 -9
- package/dist/packem_shared/SCHEMA_SNAPSHOT_FILENAME-GV-_yNKe.mjs +0 -11
- package/dist/packem_shared/chain-DYBhMcDK.mjs +0 -1
- package/dist/packem_shared/classify-procedure-call-DUBO9bqm.mjs +0 -1
- package/dist/packem_shared/discoverHyperdriveCalls-DVIQ0i_e.mjs +0 -1
- package/dist/packem_shared/discoverMaskProcedures-B4k9BS0s.mjs +0 -1
- package/dist/packem_shared/discoverR2sqlCalls-B9Q6xfi6.mjs +0 -1
package/dist/packem_shared/{discoverFunctions-CIJja4zp.mjs → discoverFunctions-C9Ra5XXH.mjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{LunoraError as d}from"@lunora/errors";import{Node as s,SyntaxKind as T}from"ts-morph";import{d as w}from"./declared-output-Iaar469J.mjs";import{findObjectProperty as m,bindingKeyName as k,listLunoraSourceFiles as C,lunoraRelativePath as I}from"./isTestPath-B81lOULB.mjs";import{e as R,i as F}from"./attribution-hVBriwzy.mjs";import{u as E,p as _,c as A,r as z}from"./unwrap-handler-return-CeaOifqX.mjs";import{b as v,s as V,c as $}from"./classify-procedure-call-DUBO9bqm.mjs";import{r as N,p as O,a as j}from"./parse-validator-IDBKIT7M.mjs";import{s as M}from"./dispatch-namespace-DwTjD7BU.mjs";const D=t=>{const i=t.getArguments()[0];if(!i||!s.isObjectLiteralExpression(i))return"unknown";const e=m(i,"handler");if(!e||!s.isPropertyAssignment(e))return"unknown";const r=e.getInitializer();return!r||!(s.isArrowFunction(r)||s.isFunctionExpression(r))?"unknown":E(r)},W=t=>{const i=t.getArguments()[0];return!i||!(s.isArrowFunction(i)||s.isFunctionExpression(i))?"unknown":E(i)},H=t=>{let i={};for(const e of v(t)){if(e.name!=="input")continue;const r=e.call.getArguments()[0],n=r!==void 0&&s.isExpression(r)?N(r):void 0;n!==void 0&&(i={...O(n),...i})}return i},B=t=>{const i=v(t).find(r=>r.name==="output");if(!i)return;const e=i.call.getArguments()[0];return e&&s.isExpression(e)?_(i.call,()=>j(e)):void 0},L=(t,i)=>{const e=m(t,i);if(e===void 0||!s.isPropertyAssignment(e))return;const r=e.getInitializer();return r!==void 0&&s.isStringLiteral(r)?r.getLiteralValue():void 0},P=(t,i)=>{const e=m(t,i);if(e===void 0||!s.isPropertyAssignment(e))return;const r=e.getInitializer();return r!==void 0&&s.isNumericLiteral(r)?r.getLiteralValue():void 0},K=t=>{const i=m(t,"cache");if(i===void 0||!s.isPropertyAssignment(i))return;const e=i.getInitializer();if(e===void 0||!s.isObjectLiteralExpression(e))return;const r=L(e,"scope"),n=P(e,"maxAge"),o=P(e,"staleWhileRevalidate"),a=L(e,"tag"),l=L(e,"vary"),c={...n===void 0?{}:{maxAge:n},...r==="private"||r==="public"?{scope:r}:{},...o===void 0?{}:{staleWhileRevalidate:o},...a===void 0?{}:{tag:a},...l===void 0?{}:{vary:l}};return Object.keys(c).length===0?void 0:c},U=t=>{if(t===void 0||!s.isObjectLiteralExpression(t))return{};const i=K(t),e=m(t,"rest");return e!==void 0&&s.isPropertyAssignment(e)?{...i===void 0?{}:{cache:i},rest:e.getInitializer()?.getText()==="true"}:i===void 0?{}:{cache:i}},q=t=>{const i=v(t).find(e=>e.name==="expose");return i?U(i.call.getArguments()[0]):void 0},J=t=>{const i=v(t).find(o=>o.name==="x402");if(!i)return;const e=i.call.getArguments()[0];if(e===void 0||!s.isObjectLiteralExpression(e))return{};const r=m(e,"price");if(r===void 0||!s.isPropertyAssignment(r))return{};const n=r.getInitializer();return n===void 0?{}:s.isStringLiteral(n)?{price:n.getLiteralValue()}:s.isNumericLiteral(n)?{price:n.getLiteralValue()}:{}},X=t=>{const i=t.getArguments()[0];if(!i||!s.isObjectLiteralExpression(i))return{};const e=m(i,"args");if(!e||!s.isPropertyAssignment(e))return{};const r=e.getInitializer(),n=r===void 0?void 0:N(r);return n===void 0?{}:O(n)},p=(t,i)=>{throw new d("INTERNAL",`@lunora/codegen: lazy function registry needs literal ${i} in ${t.getSourceFile().getFilePath()}:${String(t.getStartLineNumber())}`)},b=(t,i,e)=>{if(!t||!s.isObjectLiteralExpression(t))return p(i,"metadata objects");const r=new Set;for(const n of t.getProperties()){if(!s.isPropertyAssignment(n))return p(n,"metadata fields without spreads, getters, or shorthand");const o=n.getNameNode(),a=s.isStringLiteral(o)?o.getLiteralValue():o.getText();if(!s.isIdentifier(o)&&!s.isStringLiteral(o)||!e.includes(a)||r.has(a))return p(n,"supported, unique metadata fields");r.add(a)}return t},f=(t,i)=>{const e=t.getProperty(i);return e&&s.isPropertyAssignment(e)?e.getInitializer():void 0},G=t=>{const i=b(t,t,["credentialHeaders","maxAge","scope","staleWhileRevalidate","tag","vary"]),e={};for(const o of["maxAge","staleWhileRevalidate"]){const a=f(i,o);if(!(a===void 0&&o!=="maxAge")){if(!a||!s.isNumericLiteral(a))return p(t,`cache.${o}`);e[o]=a.getLiteralValue()}}const r=f(i,"scope");if(!r||!s.isStringLiteral(r)||!["private","public"].includes(r.getLiteralValue()))return p(t,"cache.scope");e.scope=r.getLiteralValue();for(const o of["tag","vary"]){const a=f(i,o);if(a!==void 0){if(!s.isStringLiteral(a))return p(a,`cache.${o}`);e[o]=a.getLiteralValue()}}const n=f(i,"credentialHeaders");if(n!==void 0){if(!s.isArrayLiteralExpression(n))return p(n,"cache.credentialHeaders");e.credentialHeaders=n.getElements().map(o=>s.isStringLiteral(o)?o.getLiteralValue():p(o,"cache.credentialHeaders string entries"))}return e},Q=t=>{const i=b(t.getArguments()[0],t,["rest","cache"]),e=f(i,"rest"),r=f(i,"cache");return e!==void 0&&!s.isTrueLiteral(e)&&!s.isFalseLiteral(e)?p(e,".expose({ rest })"):{...e?{rest:s.isTrueLiteral(e)}:{},...r?{cache:G(r)}:{}}},Y=t=>{const i=b(t.getArguments()[0],t,["price"]),e=f(i,"price");return!e||!s.isStringLiteral(e)&&!s.isNumericLiteral(e)?p(t,"`.x402({ price })` value"):{price:e.getLiteralValue()}},Z=t=>{const{factory:i,steps:e}=V(t);if(!i)return p(t,"metadata from a resolvable Lunora factory root");const r={visibility:i.startsWith("internal")?"internal":"public"};for(const{call:n,name:o}of e){if(!["expose","input","meta","output","use","x402"].includes(o))return p(n,`known builder modifiers, got .${o}()`);o==="expose"&&r.expose===void 0&&(r.expose=Q(n)),o==="x402"&&r.x402===void 0&&(r.x402=Y(n))}return r},ee=8,h=(t,i=0)=>{if(i>ee)return;if(s.isCallExpression(t))return t;if(s.isParenthesizedExpression(t)||s.isAsExpression(t)||s.isSatisfiesExpression(t)||s.isNonNullExpression(t))return h(t.getExpression(),i+1);if(!s.isIdentifier(t)&&!s.isPropertyAccessExpression(t))return;const e=t.getSymbol()?.getValueDeclaration();return e?x(e,i+1):void 0},x=(t,i)=>{if(s.isVariableDeclaration(t)||s.isPropertyAssignment(t)){const e=t.getInitializer();return e?h(e,i):void 0}if(s.isShorthandPropertyAssignment(t)){const e=t.getValueSymbol()?.getValueDeclaration();return e?x(e,i+1):void 0}if(s.isBindingElement(t)){const e=k(t),o=t.getFirstAncestorByKind(T.VariableDeclaration)?.getInitializer()?.getType().getProperty(e)?.getValueDeclaration();return o?x(o,i+1):void 0}},te=(t,i=()=>!0)=>{const e=t.getNameNode();if(s.isObjectBindingPattern(e)){const o=[];for(const a of e.getElements().filter(l=>i(l.getName()))){const l=h(a.getNameNode());l&&o.push([a.getName(),l])}return o}if(!i(t.getName()))return[];const r=t.getInitializer(),n=r&&(s.isCallExpression(r)?r:h(r));return n?[[t.getName(),n]]:[]},ie=t=>{const i=t.getArguments()[0],e=s.isObjectLiteralExpression(i)?i.getProperty("name"):void 0,r=s.isPropertyAssignment(e)?e.getInitializer():void 0;if(!r||!s.isStringLiteral(r))throw new d("ROOM_NAME_NOT_LITERAL",'defineRoom needs a string-literal `name` (e.g. `defineRoom({ name: "chat", … })`) so codegen can type its reference.');return r.getLiteralValue()},re=t=>t.startsWith("/")&&new URL(t,"https://lunora.invalid").pathname===t&&t!=="/_lunora"&&!t.startsWith("/_lunora/"),ne=t=>{const i=t.getArguments()[0];if(!s.isObjectLiteralExpression(i))throw new d("SOCKET_PATH_NOT_LITERAL","defineWebSocket needs an object-literal options argument so codegen can read its `path` and `auth`.");const e=i.getProperty("path"),r=s.isPropertyAssignment(e)?e.getInitializer():void 0;if(!r||!s.isStringLiteral(r))throw new d("SOCKET_PATH_NOT_LITERAL",'defineWebSocket needs a string-literal `path` (e.g. `defineWebSocket({ path: "/chat", … })`) so codegen can route its upgrade.');const n=r.getLiteralValue();if(!re(n))throw new d("SOCKET_PATH_INVALID",`defineWebSocket path "${n}" must be a plain URL path starting with "/" (no "?", "#", ".." or unencoded characters) and not under "/_lunora".`);if(i.getProperties().some(c=>s.isSpreadAssignment(c)||s.isPropertyAssignment(c)&&s.isComputedPropertyName(c.getNameNode())))throw new d("SOCKET_AUTH_NOT_LITERAL","defineWebSocket cannot spread its options or use a computed key: codegen must read `auth` as a literal `auth: true` or `auth: false`.");const a=i.getProperty("auth");if(a===void 0)return{auth:!1,path:n};const l=s.isPropertyAssignment(a)?a.getInitializer():void 0;if(l===void 0||!(s.isTrueLiteral(l)||s.isFalseLiteral(l)))throw new d("SOCKET_AUTH_NOT_LITERAL","defineWebSocket needs a literal `auth: true` or `auth: false`, so codegen can read whether the route requires a session. A shorthand or a variable is not read.");return{auth:s.isTrueLiteral(l),path:n}},se=(t,i,e,r)=>{const n=r?Z(i):void 0,o=r?n?.expose:q(i),a=r?n?.x402:J(i),l=A(()=>B(i)),c=A(()=>W(t)),u=w({kind:e.kind,output:l.value});return z(u?l.erased:c.erased),{args:H(i),...o?{expose:o}:{},...a?{x402:a}:{},...e.adminOnly?{adminOnly:!0}:{},kind:e.kind,...l.value?{output:l.value}:{},returnType:c.value,visibility:n?.visibility==="internal"||e.visibility==="internal"?"internal":"public"}},oe=(t,i)=>{const e=$(t,i);if(!e)return;if(e.channel)return{args:{},channel:{kind:e.channel,name:ie(t)},kind:e.kind,returnType:"void",visibility:e.visibility};const{receiver:r}=e;return r?se(t,r,e,i):e.lifecycle?{args:{},kind:e.kind,lifecycle:e.lifecycle,returnType:"void",...e.lifecycle==="socket"?{socket:{...ne(t),origin:`${t.getSourceFile().getFilePath()}@${String(t.getStart())}`}}:{},visibility:e.visibility}:{args:X(t),kind:e.kind,returnType:D(t),visibility:e.visibility}},S=(t,i,e,r)=>{const n=oe(t,r);if(n)return{args:n.args,exportName:i,filePath:e,kind:n.kind,returnType:n.returnType,...n.output?{output:n.output}:{},visibility:n.visibility,...n.adminOnly?{adminOnly:!0}:{},...n.expose?{expose:n.expose}:{},...n.x402?{x402:n.x402}:{},...n.lifecycle?{lifecycle:n.lifecycle}:{},...n.channel?{channel:n.channel}:{},...n.socket?{socket:n.socket}:{}}},ae=(t,i,e)=>{const r=[];for(const n of t.getExportAssignments()){if(n.isExportEquals())continue;const o=h(n.getExpression()),a=o?S(o,"default",i,e):void 0;o&&a&&r.push({call:o,entry:a})}return r},ce=(t,i,e)=>{const r=R(t),n=new Map,o=(c,u)=>{if(c?.channel?.kind!=="room")return;const g=n.get(c.channel.name);if(g!==void 0&&g!==u)throw new d("DUPLICATE_ROOM_NAME",`Duplicate room name "${c.channel.name}" in ${i}: two defineRoom calls share it. Room names must be unique.`);n.set(c.channel.name,u)},a=t.getVariableStatements().flatMap(c=>c.getDeclarations()).flatMap(c=>te(c,u=>r.has(u))).flatMap(([c,u])=>(r.get(c)??[]).filter(g=>F(g)).flatMap(g=>{const y=S(u,g,i,e);return o(y,u),y?[y]:[]})),l=new Set(a.map(c=>c.exportName));for(const{call:c,entry:u}of ae(t,i,e))l.has(u.exportName)||(o(u,c),a.push(u));return a},le=t=>{const i=new Map;for(const e of t){if(e.channel?.kind!=="room")continue;const r=i.get(e.channel.name);if(r!==void 0&&r.file!==e.filePath)throw new d("DUPLICATE_ROOM_NAME",`Duplicate room name "${e.channel.name}": defined in ${r.origin} and ${e.filePath}:${e.exportName}. Room names must be unique across the project.`);r===void 0&&i.set(e.channel.name,{file:e.filePath,origin:`${e.filePath}:${e.exportName}`})}},ue=t=>{const i=new Map;for(const e of t){const r=M(e.filePath),n=i.get(r);if(n&&n!==e.filePath)throw Object.assign(new Error(`Namespace collision: "${n}" and "${e.filePath}" both resolve to "${r}". Rename one of the files so the JS-identifier-sanitized names differ. (note: case-insensitive filesystems may also cause this — \`foo\` and \`FOO\` map to the same identifier)`),{code:"NAMESPACE_COLLISION",name:"LunoraError",paths:[n,e.filePath],status:500});i.set(r,e.filePath)}},xe=(t,i,e={})=>{const r=C(i),n=[];for(const o of r){const a=t.getSourceFile(o)??t.addSourceFileAtPath(o),l=I(i,o);n.push(...ce(a,l,e.lazyFunctions===!0))}return n.sort((o,a)=>`${o.filePath}:${o.exportName}`.localeCompare(`${a.filePath}:${a.exportName}`)),ue(n),le(n),n};export{xe as default};
|
|
1
|
+
import{LunoraError as d}from"@lunora/errors";import{Node as s,SyntaxKind as T}from"ts-morph";import{d as w}from"./declared-output-Iaar469J.mjs";import{findObjectProperty as m,bindingKeyName as k,listLunoraSourceFiles as C,lunoraRelativePath as I}from"./isTestPath-B81lOULB.mjs";import{e as R,i as F}from"./attribution-hVBriwzy.mjs";import{u as E,p as _,c as A,r as z}from"./unwrap-handler-return-CeaOifqX.mjs";import{b as v,s as V,c as $}from"./classify-procedure-call-Bw5sia-K.mjs";import{r as N,p as O,a as j}from"./parse-validator-IDBKIT7M.mjs";import{s as M}from"./dispatch-namespace-DwTjD7BU.mjs";const D=t=>{const i=t.getArguments()[0];if(!i||!s.isObjectLiteralExpression(i))return"unknown";const e=m(i,"handler");if(!e||!s.isPropertyAssignment(e))return"unknown";const r=e.getInitializer();return!r||!(s.isArrowFunction(r)||s.isFunctionExpression(r))?"unknown":E(r)},W=t=>{const i=t.getArguments()[0];return!i||!(s.isArrowFunction(i)||s.isFunctionExpression(i))?"unknown":E(i)},H=t=>{let i={};for(const e of v(t)){if(e.name!=="input")continue;const r=e.call.getArguments()[0],n=r!==void 0&&s.isExpression(r)?N(r):void 0;n!==void 0&&(i={...O(n),...i})}return i},B=t=>{const i=v(t).find(r=>r.name==="output");if(!i)return;const e=i.call.getArguments()[0];return e&&s.isExpression(e)?_(i.call,()=>j(e)):void 0},L=(t,i)=>{const e=m(t,i);if(e===void 0||!s.isPropertyAssignment(e))return;const r=e.getInitializer();return r!==void 0&&s.isStringLiteral(r)?r.getLiteralValue():void 0},P=(t,i)=>{const e=m(t,i);if(e===void 0||!s.isPropertyAssignment(e))return;const r=e.getInitializer();return r!==void 0&&s.isNumericLiteral(r)?r.getLiteralValue():void 0},K=t=>{const i=m(t,"cache");if(i===void 0||!s.isPropertyAssignment(i))return;const e=i.getInitializer();if(e===void 0||!s.isObjectLiteralExpression(e))return;const r=L(e,"scope"),n=P(e,"maxAge"),o=P(e,"staleWhileRevalidate"),a=L(e,"tag"),l=L(e,"vary"),c={...n===void 0?{}:{maxAge:n},...r==="private"||r==="public"?{scope:r}:{},...o===void 0?{}:{staleWhileRevalidate:o},...a===void 0?{}:{tag:a},...l===void 0?{}:{vary:l}};return Object.keys(c).length===0?void 0:c},U=t=>{if(t===void 0||!s.isObjectLiteralExpression(t))return{};const i=K(t),e=m(t,"rest");return e!==void 0&&s.isPropertyAssignment(e)?{...i===void 0?{}:{cache:i},rest:e.getInitializer()?.getText()==="true"}:i===void 0?{}:{cache:i}},q=t=>{const i=v(t).find(e=>e.name==="expose");return i?U(i.call.getArguments()[0]):void 0},J=t=>{const i=v(t).find(o=>o.name==="x402");if(!i)return;const e=i.call.getArguments()[0];if(e===void 0||!s.isObjectLiteralExpression(e))return{};const r=m(e,"price");if(r===void 0||!s.isPropertyAssignment(r))return{};const n=r.getInitializer();return n===void 0?{}:s.isStringLiteral(n)?{price:n.getLiteralValue()}:s.isNumericLiteral(n)?{price:n.getLiteralValue()}:{}},X=t=>{const i=t.getArguments()[0];if(!i||!s.isObjectLiteralExpression(i))return{};const e=m(i,"args");if(!e||!s.isPropertyAssignment(e))return{};const r=e.getInitializer(),n=r===void 0?void 0:N(r);return n===void 0?{}:O(n)},p=(t,i)=>{throw new d("INTERNAL",`@lunora/codegen: lazy function registry needs literal ${i} in ${t.getSourceFile().getFilePath()}:${String(t.getStartLineNumber())}`)},b=(t,i,e)=>{if(!t||!s.isObjectLiteralExpression(t))return p(i,"metadata objects");const r=new Set;for(const n of t.getProperties()){if(!s.isPropertyAssignment(n))return p(n,"metadata fields without spreads, getters, or shorthand");const o=n.getNameNode(),a=s.isStringLiteral(o)?o.getLiteralValue():o.getText();if(!s.isIdentifier(o)&&!s.isStringLiteral(o)||!e.includes(a)||r.has(a))return p(n,"supported, unique metadata fields");r.add(a)}return t},f=(t,i)=>{const e=t.getProperty(i);return e&&s.isPropertyAssignment(e)?e.getInitializer():void 0},G=t=>{const i=b(t,t,["credentialHeaders","maxAge","scope","staleWhileRevalidate","tag","vary"]),e={};for(const o of["maxAge","staleWhileRevalidate"]){const a=f(i,o);if(!(a===void 0&&o!=="maxAge")){if(!a||!s.isNumericLiteral(a))return p(t,`cache.${o}`);e[o]=a.getLiteralValue()}}const r=f(i,"scope");if(!r||!s.isStringLiteral(r)||!["private","public"].includes(r.getLiteralValue()))return p(t,"cache.scope");e.scope=r.getLiteralValue();for(const o of["tag","vary"]){const a=f(i,o);if(a!==void 0){if(!s.isStringLiteral(a))return p(a,`cache.${o}`);e[o]=a.getLiteralValue()}}const n=f(i,"credentialHeaders");if(n!==void 0){if(!s.isArrayLiteralExpression(n))return p(n,"cache.credentialHeaders");e.credentialHeaders=n.getElements().map(o=>s.isStringLiteral(o)?o.getLiteralValue():p(o,"cache.credentialHeaders string entries"))}return e},Q=t=>{const i=b(t.getArguments()[0],t,["rest","cache"]),e=f(i,"rest"),r=f(i,"cache");return e!==void 0&&!s.isTrueLiteral(e)&&!s.isFalseLiteral(e)?p(e,".expose({ rest })"):{...e?{rest:s.isTrueLiteral(e)}:{},...r?{cache:G(r)}:{}}},Y=t=>{const i=b(t.getArguments()[0],t,["price"]),e=f(i,"price");return!e||!s.isStringLiteral(e)&&!s.isNumericLiteral(e)?p(t,"`.x402({ price })` value"):{price:e.getLiteralValue()}},Z=t=>{const{factory:i,steps:e}=V(t);if(!i)return p(t,"metadata from a resolvable Lunora factory root");const r={visibility:i.startsWith("internal")?"internal":"public"};for(const{call:n,name:o}of e){if(!["expose","input","meta","output","use","x402"].includes(o))return p(n,`known builder modifiers, got .${o}()`);o==="expose"&&r.expose===void 0&&(r.expose=Q(n)),o==="x402"&&r.x402===void 0&&(r.x402=Y(n))}return r},ee=8,h=(t,i=0)=>{if(i>ee)return;if(s.isCallExpression(t))return t;if(s.isParenthesizedExpression(t)||s.isAsExpression(t)||s.isSatisfiesExpression(t)||s.isNonNullExpression(t))return h(t.getExpression(),i+1);if(!s.isIdentifier(t)&&!s.isPropertyAccessExpression(t))return;const e=t.getSymbol()?.getValueDeclaration();return e?x(e,i+1):void 0},x=(t,i)=>{if(s.isVariableDeclaration(t)||s.isPropertyAssignment(t)){const e=t.getInitializer();return e?h(e,i):void 0}if(s.isShorthandPropertyAssignment(t)){const e=t.getValueSymbol()?.getValueDeclaration();return e?x(e,i+1):void 0}if(s.isBindingElement(t)){const e=k(t),o=t.getFirstAncestorByKind(T.VariableDeclaration)?.getInitializer()?.getType().getProperty(e)?.getValueDeclaration();return o?x(o,i+1):void 0}},te=(t,i=()=>!0)=>{const e=t.getNameNode();if(s.isObjectBindingPattern(e)){const o=[];for(const a of e.getElements().filter(l=>i(l.getName()))){const l=h(a.getNameNode());l&&o.push([a.getName(),l])}return o}if(!i(t.getName()))return[];const r=t.getInitializer(),n=r&&(s.isCallExpression(r)?r:h(r));return n?[[t.getName(),n]]:[]},ie=t=>{const i=t.getArguments()[0],e=s.isObjectLiteralExpression(i)?i.getProperty("name"):void 0,r=s.isPropertyAssignment(e)?e.getInitializer():void 0;if(!r||!s.isStringLiteral(r))throw new d("ROOM_NAME_NOT_LITERAL",'defineRoom needs a string-literal `name` (e.g. `defineRoom({ name: "chat", … })`) so codegen can type its reference.');return r.getLiteralValue()},re=t=>t.startsWith("/")&&new URL(t,"https://lunora.invalid").pathname===t&&t!=="/_lunora"&&!t.startsWith("/_lunora/"),ne=t=>{const i=t.getArguments()[0];if(!s.isObjectLiteralExpression(i))throw new d("SOCKET_PATH_NOT_LITERAL","defineWebSocket needs an object-literal options argument so codegen can read its `path` and `auth`.");const e=i.getProperty("path"),r=s.isPropertyAssignment(e)?e.getInitializer():void 0;if(!r||!s.isStringLiteral(r))throw new d("SOCKET_PATH_NOT_LITERAL",'defineWebSocket needs a string-literal `path` (e.g. `defineWebSocket({ path: "/chat", … })`) so codegen can route its upgrade.');const n=r.getLiteralValue();if(!re(n))throw new d("SOCKET_PATH_INVALID",`defineWebSocket path "${n}" must be a plain URL path starting with "/" (no "?", "#", ".." or unencoded characters) and not under "/_lunora".`);if(i.getProperties().some(c=>s.isSpreadAssignment(c)||s.isPropertyAssignment(c)&&s.isComputedPropertyName(c.getNameNode())))throw new d("SOCKET_AUTH_NOT_LITERAL","defineWebSocket cannot spread its options or use a computed key: codegen must read `auth` as a literal `auth: true` or `auth: false`.");const a=i.getProperty("auth");if(a===void 0)return{auth:!1,path:n};const l=s.isPropertyAssignment(a)?a.getInitializer():void 0;if(l===void 0||!(s.isTrueLiteral(l)||s.isFalseLiteral(l)))throw new d("SOCKET_AUTH_NOT_LITERAL","defineWebSocket needs a literal `auth: true` or `auth: false`, so codegen can read whether the route requires a session. A shorthand or a variable is not read.");return{auth:s.isTrueLiteral(l),path:n}},se=(t,i,e,r)=>{const n=r?Z(i):void 0,o=r?n?.expose:q(i),a=r?n?.x402:J(i),l=A(()=>B(i)),c=A(()=>W(t)),u=w({kind:e.kind,output:l.value});return z(u?l.erased:c.erased),{args:H(i),...o?{expose:o}:{},...a?{x402:a}:{},...e.adminOnly?{adminOnly:!0}:{},kind:e.kind,...l.value?{output:l.value}:{},returnType:c.value,visibility:n?.visibility==="internal"||e.visibility==="internal"?"internal":"public"}},oe=(t,i)=>{const e=$(t,i);if(!e)return;if(e.channel)return{args:{},channel:{kind:e.channel,name:ie(t)},kind:e.kind,returnType:"void",visibility:e.visibility};const{receiver:r}=e;return r?se(t,r,e,i):e.lifecycle?{args:{},kind:e.kind,lifecycle:e.lifecycle,returnType:"void",...e.lifecycle==="socket"?{socket:{...ne(t),origin:`${t.getSourceFile().getFilePath()}@${String(t.getStart())}`}}:{},visibility:e.visibility}:{args:X(t),kind:e.kind,returnType:D(t),visibility:e.visibility}},S=(t,i,e,r)=>{const n=oe(t,r);if(n)return{args:n.args,exportName:i,filePath:e,kind:n.kind,returnType:n.returnType,...n.output?{output:n.output}:{},visibility:n.visibility,...n.adminOnly?{adminOnly:!0}:{},...n.expose?{expose:n.expose}:{},...n.x402?{x402:n.x402}:{},...n.lifecycle?{lifecycle:n.lifecycle}:{},...n.channel?{channel:n.channel}:{},...n.socket?{socket:n.socket}:{}}},ae=(t,i,e)=>{const r=[];for(const n of t.getExportAssignments()){if(n.isExportEquals())continue;const o=h(n.getExpression()),a=o?S(o,"default",i,e):void 0;o&&a&&r.push({call:o,entry:a})}return r},ce=(t,i,e)=>{const r=R(t),n=new Map,o=(c,u)=>{if(c?.channel?.kind!=="room")return;const g=n.get(c.channel.name);if(g!==void 0&&g!==u)throw new d("DUPLICATE_ROOM_NAME",`Duplicate room name "${c.channel.name}" in ${i}: two defineRoom calls share it. Room names must be unique.`);n.set(c.channel.name,u)},a=t.getVariableStatements().flatMap(c=>c.getDeclarations()).flatMap(c=>te(c,u=>r.has(u))).flatMap(([c,u])=>(r.get(c)??[]).filter(g=>F(g)).flatMap(g=>{const y=S(u,g,i,e);return o(y,u),y?[y]:[]})),l=new Set(a.map(c=>c.exportName));for(const{call:c,entry:u}of ae(t,i,e))l.has(u.exportName)||(o(u,c),a.push(u));return a},le=t=>{const i=new Map;for(const e of t){if(e.channel?.kind!=="room")continue;const r=i.get(e.channel.name);if(r!==void 0&&r.file!==e.filePath)throw new d("DUPLICATE_ROOM_NAME",`Duplicate room name "${e.channel.name}": defined in ${r.origin} and ${e.filePath}:${e.exportName}. Room names must be unique across the project.`);r===void 0&&i.set(e.channel.name,{file:e.filePath,origin:`${e.filePath}:${e.exportName}`})}},ue=t=>{const i=new Map;for(const e of t){const r=M(e.filePath),n=i.get(r);if(n&&n!==e.filePath)throw Object.assign(new Error(`Namespace collision: "${n}" and "${e.filePath}" both resolve to "${r}". Rename one of the files so the JS-identifier-sanitized names differ. (note: case-insensitive filesystems may also cause this — \`foo\` and \`FOO\` map to the same identifier)`),{code:"NAMESPACE_COLLISION",name:"LunoraError",paths:[n,e.filePath],status:500});i.set(r,e.filePath)}},xe=(t,i,e={})=>{const r=C(i),n=[];for(const o of r){const a=t.getSourceFile(o)??t.addSourceFileAtPath(o),l=I(i,o);n.push(...ce(a,l,e.lazyFunctions===!0))}return n.sort((o,a)=>`${o.filePath}:${o.exportName}`.localeCompare(`${a.filePath}:${a.exportName}`)),ue(n),le(n),n};export{xe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as o}from"./context-property-calls-Co_G3ENU.mjs";const t=(r,e)=>o(r,e,"sql");export{t as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Node as i}from"ts-morph";import{collectCallRows as n}from"./isTestPath-B81lOULB.mjs";import{c as a}from"./attribution-hVBriwzy.mjs";import{i as c}from"./database-calls-
|
|
1
|
+
import{Node as i}from"ts-morph";import{collectCallRows as n}from"./isTestPath-B81lOULB.mjs";import{c as a}from"./attribution-hVBriwzy.mjs";import{i as c}from"./database-calls-D-GwIhWO.mjs";const l=t=>{const e=t.getExpression();if(!i.isPropertyAccessExpression(e)||e.getName()!=="insert")return!1;const r=e.getExpression();return c(r)},g=t=>{if(!i.isIdentifier(t))return;const e=t.getSymbol(),r=e?.getAliasedSymbol()?.getDeclarations()??e?.getDeclarations()??[];for(const s of r)if(i.isVariableDeclaration(s)){const o=s.getInitializer();if(o&&i.isStringLiteral(o))return o.getLiteralText()}},f=t=>{const e=t.getArguments()[0];return e?i.isStringLiteral(e)?e.getLiteralText():g(e)??"":""},d=(t,e)=>n(t,e,(r,s)=>l(r)?{file:s,line:r.getStartLineNumber(),scope:a(r),table:f(r)}:void 0);export{d as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./isTestPath-B81lOULB.mjs";import"./attribution-hVBriwzy.mjs";import"./database-calls-D-GwIhWO.mjs";import"./classify-procedure-call-Bw5sia-K.mjs";import{d as a}from"./index-BPUxZYM5.mjs";export{a as default};
|
package/dist/packem_shared/{discoverMigrations-C9mLIhGZ.mjs → discoverMigrations-ClgjUkaG.mjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{SyntaxKind as f,Node as s}from"ts-morph";import{diagnosticAt as g}from"./CodegenDiagnosticError-BUXlG3P-.mjs";import{
|
|
1
|
+
import{SyntaxKind as f,Node as s}from"ts-morph";import{diagnosticAt as g}from"./CodegenDiagnosticError-BUXlG3P-.mjs";import{a as u}from"./module-specifiers-BctA0m_p.mjs";import{listLunoraSourceFiles as m,lunoraRelativePath as p,findObjectProperty as h}from"./isTestPath-B81lOULB.mjs";import{b as I,a as b}from"./attribution-hVBriwzy.mjs";const P=r=>{const i=r.getSymbol();if(!i)return r.getText()==="defineMigration";for(const t of i.getDeclarations())if(s.isImportSpecifier(t))return u(t.getImportDeclaration().getModuleSpecifierValue())?t.getNameNode().getText()==="defineMigration":!1;return!1},d=(r,i)=>{const t=h(r,i);if(!t||!s.isPropertyAssignment(t))return;const e=t.getInitializer();return e&&s.isStringLiteral(e)?e.getLiteralValue():void 0},v=(r,i)=>{const t=r.getInitializer();if(t?.getKind()!==f.CallExpression)return;const e=t.getExpression();if(!s.isIdentifier(e)||!P(e))return;const o=t.getArguments()[0];if(!o||!s.isObjectLiteralExpression(o))return;const n=d(o,"id"),a=b(r,"member");if(a!==void 0){if(n===void 0||n.trim()==="")throw g(o,`Migration "${a}" in "${i}" must declare \`id\` as a non-empty string literal so codegen can key the registry.`,{code:"MIGRATION_ID_NOT_STATIC",name:"LunoraError",status:500});return{exportName:a,filePath:i,id:n,table:d(o,"table")??""}}},M=r=>{const i=new Map;for(const t of r){const e=i.get(t.id);if(e!==void 0)throw Object.assign(new Error(`Duplicate migration id "${t.id}": declared in both "${e}" and "${t.filePath}". Migration ids must be unique across the project.`),{code:"DUPLICATE_MIGRATION_ID",id:t.id,name:"LunoraError",paths:[e,t.filePath],status:500});i.set(t.id,t.filePath)}},E=(r,i)=>{const t=m(i),e=[];for(const o of t){const n=r.getSourceFile(o)??r.addSourceFileAtPath(o),a=p(i,o);for(const l of I(n)){const c=v(l,a);c&&e.push(c)}}return e.sort((o,n)=>o.id.localeCompare(n.id)),M(e),e};export{E as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Node as s,SyntaxKind as r}from"ts-morph";import{listLunoraSourceFiles as a,lunoraRelativePath as l,handlerOf as c}from"./isTestPath-B81lOULB.mjs";import{b as d,d as f}from"./attribution-hVBriwzy.mjs";import{c as u}from"./classify-procedure-call-
|
|
1
|
+
import{Node as s,SyntaxKind as r}from"ts-morph";import{listLunoraSourceFiles as a,lunoraRelativePath as l,handlerOf as c}from"./isTestPath-B81lOULB.mjs";import{b as d,d as f}from"./attribution-hVBriwzy.mjs";import{c as u}from"./classify-procedure-call-Bw5sia-K.mjs";const m={"crypto.getRandomValues":"crypto.getRandomValues","crypto.randomUUID":"crypto.randomUUID","Date.now":"Date.now","Math.random":"Math.random"},p=new Set(["globalThis","self"]),g=new Set(["globalThis","self","window"]),h=e=>{if(s.isIdentifier(e))return e.getText();if(s.isPropertyAccessExpression(e)){const t=e.getExpression();if(s.isIdentifier(t)&&g.has(t.getText()))return e.getName()}},x=e=>{const t=e.getExpression();if(s.isIdentifier(t)){const i=t.getText();return i==="fetch"||i==="Date"?i:void 0}if(!s.isPropertyAccessExpression(t))return;const n=t.getName(),o=h(t.getExpression());if(o!==void 0)return n==="fetch"&&p.has(o)?"fetch":m[`${o}.${n}`]},N=e=>{const t=e.getExpression();if(!s.isIdentifier(t)||t.getText()!=="Date")return;const n=e.getArguments(),o=n.every(i=>s.isNumericLiteral(i)||s.isStringLiteral(i)||s.isNoSubstitutionTemplateLiteral(i));return n.length>0&&o?void 0:"new Date"},E=e=>{const t=e.getInitializer();if(!t||!s.isCallExpression(t))return;const n=u(t);if(!n||n.kind!=="query"&&n.kind!=="mutation")return;const o=c(t,n.receiver);return o?{exportName:f(e)??e.getName(),handler:o,kind:n.kind}:void 0},S=(e,t)=>{const n=[];for(const o of e.handler.getDescendantsOfKind(r.CallExpression)){const i=x(o);i!==void 0&&n.push({callee:i,exportName:e.exportName,file:t,kind:e.kind,line:o.getStartLineNumber()})}for(const o of e.handler.getDescendantsOfKind(r.NewExpression)){const i=N(o);i!==void 0&&n.push({callee:i,exportName:e.exportName,file:t,kind:e.kind,line:o.getStartLineNumber()})}return n},v=(e,t)=>{const n=[];for(const o of d(e)){const i=E(o);i&&n.push(...S(i,t))}return n},T=(e,t)=>{const n=[];for(const o of a(t)){const i=e.getSourceFile(o)??e.addSourceFileAtPath(o);n.push(...v(i,l(t,o)))}return n};export{T as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Node as i,SyntaxKind as u}from"ts-morph";import{collectCallRows as x}from"./isTestPath-B81lOULB.mjs";import{w as E,c as h}from"./attribution-hVBriwzy.mjs";import{i as v}from"./database-calls-
|
|
1
|
+
import{Node as i,SyntaxKind as u}from"ts-morph";import{collectCallRows as x}from"./isTestPath-B81lOULB.mjs";import{w as E,c as h}from"./attribution-hVBriwzy.mjs";import{i as v}from"./database-calls-D-GwIhWO.mjs";const A=new Set(["withGeoIndex","withIndex","withSearchIndex"]),S=new Set(["collect","collectWithScores","first","paginate","take","unique"]),w=t=>{const e=t.getExpression();if(!i.isPropertyAccessExpression(e)||e.getName()!=="query")return!1;const n=e.getExpression();return v(n)},y=t=>{const e=[];let n=t;for(;;){const s=n.getParent();if(!s||!i.isPropertyAccessExpression(s))break;const r=s.getParent();if(!r||!i.isCallExpression(r))break;e.push(r),n=r}return e},l=t=>{const e=t.getExpression();return i.isPropertyAccessExpression(e)?e.getName():""},m=t=>{if(t===void 0||!(i.isArrowFunction(t)||i.isFunctionExpression(t)))return;const e=t.getParameters()[0]?.getNameNode();return e!==void 0&&i.isIdentifier(e)?e.getText():void 0},O=t=>{let e=t;for(;i.isCallExpression(e)||i.isPropertyAccessExpression(e);)e=e.getExpression();return e},P=(t,e)=>{const n=new Set,s=[t,...t.getDescendantsOfKind(u.CallExpression)].filter(r=>i.isCallExpression(r));for(const r of s){const c=r.getExpression();if(i.isPropertyAccessExpression(c)){const o=O(c);i.isIdentifier(o)&&o.getText()===e&&n.add(c.getName())}}return n},f=(t,e)=>{if(i.isParenthesizedExpression(t))return f(t.getExpression(),e);if(i.isConditionalExpression(t)){const n=f(t.getWhenFalse(),e);return new Set([...f(t.getWhenTrue(),e)].filter(s=>n.has(s)))}return P(t,e)},C=t=>{if(!(i.isArrowFunction(t)||i.isFunctionExpression(t)))return;const e=t.getBody();if(!i.isBlock(e))return i.isExpression(e)?[e]:void 0;const n=e.getDescendantsOfKind(u.ReturnStatement).filter(s=>s.getFirstAncestor(r=>i.isArrowFunction(r)||i.isFunctionExpression(r))?.compilerNode===t.compilerNode).map(s=>s.getExpression()).filter(s=>s!==void 0);return n.length===0?void 0:n},F=(t,e)=>{const n=C(t);if(n===void 0)return;const[s,...r]=n.map(o=>f(o,e));return[...s??new Set].filter(o=>r.every(d=>d.has(o))).toSorted((o,d)=>o.localeCompare(d))},I=(t,e)=>{const n=new Set;for(const s of t.getDescendantsOfKind(u.PropertyAccessExpression)){const r=s.getExpression();i.isIdentifier(r)&&r.getText()===e&&n.add(s.getName())}for(const s of t.getDescendantsOfKind(u.ElementAccessExpression)){const r=s.getExpression(),c=s.getArgumentExpression();i.isIdentifier(r)&&r.getText()===e&&c!==void 0&&i.isStringLiteral(c)&&n.add(c.getLiteralText())}return[...n]},N=t=>{if(t===void 0)return;const[e,n]=t.getArguments(),s=m(n),r=e!==void 0&&i.isStringLiteral(e)?e.getLiteralText():void 0;return n===void 0?{bounds:[],name:r}:{bounds:s===void 0?void 0:F(n,s),name:r}},T=t=>{const e=t.flatMap(n=>{const s=n.getArguments()[0],r=m(s);return s===void 0||r===void 0?[]:I(s,r)});if(e.length!==0)return[...new Set(e)].toSorted((n,s)=>n.localeCompare(s))},b=/\b[A-Za-z_$][\w$]*\._id\s*===?[^=]/u,D=t=>t.some(e=>l(e)==="filter"&&b.test(e.getArguments()[0]?.getText()??"")),L=t=>{const e=t.getArguments()[0];return e&&i.isStringLiteral(e)?e.getLiteralText():""},k=(t,e,n=[])=>{const s=x(t,e,(r,c)=>{if(!w(r))return;const o=y(r),d=o.map(a=>l(a)),p=o.filter(a=>l(a)==="filter"),g=p.length>0;return{file:c,filterFields:g?T(p):void 0,filtersPrimaryKey:g&&D(o),hasFilter:g,hasIndex:d.some(a=>A.has(a)),index:N(o.find(a=>l(a)==="withIndex")),line:r.getStartLineNumber(),scope:h(r),table:L(r),terminal:d.findLast(a=>S.has(a))}});return E(s,n)};export{k as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as r}from"./context-property-calls-Co_G3ENU.mjs";const t=(s,o)=>r(s,o,"r2sql");export{t as default};
|
package/dist/packem_shared/{discoverRlsMetadata-DCgP2H39.mjs → discoverRlsMetadata-D2G3YAoe.mjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Node as o}from"ts-morph";import{listLunoraSourceFiles as x,lunoraRelativePath as h,findObjectProperty as m,stringPropertyOf as c}from"./isTestPath-B81lOULB.mjs";import{e as A}from"./exported-procedure-chains-
|
|
1
|
+
import{Node as o}from"ts-morph";import{listLunoraSourceFiles as x,lunoraRelativePath as h,findObjectProperty as m,stringPropertyOf as c}from"./isTestPath-B81lOULB.mjs";import{e as A}from"./exported-procedure-chains-CVzkVdq4.mjs";import{r as L}from"./chain-ZlTHdRo2.mjs";const E=new Set(["delete","insert","read","update"]),P=(e,t,i)=>{const r=e.getArguments()[0];if(!r||!o.isArrayLiteralExpression(r))return[];const s=[];for(const n of r.getElements()){if(!o.isObjectLiteralExpression(n))continue;const a=c(n,"on");a===void 0||!E.has(a)||s.push({file:t,on:a,procedure:i,table:c(n,"table")??""})}return s},u=e=>{if(!o.isObjectLiteralExpression(e))return[];const t=m(e,"permissions");if(!t||!o.isPropertyAssignment(t))return[];const i=t.getInitializer();if(!i||!o.isArrayLiteralExpression(i))return[];const r=[];for(const s of i.getElements()){if(o.isStringLiteral(s)){r.push(s.getLiteralText());continue}if(o.isCallExpression(s)){const n=s.getArguments()[0];n&&o.isStringLiteral(n)&&r.push(n.getLiteralText())}}return r},f=(e,t)=>t===void 0?e:{...e,description:t},v=e=>{if(o.isCallExpression(e)){const t=e.getArguments()[0];if(!t||!o.isStringLiteral(t))return;const i=e.getArguments()[1],r=i?c(i,"description"):void 0,s=i?u(i):[];return f({name:t.getLiteralText(),permissions:s},r)}if(o.isObjectLiteralExpression(e)){const t=c(e,"name");return t===void 0?void 0:f({name:t,permissions:u(e)},c(e,"description"))}},y=e=>{const t=e.getArguments()[1];if(!t||!o.isObjectLiteralExpression(t))return[];const i=m(t,"roles");if(!i||!o.isPropertyAssignment(i))return[];const r=i.getInitializer();if(!r||!o.isArrayLiteralExpression(r))return[];const s=[];for(const n of r.getElements()){const a=v(n);a&&s.push(a)}return s},O=(e,t,i)=>{const r=L(e);return{policies:r.flatMap(s=>P(s,t,i)),roles:r.flatMap(s=>y(s))}},I=(e,t)=>{const i=[],r=new Map;for(const s of x(t)){const n=e.getSourceFile(s)??e.addSourceFileAtPath(s),a=h(t,s);for(const{name:g,receiver:d}of A(n)){const p=O(d,a,g);i.push(...p.policies);for(const l of p.roles)r.has(l.name)||r.set(l.name,l)}}return{policies:i,roles:[...r.values()]}};export{I as default};
|
package/dist/packem_shared/{discoverRlsProcedures-Os1lrVX_.mjs → discoverRlsProcedures-BD8aG1BU.mjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Node as o}from"ts-morph";import{listLunoraSourceFiles as c,lunoraRelativePath as f,findObjectProperty as u}from"./isTestPath-B81lOULB.mjs";import{b as p,d}from"./attribution-hVBriwzy.mjs";import{t as m}from"./database-calls-
|
|
1
|
+
import{Node as o}from"ts-morph";import{listLunoraSourceFiles as c,lunoraRelativePath as f,findObjectProperty as u}from"./isTestPath-B81lOULB.mjs";import{b as p,d}from"./attribution-hVBriwzy.mjs";import{t as m}from"./database-calls-D-GwIhWO.mjs";import{c as b}from"./classify-procedure-call-Bw5sia-K.mjs";import{r as h}from"./chain-ZlTHdRo2.mjs";const g=e=>{const t=e.getArguments()[0];if(!t||!o.isArrayLiteralExpression(t))return[];const r=[];for(const s of t.getElements()){if(!o.isObjectLiteralExpression(s))continue;const i=u(s,"table");if(!i||!o.isPropertyAssignment(i))continue;const n=i.getInitializer();n&&o.isStringLiteral(n)&&r.push(n.getLiteralText())}return r},y=e=>{const t=h(e);return{rlsTables:t.flatMap(r=>g(r)),usesRls:t.length>0}},v=new Set(["explain","findFirst","findFirstOrThrow","findMany","get","query"]),x=new Set(["delete","deleteMany","insert","insertMany","patch","patchIf","patchMany","replace"]),P=(e,t)=>{if(!o.isVariableDeclaration(e))return;const r=e.getInitializer();if(!r||!o.isCallExpression(r))return;const s=b(r);if(!s)return;const i=s.receiver?y(s.receiver):{rlsTables:[],usesRls:!1},{tablesRead:n,tablesWritten:a}=m(e,v,x);return{exportName:d(e)??e.getName(),file:t,rlsTables:i.rlsTables,tablesRead:n,tablesWritten:a,usesRls:i.usesRls,visibility:s.visibility}},M=(e,t)=>{const r=[];for(const s of c(t)){const i=e.getSourceFile(s)??e.addSourceFileAtPath(s),n=f(t,s);for(const a of p(i)){const l=P(a,n);l&&r.push(l)}}return r};export{M as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Node as u}from"ts-morph";import{listLunoraSourceFiles as f,lunoraRelativePath as p,stringPropertyOf as l}from"./isTestPath-B81lOULB.mjs";import{w as d}from"./classify-procedure-call-
|
|
1
|
+
import{Node as u}from"ts-morph";import{listLunoraSourceFiles as f,lunoraRelativePath as p,stringPropertyOf as l}from"./isTestPath-B81lOULB.mjs";import{w as d}from"./classify-procedure-call-Bw5sia-K.mjs";import{e as m}from"./exported-procedure-chains-CVzkVdq4.mjs";const h=new Set(["delete","list","read","write"]),g=t=>d(t,"use","storageRules"),x=(t,s,n)=>{const e=t.getArguments()[0];if(!e||!u.isArrayLiteralExpression(e))return[];const i=[];for(const o of e.getElements()){if(!u.isObjectLiteralExpression(o))continue;const r=l(o,"on");if(r===void 0||!h.has(r))continue;const a=l(o,"prefix"),c={bucket:l(o,"bucket")??"",file:s,on:r,procedure:n};a!==void 0&&(c.prefix=a),i.push(c)}return i},A=(t,s)=>{const n=[];for(const e of f(s)){const i=t.getSourceFile(e)??t.addSourceFileAtPath(e),o=p(s,e);for(const{name:r,receiver:a}of m(i))for(const c of g(a))n.push(...x(c,o,r))}return{rules:n}};export{A as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./SCHEMA_SNAPSHOT_VERSION-C0oHwiJZ.mjs";import"./isD1GlobalTable-udvHAAzD.mjs";import"./json-data-Chfs2Cz5.mjs";import{e as d}from"./shard-
|
|
1
|
+
import"./SCHEMA_SNAPSHOT_VERSION-C0oHwiJZ.mjs";import"./isD1GlobalTable-udvHAAzD.mjs";import"./json-data-Chfs2Cz5.mjs";import{e as d}from"./shard-CsfiXxV0.mjs";import"./shard-runtime-BpoCV-aM.mjs";import"./shared-DnCokNcE.mjs";import"./platform-8oj7iXQy.mjs";import"./schema-BgM8A3XV.mjs";export{d as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Node as s}from"ts-morph";import{b as t,d as c}from"./attribution-hVBriwzy.mjs";import{c as n}from"./classify-procedure-call-
|
|
1
|
+
import{Node as s}from"ts-morph";import{b as t,d as c}from"./attribution-hVBriwzy.mjs";import{c as n}from"./classify-procedure-call-Bw5sia-K.mjs";const m=a=>{const i=[];for(const e of t(a)){const r=e.getInitializer(),o=r&&s.isCallExpression(r)?n(r):void 0;o?.receiver&&i.push({name:c(e)??e.getName(),receiver:o.receiver})}return i};export{m as e};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Node as r}from"ts-morph";import{listLunoraSourceFiles as u,lunoraRelativePath as f}from"./isTestPath-B81lOULB.mjs";import{b as m,d as p}from"./attribution-hVBriwzy.mjs";import{t as d}from"./database-calls-
|
|
1
|
+
import{Node as r}from"ts-morph";import{listLunoraSourceFiles as u,lunoraRelativePath as f}from"./isTestPath-B81lOULB.mjs";import{b as m,d as p}from"./attribution-hVBriwzy.mjs";import{t as d}from"./database-calls-D-GwIhWO.mjs";import{w as g,c as h}from"./classify-procedure-call-Bw5sia-K.mjs";import{a as k}from"./project-config-file-BV7RR-l6.mjs";const l=e=>{if(!(!r.isPropertyAssignment(e)&&!r.isShorthandPropertyAssignment(e)&&!r.isMethodDeclaration(e)&&!r.isGetAccessorDeclaration(e)))return k(e)},v=e=>g(e,"use","mask"),D=e=>{if(r.isPropertyAssignment(e)){const s=e.getInitializer();if(s&&r.isStringLiteral(s)){const t=s.getLiteralText();if(t==="redact"||t==="hash")return t}}return"custom"},P=e=>{const s=e.getArguments()[0];if(!s||!r.isObjectLiteralExpression(s))return[];const t=[];for(const i of s.getProperties()){const o=l(i);if(o===void 0||!r.isPropertyAssignment(i))continue;const n=i.getInitializer();if(!(!n||!r.isObjectLiteralExpression(n)))for(const a of n.getProperties()){const c=l(a);c!==void 0&&t.push({column:c,table:o})}}return t},y=e=>{const s=v(e);return{maskColumns:s.flatMap(t=>P(t)),usesMask:s.length>0}},C=new Set(["explain","findFirst","findFirstOrThrow","findMany","get","query"]),M=new Set(["delete","insert","patch","replace"]),x=(e,s)=>{if(!r.isVariableDeclaration(e))return;const t=e.getInitializer();if(!t||!r.isCallExpression(t))return;const i=h(t);if(!i)return;const o=i.receiver?y(i.receiver):{maskColumns:[],usesMask:!1},{tablesRead:n,tablesWritten:a}=d(e,C,M);return{exportName:p(e)??e.getName(),file:s,maskColumns:o.maskColumns,tablesRead:n,tablesWritten:a,usesMask:o.usesMask,visibility:i.visibility}},E=(e,s)=>{const t=[];for(const i of u(s)){const o=e.getSourceFile(i)??e.addSourceFileAtPath(i),n=f(s,i);for(const a of m(o)){const c=x(a,n);c&&t.push(c)}}return t};export{l as a,E as d,v as m,D as s};
|
package/dist/packem_shared/{module-specifiers-WF8iAydP.mjs → module-specifiers-BctA0m_p.mjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
const r=/(?:^|\/)_generated\/server(?:\.js)?$/u,s=new Set(["@lunora/server","lunorash/server"]),o=e=>s.has(e),n=e=>r.test(e),t=e=>o(e)||n(e),a=new Set(["@lunora/scheduler",...s]),E=e=>a.has(e);export{
|
|
1
|
+
const r=/(?:^|\/)_generated\/server(?:\.js)?$/u,s=new Set(["@lunora/server","lunorash/server"]),o=e=>s.has(e),n=e=>r.test(e),t=e=>o(e)||n(e),a=new Set(["@lunora/scheduler",...s]),E=e=>a.has(e);export{o as a,t as b,E as i};
|