@lunora/advisor 1.0.0-alpha.205 → 1.0.0-alpha.207

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/index.d.mts +135 -11
  2. package/dist/index.d.ts +135 -11
  3. package/dist/index.mjs +1 -1
  4. package/dist/packem_shared/{actionFetchSsrf-B4ZaOBlW.mjs → actionFetchSsrf-Ckr3MZNs.mjs} +1 -1
  5. package/dist/packem_shared/{aiRawRunEscapeHatch-B5980eT9.mjs → aiRawRunEscapeHatch-kE49dAwE.mjs} +1 -1
  6. package/dist/packem_shared/{aiToolSideEffectPromptInjection-_3MrX9Ul.mjs → aiToolSideEffectPromptInjection-BZLjJ5Cy.mjs} +1 -1
  7. package/dist/packem_shared/{authApiCallWithoutHeaders-D8U1hv8s.mjs → authApiCallWithoutHeaders-HbSNJ0Hc.mjs} +1 -1
  8. package/dist/packem_shared/{authCsrfCheckDisabled-C6bxME5y.mjs → authCsrfCheckDisabled-KwbenvXt.mjs} +1 -1
  9. package/dist/packem_shared/{authEmailVerificationDisabled-yROPDgn-.mjs → authEmailVerificationDisabled-JBOb3BF8.mjs} +1 -1
  10. package/dist/packem_shared/{authScimWithoutTransactions-w9qb3iBe.mjs → authScimWithoutTransactions-CCYuq6pk.mjs} +1 -1
  11. package/dist/packem_shared/{authSecureCookiesDisabled-qrCktlch.mjs → authSecureCookiesDisabled-unvM30AR.mjs} +1 -1
  12. package/dist/packem_shared/{authSessionFreshageZero-BMisjIIS.mjs → authSessionFreshageZero-CBzcaids.mjs} +1 -1
  13. package/dist/packem_shared/{authTrustedOriginsWildcard-DFDpfN84.mjs → authTrustedOriginsWildcard-Czbv3hzH.mjs} +1 -1
  14. package/dist/packem_shared/{browserUserUrlWithoutAllowlist-CcK27rvt.mjs → browserUserUrlWithoutAllowlist-CsA_4hLR.mjs} +1 -1
  15. package/dist/packem_shared/{containerInstanceKeyFromUserInput-DBdjUnQb.mjs → containerInstanceKeyFromUserInput-CQPWh9L_.mjs} +1 -1
  16. package/dist/packem_shared/{containerRuntimeEgressRelaxation-CioCA2zY.mjs → containerRuntimeEgressRelaxation-BU4-7YkE.mjs} +1 -1
  17. package/dist/packem_shared/{containerStartEnableInternetOverride-C6dbznku.mjs → containerStartEnableInternetOverride-BHglJwGb.mjs} +1 -1
  18. package/dist/packem_shared/filterAfterIndexScan-Di_Zsrj7.mjs +1 -0
  19. package/dist/packem_shared/{filterOnPrimaryKey-DbFriOZA.mjs → filterOnPrimaryKey-C3N-wvB_.mjs} +1 -1
  20. package/dist/packem_shared/{filterWithoutIndex-Dc7Nn0y2.mjs → filterWithoutIndex-BgUUzQSY.mjs} +1 -1
  21. package/dist/packem_shared/{flagGatesSecurityWithUnsafeDefault-DB9M6hLM.mjs → flagGatesSecurityWithUnsafeDefault-tQivheR5.mjs} +1 -1
  22. package/dist/packem_shared/{geoIndexFieldNotGeopoint-CDMNbAfp.mjs → geoIndexFieldNotGeopoint-B_3rAicD.mjs} +1 -1
  23. package/dist/packem_shared/helpers-BwOMPdUk.mjs +1 -0
  24. package/dist/packem_shared/{httpActionMissingAuthGuard-BhvcmkwW.mjs → httpActionMissingAuthGuard-CqS3GLB1.mjs} +1 -1
  25. package/dist/packem_shared/{httpActionResponseHeaderInjection-DKz2SlCa.mjs → httpActionResponseHeaderInjection-Daul1_t3.mjs} +1 -1
  26. package/dist/packem_shared/{identityUndeclaredClaimTrusted-CAUagXkJ.mjs → identityUndeclaredClaimTrusted-DzgQiHe1.mjs} +1 -1
  27. package/dist/packem_shared/{imagesUrlSourceFromUserInput-C2CJTTCI.mjs → imagesUrlSourceFromUserInput-DE5goRdp.mjs} +1 -1
  28. package/dist/packem_shared/{indexReferencesUnknownField-Dm8SL4Tp.mjs → indexReferencesUnknownField-Dve5ViiG.mjs} +1 -1
  29. package/dist/packem_shared/{kvUnscopedUserKeyIdor-CXFKAyM2.mjs → kvUnscopedUserKeyIdor-CJOTcIoG.mjs} +1 -1
  30. package/dist/packem_shared/{mailRecipientFromRequestInput-CQZeOsP9.mjs → mailRecipientFromRequestInput-C1G95HJQ.mjs} +1 -1
  31. package/dist/packem_shared/{maskWeakHashStrategyOnPii-njstapQY.mjs → maskWeakHashStrategyOnPii-Ul325weF.mjs} +1 -1
  32. package/dist/packem_shared/nondeterministicQueryMutation-Bbb-AGOS.mjs +1 -0
  33. package/dist/packem_shared/{outputProjectionMissingOnPublicRead-DHivs_73.mjs → outputProjectionMissingOnPublicRead-DfGQfxaK.mjs} +1 -1
  34. package/dist/packem_shared/{ownerFieldFromArgsNotAuth-lgjS8mdd.mjs → ownerFieldFromArgsNotAuth-D1VEIgac.mjs} +1 -1
  35. package/dist/packem_shared/paymentCreateWithoutAuthorize-CdenWpXD.mjs +1 -0
  36. package/dist/packem_shared/{paymentWebhookWideTolerance-CtZb2AVA.mjs → paymentWebhookWideTolerance-Bm10PglC.mjs} +1 -1
  37. package/dist/packem_shared/{privilegedDispatchUnvalidatedPayload-DlJovHrt.mjs → privilegedDispatchUnvalidatedPayload-G-9sV5zL.mjs} +1 -1
  38. package/dist/packem_shared/{publicMutationWithoutRatelimit-BeYapu1F.mjs → publicMutationWithoutRatelimit-DQj1xkax.mjs} +1 -1
  39. package/dist/packem_shared/{publicTableRlsOptoutConfusion-BFmh1kH0.mjs → publicTableRlsOptoutConfusion-DUXkgvhl.mjs} +1 -1
  40. package/dist/packem_shared/{ratelimitKeySpoofableOrGlobal-DlvJfSXs.mjs → ratelimitKeySpoofableOrGlobal-J6uHCtnZ.mjs} +1 -1
  41. package/dist/packem_shared/{ratelimitMiddlewareFailOpen-DGtyt-pc.mjs → ratelimitMiddlewareFailOpen-C4ha9Kkp.mjs} +1 -1
  42. package/dist/packem_shared/{relationReferencesUnknownField-CqGEJD57.mjs → relationReferencesUnknownField-BkS_YTgj.mjs} +1 -1
  43. package/dist/packem_shared/selfRescheduleWithoutProgress-BQIKeW3m.mjs +1 -0
  44. package/dist/packem_shared/{signupMutationWithoutDisposableGating-CFtFMJz8.mjs → signupMutationWithoutDisposableGating-CKES8QJL.mjs} +1 -1
  45. package/dist/packem_shared/{sqlInjectionRisk-y-7c46LJ.mjs → sqlInjectionRisk-CoTZ127r.mjs} +1 -1
  46. package/dist/packem_shared/{storageGenerateUploadUrlNoContentTypePin-Bx9oGOjM.mjs → storageGenerateUploadUrlNoContentTypePin-BAmzI6ru.mjs} +1 -1
  47. package/dist/packem_shared/{storageKeyFromUserArgs-BryKJJM-.mjs → storageKeyFromUserArgs-jwnnKvrm.mjs} +1 -1
  48. package/dist/packem_shared/{storagePresignedUrlForPrivateContent-lqE6LvNu.mjs → storagePresignedUrlForPrivateContent-CfTyQxW3.mjs} +1 -1
  49. package/dist/packem_shared/{storageUploadWithoutContentTypeAllowlist-DMr7w29r.mjs → storageUploadWithoutContentTypeAllowlist-CkkuOKU4.mjs} +1 -1
  50. package/dist/packem_shared/{storageUploadWithoutMaxSize-rSNFNb2l.mjs → storageUploadWithoutMaxSize-Bz521ysH.mjs} +1 -1
  51. package/dist/packem_shared/sweeps-BXSVvIW-.mjs +1 -0
  52. package/dist/packem_shared/{ttlFieldNotTimestamp-Dxa-6RfM.mjs → ttlFieldNotTimestamp-obKZetLE.mjs} +1 -1
  53. package/dist/packem_shared/unboundedCollectOnOpenRange-ClpZwgAd.mjs +1 -0
  54. package/dist/packem_shared/{unboundedLoop-BqbZ7boE.mjs → unboundedLoop-DQBL-C0q.mjs} +1 -1
  55. package/dist/packem_shared/{userCreatingMutationWithoutCaptcha-C8yaqIIj.mjs → userCreatingMutationWithoutCaptcha-CLE-QBZ9.mjs} +1 -1
  56. package/dist/packem_shared/{vectorsNamespaceFromUserInput-7I_Kwxvp.mjs → vectorsNamespaceFromUserInput-hCNg2Slm.mjs} +1 -1
  57. package/dist/packem_shared/{workflowUnknownTarget-Cm1hfTTs.mjs → workflowUnknownTarget-O1U8Kwvc.mjs} +1 -1
  58. package/package.json +2 -2
  59. package/dist/packem_shared/helpers-BmppB5nL.mjs +0 -1
  60. package/dist/packem_shared/nondeterministicQueryMutation-sxmixc0l.mjs +0 -1
  61. package/dist/packem_shared/paymentCreateWithoutAuthorize-CICGmRFR.mjs +0 -1
@@ -1 +0,0 @@
1
- import{callSiteMetadata as u,helperRole as p}from"./callSiteCallers-DArHfQSU.mjs";const c=["address","birthdate","creditCard","dateOfBirth","dob","driversLicense","email","firstName","fullName","lastName","nationalId","passport","phone","phoneNumber","socialSecurity","socialSecurityNumber","ssn","taxId"],I=/[^a-z0-9]/giu,S=/([a-z0-9])([A-Z])/gu,h=/[^a-zA-Z0-9]+/u,s=e=>e.replaceAll(I,"").toLowerCase(),n=e=>e.replaceAll(S,"$1_$2").split(h).filter(t=>t.length>0).map(t=>t.toLowerCase()),N=new Set(c.map(e=>s(e))),_=new Set(c.filter(e=>n(e).length===1).map(e=>e.toLowerCase())),f=new Set(["accountId","authorId","createdBy","createdById","organizationId","orgId","ownerId","tenantId","updatedBy","userId","workspaceId"]),A=e=>N.has(s(e))||n(e).some(t=>_.has(t)),O=(e,t)=>{const a=n(e),l=s(e);return t.some(i=>{if(l===s(i))return!0;const o=n(i);return o.length>0&&a.some((L,r)=>o.every((d,m)=>a[r+m]===d))})},P=(e,t)=>e.columnKinds!==void 0&&Object.hasOwn(e.columnKinds,t)?e.columnKinds[t]:void 0,E=new Set(["_creationTime","_id"]),b=e=>e.fields.filter(t=>f.has(t)||A(t)),g=e=>new Set([...E,...e.fields]),y=e=>e.visibility==="public"&&(e.kind==="mutation"||e.kind==="action"),C=e=>e.line>0?`${e.file}:${e.line.toString()}`:e.file,M=e=>{const t=`${e.file}:${e.line.toString()}`;switch(e.scope.kind){case"export":return`\`${e.scope.name}\` (${t})`;case"helper":return`\`${e.scope.name}\` (${t}; ${p(e.scope)})`;default:return`module scope (${t})`}},R=e=>({...u(e.scope),file:e.file,line:e.line}),w=e=>new Map(e.tables.map(t=>[t.name,t.shardKind]));export{M as a,P as b,R as c,y as d,A as i,O as m,b as o,C as q,w as s,g as t};
@@ -1 +0,0 @@
1
- import{e as l}from"./finding-NrKO8idM.mjs";const c={categories:["SCHEMA"],description:"A `query`/`mutation` handler calls a non-deterministic API (`Date.now`, `Math.random`, `crypto.randomUUID`, `crypto.getRandomValues`, or `fetch`). A `query` may be re-run by a live subscription, so non-determinism there can flicker between evaluations (WARN). An ordinary `mutation` handler does not replay on this runtime — it runs at most once per logical write — so this is informational there (INFO) unless the mutation is itself invoked from a workflow step or queue consumer that can replay.",facing:"EXTERNAL",level:"WARN",name:"nondeterministic_query_mutation",remediation:"For a `query`: move the non-deterministic call into an `action(...)` (which runs once and may use ambient APIs), then pass the computed value into the mutation as an argument, or accept that the value may differ across re-evaluations. For an ordinary `mutation`: no action needed — the handler runs at most once per logical write on this runtime. If the mutation is dispatched from inside a workflow step or queue consumer, treat it like an action value instead, since the surrounding step/consumer can replay.",run:a=>{if(a.nondeterministicCalls===void 0)return[];const t=[],o=new Map;for(const e of a.nondeterministicCalls){const n=`${e.file}:${e.line.toString()}:${e.callee}`,i=(o.get(n)??0)+1;o.set(n,i);const r=i>1?`:${i.toString()}`:"",s={callee:e.callee,exportName:e.exportName,file:e.file,kind:e.kind,line:e.line};if(e.kind==="mutation"){t.push(l(c,{cacheKey:`nondeterministic_query_mutation:${n}${r}`,detail:`\`${e.callee}(…)\` in ${e.exportName} (${e.file}:${e.line.toString()}) runs inside a mutation handler. Ordinary mutations don't replay on this runtime (idempotency dedup returns a cached result rather than re-running the handler, and an OCC conflict throws to the caller instead of retrying internally), so this is informational — no action needed unless \`${e.exportName}\` is invoked from a workflow step or queue consumer that can itself replay.`,facing:"INTERNAL",level:"INFO",metadata:s}));continue}t.push(l(c,{cacheKey:`nondeterministic_query_mutation:${n}${r}`,detail:`\`${e.callee}(…)\` in ${e.exportName} (${e.file}:${e.line.toString()}) runs inside a query handler — a live subscription may re-run this query, so the result can differ between evaluations. Compute it in an \`action\` and pass the value into the mutation as an argument.`,metadata:s}))}return t},source:"static",title:"Non-deterministic call in query/mutation handler"};export{c as default};
@@ -1 +0,0 @@
1
- import{e as a}from"./finding-NrKO8idM.mjs";const r={categories:["SECURITY"],description:"`createPayment({...})` was constructed without an `authorize` callback, so its access-control gate never runs — any caller that reaches a payment reference id can drive a charge, refund, or subscription change against it (a broken-access-control / IDOR risk on money movement).",facing:"EXTERNAL",level:"ERROR",name:"payment_create_without_authorize",remediation:"Pass an `authorize(referenceId)` callback to `createPayment({...})` that verifies the current caller (via `ctx.auth`) owns the payment/subscription reference before the operation runs. Prefer the `ctx.payments` accessor, which is authorization-scoped by default.",run:t=>t.configCalls===void 0?[]:t.configCalls.filter(e=>e.callee==="createPayment"&&e.analyzable&&!e.presentKeys.includes("authorize")).map(e=>a(r,{cacheKey:`payment_create_without_authorize:${e.file}:${e.line.toString()}`,detail:`\`createPayment({...})\` in ${e.file}:${e.line.toString()} has no \`authorize\` callback — its access-control gate never runs, so any caller reaching the payment reference can move money against it. Add an \`authorize(referenceId)\` gate that checks \`ctx.auth\` ownership before the operation.`,metadata:{callee:e.callee,file:e.file,line:e.line}})),source:"static",title:"createPayment without an authorize gate"};export{r as default};