@lunora/advisor 1.0.0-alpha.50 → 1.0.0-alpha.52
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
CHANGED
|
@@ -912,6 +912,16 @@ interface AdvisorProcedureProtection {
|
|
|
912
912
|
fanOut: boolean;
|
|
913
913
|
/** Source file relative to the lunora dir, no extension. */
|
|
914
914
|
file: string;
|
|
915
|
+
/**
|
|
916
|
+
* `true` when the procedure declares an email-shaped argument. Read by the
|
|
917
|
+
* `signup_mutation_without_disposable_gating` lint: `emailGateMiddleware`
|
|
918
|
+
* gates an address selected off the args, so a procedure that never receives
|
|
919
|
+
* one cannot action the lint no matter what table it writes.
|
|
920
|
+
*
|
|
921
|
+
* Optional so a feeder predating this field (or a runtime caller) is treated
|
|
922
|
+
* as "unknown" rather than silently clearing every finding.
|
|
923
|
+
*/
|
|
924
|
+
hasEmailArg?: boolean;
|
|
915
925
|
/** Registration kind — `query` is read-only; `mutation`/`action` are write-shaped. */
|
|
916
926
|
kind: "action" | "mutation" | "query";
|
|
917
927
|
/** `true` when the handler runs an AI generation (`generateText`/`streamText`/`generateObject`/`streamObject`) with no `maxOutputTokens` bound. Read by the `ai_unbounded_generation_public` lint (paired with public visibility). */
|
|
@@ -3633,6 +3643,13 @@ declare const shapeUnknownTable: Lint;
|
|
|
3633
3643
|
* lint (a CAPTCHA stops bots; the email gate stops throwaway domains — both are
|
|
3634
3644
|
* worth having).
|
|
3635
3645
|
*
|
|
3646
|
+
* A procedure that declares **no email-shaped argument** is skipped: the gate
|
|
3647
|
+
* needs a selector onto an address, so there is nothing to action. Without that
|
|
3648
|
+
* check the lint fired on B2B membership writes — `members.add(userId, role)`,
|
|
3649
|
+
* `organizations.create(name, slug)` — whose only tie to the user table is the
|
|
3650
|
+
* word "member", and told the developer to write `email: (ctx) => ctx.args.email`
|
|
3651
|
+
* for an argument that does not exist.
|
|
3652
|
+
*
|
|
3636
3653
|
* Runs only when the codegen feeder supplies protection evidence
|
|
3637
3654
|
* (`context.procedureProtections`); a runtime caller with no evidence flags
|
|
3638
3655
|
* nothing.
|
package/dist/index.d.ts
CHANGED
|
@@ -912,6 +912,16 @@ interface AdvisorProcedureProtection {
|
|
|
912
912
|
fanOut: boolean;
|
|
913
913
|
/** Source file relative to the lunora dir, no extension. */
|
|
914
914
|
file: string;
|
|
915
|
+
/**
|
|
916
|
+
* `true` when the procedure declares an email-shaped argument. Read by the
|
|
917
|
+
* `signup_mutation_without_disposable_gating` lint: `emailGateMiddleware`
|
|
918
|
+
* gates an address selected off the args, so a procedure that never receives
|
|
919
|
+
* one cannot action the lint no matter what table it writes.
|
|
920
|
+
*
|
|
921
|
+
* Optional so a feeder predating this field (or a runtime caller) is treated
|
|
922
|
+
* as "unknown" rather than silently clearing every finding.
|
|
923
|
+
*/
|
|
924
|
+
hasEmailArg?: boolean;
|
|
915
925
|
/** Registration kind — `query` is read-only; `mutation`/`action` are write-shaped. */
|
|
916
926
|
kind: "action" | "mutation" | "query";
|
|
917
927
|
/** `true` when the handler runs an AI generation (`generateText`/`streamText`/`generateObject`/`streamObject`) with no `maxOutputTokens` bound. Read by the `ai_unbounded_generation_public` lint (paired with public visibility). */
|
|
@@ -3633,6 +3643,13 @@ declare const shapeUnknownTable: Lint;
|
|
|
3633
3643
|
* lint (a CAPTCHA stops bots; the email gate stops throwaway domains — both are
|
|
3634
3644
|
* worth having).
|
|
3635
3645
|
*
|
|
3646
|
+
* A procedure that declares **no email-shaped argument** is skipped: the gate
|
|
3647
|
+
* needs a selector onto an address, so there is nothing to action. Without that
|
|
3648
|
+
* check the lint fired on B2B membership writes — `members.add(userId, role)`,
|
|
3649
|
+
* `organizations.create(name, slug)` — whose only tie to the user table is the
|
|
3650
|
+
* word "member", and told the developer to write `email: (ctx) => ctx.args.email`
|
|
3651
|
+
* for an argument that does not exist.
|
|
3652
|
+
*
|
|
3636
3653
|
* Runs only when the codegen feeder supplies protection evidence
|
|
3637
3654
|
* (`context.procedureProtections`); a runtime caller with no evidence flags
|
|
3638
3655
|
* nothing.
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{dedupeCacheKeys as a}from"./packem_shared/dedupeCacheKeys-7JgxaQWV.mjs";import m from"./packem_shared/constraintValidator-N339mfyx.mjs";import s from"./packem_shared/hotShard-DVs_U17R.mjs";import n from"./packem_shared/indexUtilization-QfbIH_w4.mjs";import p from"./packem_shared/actionFetchSsrf-BbWxy1Yf.mjs";import f from"./packem_shared/adminRouteWithoutGuard-DSo4t9j4.mjs";import l from"./packem_shared/aiRawRunEscapeHatch-DfhjYm43.mjs";import u from"./packem_shared/aiToolSideEffectPromptInjection-DnWQOoKi.mjs";import d from"./packem_shared/aiUnboundedGenerationPublic-D3HZrh5_.mjs";import c from"./packem_shared/allowUnauthenticatedShardAccessEnabled-D4aMNBb0.mjs";import $ from"./packem_shared/authApiCallWithoutHeaders-BItMMdZP.mjs";import h from"./packem_shared/authCsrfCheckDisabled-De9ammtV.mjs";import g from"./packem_shared/authEmailVerificationDisabled-BFKdJcx4.mjs";import U from"./packem_shared/authSecureCookiesDisabled-B4WIzvMm.mjs";import b from"./packem_shared/authSessionFreshageZero-Bpcaf_Pe.mjs";import S from"./packem_shared/authScimWithoutTransactions-DCtLXzks.mjs";import I from"./packem_shared/authTrustedOriginsWildcard-DjU9NXEm.mjs";import A from"./packem_shared/browserAllowPrivateTargets-Dxyeh6lg.mjs";import T from"./packem_shared/browserUserUrlWithoutAllowlist-BHBS6b0N.mjs";import y from"./packem_shared/circularFk-BMuJKmuZ.mjs";import w from"./packem_shared/containerInstanceKeyFromUserInput-C8S4T3ty.mjs";import R from"./packem_shared/containerOversizedInstance-B9wW_sU5.mjs";import k from"./packem_shared/containerPublicInternet-Bx2J7tha.mjs";import W from"./packem_shared/containerRuntimeEgressRelaxation-BQ2ZD1aV.mjs";import F from"./packem_shared/containerStartEnableInternetOverride-B62WUura.mjs";import x from"./packem_shared/duplicateIndex-DFT7qLQD.mjs";import C from"./packem_shared/emptyIndex-BiXEfyfN.mjs";import P from"./packem_shared/exportSinkMisconfigured-DvpAaa6j.mjs";import v from"./packem_shared/externalSourceIncrementalNoDeletePath-DnoL64YY.mjs";import M from"./packem_shared/externalSourceOnGlobal-DNPLoNUg.mjs";import D from"./packem_shared/externalSourceUnscoped-DqBp5jYr.mjs";import N from"./packem_shared/filterWithoutIndex-ht2GZQWV.mjs";import O from"./packem_shared/flagGatesSecurityWithUnsafeDefault-DPGFEHTt.mjs";import E from"./packem_shared/geoIndexFieldNotGeopoint-DAGLZtaH.mjs";import G from"./packem_shared/geoIndexUnused-BgDE6_AR.mjs";import z from"./packem_shared/hardcodedSecret-rIRc3aNk.mjs";import K from"./packem_shared/httpActionMissingAuthGuard-BZDdeW_D.mjs";import L from"./packem_shared/httpActionResponseHeaderInjection-D063rB7U.mjs";import V from"./packem_shared/hyperdriveOutsideAction-CRmOQz67.mjs";import j from"./packem_shared/identityUndeclaredClaimTrusted-BYRYGQ74.mjs";import q from"./packem_shared/imagesUrlSourceFromUserInput-Cy5pc_dA.mjs";import _ from"./packem_shared/indexReferencesUnknownField-r3QHlaz6.mjs";import H from"./packem_shared/insertManyUnsafeUserData-DrH7PdRs.mjs";import B from"./packem_shared/kvUnscopedUserKeyIdor-B4lGxRxh.mjs";import Q from"./packem_shared/mailInboundDispatchWithoutVerify-BivYJ5F9.mjs";import Z from"./packem_shared/mailRecipientFromRequestInput-BR_oSh65.mjs";import J from"./packem_shared/maskUncoveredPiiColumn-DqPfZM2O.mjs";import X from"./packem_shared/maskWeakHashStrategyOnPii-CEiiGgT7.mjs";import Y from"./packem_shared/maskedRelationLeakViaWith-CxYk0MDW.mjs";import oo from"./packem_shared/mutatorFullRowReplace-CEgecSGm.mjs";import ro from"./packem_shared/nondeterministicQueryMutation-BaMfbAk_.mjs";import to from"./packem_shared/normalizeIdUsedAsAuthorization-FjISSXJm.mjs";import io from"./packem_shared/notifyMissingPushConfig-C_GbVw3S.mjs";import eo from"./packem_shared/notifySendOutsideAction-B0jZuUP3.mjs";import ao from"./packem_shared/outputProjectionMissingOnPublicRead-9Pm9766s.mjs";import mo from"./packem_shared/ownerFieldFromArgsNotAuth-BoR9vvst.mjs";import so from"./packem_shared/paymentCreateWithoutAuthorize-CurtqN8K.mjs";import no from"./packem_shared/paymentWebhookWideTolerance-I7ingfR8.mjs";import po from"./packem_shared/plaintextSecretInWranglerVariables-DXjKIm8H.mjs";import fo from"./packem_shared/policyReferencesUnknownTable-D3WelAQa.mjs";import lo from"./packem_shared/privilegedDispatchUnvalidatedPayload-74GuGye1.mjs";import uo from"./packem_shared/privilegedFanoutFromPublicProcedure-C2j2GSUN.mjs";import co from"./packem_shared/publicArgumentUsesAny-BJb4cTqL.mjs";import $o from"./packem_shared/publicMutationWithoutRatelimit-D9phluHW.mjs";import ho from"./packem_shared/publicTableRlsOptoutConfusion-CaWtPGAn.mjs";import go from"./packem_shared/queueWithoutDlq-BLY3iy9Q.mjs";import Uo from"./packem_shared/r2sqlOutsideAction-CKK_I1Ms.mjs";import bo from"./packem_shared/ratelimitDefaultMemoryStore-mOdI3Jmb.mjs";import So from"./packem_shared/ratelimitKeySpoofableOrGlobal-DaGId_Fh.mjs";import Io from"./packem_shared/ratelimitMiddlewareFailOpen-CTWVosEc.mjs";import Ao from"./packem_shared/relationReferencesUnknownField-clqyB69Y.mjs";import To from"./packem_shared/relationReferencesUnknownTable-CLdrhkmS.mjs";import yo from"./packem_shared/rlsUncoveredTable-DYHgnoos.mjs";import wo from"./packem_shared/shapeTargetsGlobalTable-Blz-aSkg.mjs";import Ro from"./packem_shared/shapeUnknownTable-DFxtyFio.mjs";import ko from"./packem_shared/signupMutationWithoutDisposableGating-3ir808Vz.mjs";import Wo from"./packem_shared/softDeleteIncludeDeletedFromArgs-DgxpQHRA.mjs";import Fo from"./packem_shared/sqlInjectionRisk-D2NaT-5c.mjs";import xo from"./packem_shared/storageGenerateUploadUrlNoContentTypePin-C9cjl6Jh.mjs";import Co from"./packem_shared/storageKeyFromUserArgs-BeS5cp56.mjs";import Po from"./packem_shared/storagePresignedUrlForPrivateContent-j7VhwIdu.mjs";import vo from"./packem_shared/storageUploadWithoutContentTypeAllowlist-oxKLecuf.mjs";import Mo from"./packem_shared/storageUploadWithoutMaxSize-DUDxPutk.mjs";import Do from"./packem_shared/tableWithoutInsert-D3AhaNzR.mjs";import No from"./packem_shared/ttlFieldNotTimestamp-BFiRkSZD.mjs";import Oo from"./packem_shared/unboundedStringArgument-AkkIcr-S.mjs";import Eo from"./packem_shared/unindexedForeignKey-DK4eWXkb.mjs";import Go from"./packem_shared/unindexedRelationTarget-B5fFq1E8.mjs";import zo from"./packem_shared/unrestrictedWhereBranch-YKiydie4.mjs";import Ko from"./packem_shared/userCreatingMutationWithoutCaptcha-iDjRkUFO.mjs";import Lo from"./packem_shared/vectorsNamespaceFromUserInput-Cyq5B2kF.mjs";import Vo from"./packem_shared/workflowDuplicateStepName-cXF6Rpvg.mjs";import jo from"./packem_shared/workflowUnknownTarget-JF8rITLP.mjs";import qo from"./packem_shared/workflowUnused-Dx_FQwGE.mjs";import{AE_METRIC_EVENTS as Et,loadAnalyticsRuntimeMetrics as Gt}from"./packem_shared/AE_METRIC_EVENTS-LP_0D7Uw.mjs";import{fromServerSchema as Kt}from"./packem_shared/fromServerSchema-CJ-AQ2kw.mjs";const _o=[_,To,Ao,jo,Vo,Ro,v,M,D,C,E,G,P,No,y,Eo,Go,x,Do,qo,go,N,wo,oo,ro,V,Uo,$,fo,yo,J,X,R,k,$o,zo,Ko,ko,co,Oo,z,Fo,f,so,Q,bo,A,uo,H,d,p,mo,Co,B,w,l,Lo,Z,T,lo,F,W,S,I,h,U,g,b,q,So,ho,c,vo,Mo,xo,Po,K,L,Io,O,u,j,no,Wo,Y,ao,to,eo,io,po],Ho=[s,n,m],Bo=[..._o,...Ho],Dt=(i,o={})=>{const e=o.lints??Bo,r=[];for(const t of e)o.source!==void 0&&t.source!==o.source||r.push(...t.run(i));return a(r)};export{Et as AE_METRIC_EVENTS,Bo as ALL_LINTS,Ho as RUNTIME_LINTS,_o as STATIC_LINTS,p as actionFetchSsrf,f as adminRouteWithoutGuard,l as aiRawRunEscapeHatch,u as aiToolSideEffectPromptInjection,d as aiUnboundedGenerationPublic,c as allowUnauthenticatedShardAccessEnabled,$ as authApiCallWithoutHeaders,h as authCsrfCheckDisabled,g as authEmailVerificationDisabled,S as authScimWithoutTransactions,U as authSecureCookiesDisabled,b as authSessionFreshageZero,I as authTrustedOriginsWildcard,A as browserAllowPrivateTargets,T as browserUserUrlWithoutAllowlist,y as circularFk,m as constraintValidator,w as containerInstanceKeyFromUserInput,R as containerOversizedInstance,k as containerPublicInternet,W as containerRuntimeEgressRelaxation,F as containerStartEnableInternetOverride,a as dedupeCacheKeys,x as duplicateIndex,C as emptyIndex,P as exportSinkMisconfigured,v as externalSourceIncrementalNoDeletePath,M as externalSourceOnGlobal,D as externalSourceUnscoped,N as filterWithoutIndex,O as flagGatesSecurityWithUnsafeDefault,Kt as fromServerSchema,E as geoIndexFieldNotGeopoint,G as geoIndexUnused,z as hardcodedSecret,s as hotShard,K as httpActionMissingAuthGuard,L as httpActionResponseHeaderInjection,V as hyperdriveOutsideAction,j as identityUndeclaredClaimTrusted,q as imagesUrlSourceFromUserInput,_ as indexReferencesUnknownField,n as indexUtilization,H as insertManyUnsafeUserData,B as kvUnscopedUserKeyIdor,Gt as loadAnalyticsRuntimeMetrics,Q as mailInboundDispatchWithoutVerify,Z as mailRecipientFromRequestInput,J as maskUncoveredPiiColumn,X as maskWeakHashStrategyOnPii,Y as maskedRelationLeakViaWith,oo as mutatorFullRowReplace,ro as nondeterministicQueryMutation,to as normalizeIdUsedAsAuthorization,io as notifyMissingPushConfig,eo as notifySendOutsideAction,ao as outputProjectionMissingOnPublicRead,mo as ownerFieldFromArgsNotAuth,so as paymentCreateWithoutAuthorize,no as paymentWebhookWideTolerance,po as plaintextSecretInWranglerVariables,fo as policyReferencesUnknownTable,lo as privilegedDispatchUnvalidatedPayload,uo as privilegedFanoutFromPublicProcedure,co as publicArgumentUsesAny,$o as publicMutationWithoutRatelimit,ho as publicTableRlsOptoutConfusion,go as queueWithoutDlq,Uo as r2sqlOutsideAction,bo as ratelimitDefaultMemoryStore,So as ratelimitKeySpoofableOrGlobal,Io as ratelimitMiddlewareFailOpen,Ao as relationReferencesUnknownField,To as relationReferencesUnknownTable,yo as rlsUncoveredTable,Dt as runAdvisor,wo as shapeTargetsGlobalTable,Ro as shapeUnknownTable,ko as signupMutationWithoutDisposableGating,Wo as softDeleteIncludeDeletedFromArgs,Fo as sqlInjectionRisk,xo as storageGenerateUploadUrlNoContentTypePin,Co as storageKeyFromUserArgs,Po as storagePresignedUrlForPrivateContent,vo as storageUploadWithoutContentTypeAllowlist,Mo as storageUploadWithoutMaxSize,Do as tableWithoutInsert,No as ttlFieldNotTimestamp,Oo as unboundedStringArgument,Eo as unindexedForeignKey,Go as unindexedRelationTarget,zo as unrestrictedWhereBranch,Ko as userCreatingMutationWithoutCaptcha,Lo as vectorsNamespaceFromUserInput,Vo as workflowDuplicateStepName,jo as workflowUnknownTarget,qo as workflowUnused};
|
|
1
|
+
import{dedupeCacheKeys as a}from"./packem_shared/dedupeCacheKeys-7JgxaQWV.mjs";import m from"./packem_shared/constraintValidator-N339mfyx.mjs";import s from"./packem_shared/hotShard-DVs_U17R.mjs";import n from"./packem_shared/indexUtilization-QfbIH_w4.mjs";import p from"./packem_shared/actionFetchSsrf-BbWxy1Yf.mjs";import f from"./packem_shared/adminRouteWithoutGuard-DSo4t9j4.mjs";import l from"./packem_shared/aiRawRunEscapeHatch-DfhjYm43.mjs";import u from"./packem_shared/aiToolSideEffectPromptInjection-DnWQOoKi.mjs";import d from"./packem_shared/aiUnboundedGenerationPublic-D3HZrh5_.mjs";import c from"./packem_shared/allowUnauthenticatedShardAccessEnabled-D4aMNBb0.mjs";import $ from"./packem_shared/authApiCallWithoutHeaders-BItMMdZP.mjs";import h from"./packem_shared/authCsrfCheckDisabled-De9ammtV.mjs";import g from"./packem_shared/authEmailVerificationDisabled-BFKdJcx4.mjs";import U from"./packem_shared/authSecureCookiesDisabled-B4WIzvMm.mjs";import b from"./packem_shared/authSessionFreshageZero-Bpcaf_Pe.mjs";import S from"./packem_shared/authScimWithoutTransactions-DCtLXzks.mjs";import I from"./packem_shared/authTrustedOriginsWildcard-DjU9NXEm.mjs";import A from"./packem_shared/browserAllowPrivateTargets-Dxyeh6lg.mjs";import T from"./packem_shared/browserUserUrlWithoutAllowlist-BHBS6b0N.mjs";import y from"./packem_shared/circularFk-BMuJKmuZ.mjs";import w from"./packem_shared/containerInstanceKeyFromUserInput-C8S4T3ty.mjs";import R from"./packem_shared/containerOversizedInstance-B9wW_sU5.mjs";import k from"./packem_shared/containerPublicInternet-Bx2J7tha.mjs";import W from"./packem_shared/containerRuntimeEgressRelaxation-BQ2ZD1aV.mjs";import F from"./packem_shared/containerStartEnableInternetOverride-B62WUura.mjs";import x from"./packem_shared/duplicateIndex-DFT7qLQD.mjs";import C from"./packem_shared/emptyIndex-BiXEfyfN.mjs";import P from"./packem_shared/exportSinkMisconfigured-DvpAaa6j.mjs";import v from"./packem_shared/externalSourceIncrementalNoDeletePath-DnoL64YY.mjs";import M from"./packem_shared/externalSourceOnGlobal-DNPLoNUg.mjs";import D from"./packem_shared/externalSourceUnscoped-DqBp5jYr.mjs";import N from"./packem_shared/filterWithoutIndex-ht2GZQWV.mjs";import O from"./packem_shared/flagGatesSecurityWithUnsafeDefault-DPGFEHTt.mjs";import E from"./packem_shared/geoIndexFieldNotGeopoint-DAGLZtaH.mjs";import G from"./packem_shared/geoIndexUnused-BgDE6_AR.mjs";import z from"./packem_shared/hardcodedSecret-rIRc3aNk.mjs";import K from"./packem_shared/httpActionMissingAuthGuard-BZDdeW_D.mjs";import L from"./packem_shared/httpActionResponseHeaderInjection-D063rB7U.mjs";import V from"./packem_shared/hyperdriveOutsideAction-CRmOQz67.mjs";import j from"./packem_shared/identityUndeclaredClaimTrusted-BYRYGQ74.mjs";import q from"./packem_shared/imagesUrlSourceFromUserInput-Cy5pc_dA.mjs";import _ from"./packem_shared/indexReferencesUnknownField-r3QHlaz6.mjs";import H from"./packem_shared/insertManyUnsafeUserData-DrH7PdRs.mjs";import B from"./packem_shared/kvUnscopedUserKeyIdor-B4lGxRxh.mjs";import Q from"./packem_shared/mailInboundDispatchWithoutVerify-BivYJ5F9.mjs";import Z from"./packem_shared/mailRecipientFromRequestInput-BR_oSh65.mjs";import J from"./packem_shared/maskUncoveredPiiColumn-DqPfZM2O.mjs";import X from"./packem_shared/maskWeakHashStrategyOnPii-CEiiGgT7.mjs";import Y from"./packem_shared/maskedRelationLeakViaWith-CxYk0MDW.mjs";import oo from"./packem_shared/mutatorFullRowReplace-CEgecSGm.mjs";import ro from"./packem_shared/nondeterministicQueryMutation-BaMfbAk_.mjs";import to from"./packem_shared/normalizeIdUsedAsAuthorization-FjISSXJm.mjs";import io from"./packem_shared/notifyMissingPushConfig-C_GbVw3S.mjs";import eo from"./packem_shared/notifySendOutsideAction-B0jZuUP3.mjs";import ao from"./packem_shared/outputProjectionMissingOnPublicRead-9Pm9766s.mjs";import mo from"./packem_shared/ownerFieldFromArgsNotAuth-BoR9vvst.mjs";import so from"./packem_shared/paymentCreateWithoutAuthorize-CurtqN8K.mjs";import no from"./packem_shared/paymentWebhookWideTolerance-I7ingfR8.mjs";import po from"./packem_shared/plaintextSecretInWranglerVariables-DXjKIm8H.mjs";import fo from"./packem_shared/policyReferencesUnknownTable-D3WelAQa.mjs";import lo from"./packem_shared/privilegedDispatchUnvalidatedPayload-74GuGye1.mjs";import uo from"./packem_shared/privilegedFanoutFromPublicProcedure-C2j2GSUN.mjs";import co from"./packem_shared/publicArgumentUsesAny-BJb4cTqL.mjs";import $o from"./packem_shared/publicMutationWithoutRatelimit-D9phluHW.mjs";import ho from"./packem_shared/publicTableRlsOptoutConfusion-CaWtPGAn.mjs";import go from"./packem_shared/queueWithoutDlq-BLY3iy9Q.mjs";import Uo from"./packem_shared/r2sqlOutsideAction-CKK_I1Ms.mjs";import bo from"./packem_shared/ratelimitDefaultMemoryStore-mOdI3Jmb.mjs";import So from"./packem_shared/ratelimitKeySpoofableOrGlobal-DaGId_Fh.mjs";import Io from"./packem_shared/ratelimitMiddlewareFailOpen-CTWVosEc.mjs";import Ao from"./packem_shared/relationReferencesUnknownField-clqyB69Y.mjs";import To from"./packem_shared/relationReferencesUnknownTable-CLdrhkmS.mjs";import yo from"./packem_shared/rlsUncoveredTable-DYHgnoos.mjs";import wo from"./packem_shared/shapeTargetsGlobalTable-Blz-aSkg.mjs";import Ro from"./packem_shared/shapeUnknownTable-DFxtyFio.mjs";import ko from"./packem_shared/signupMutationWithoutDisposableGating-BNzlsE0F.mjs";import Wo from"./packem_shared/softDeleteIncludeDeletedFromArgs-DgxpQHRA.mjs";import Fo from"./packem_shared/sqlInjectionRisk-D2NaT-5c.mjs";import xo from"./packem_shared/storageGenerateUploadUrlNoContentTypePin-C9cjl6Jh.mjs";import Co from"./packem_shared/storageKeyFromUserArgs-BeS5cp56.mjs";import Po from"./packem_shared/storagePresignedUrlForPrivateContent-j7VhwIdu.mjs";import vo from"./packem_shared/storageUploadWithoutContentTypeAllowlist-oxKLecuf.mjs";import Mo from"./packem_shared/storageUploadWithoutMaxSize-DUDxPutk.mjs";import Do from"./packem_shared/tableWithoutInsert-D3AhaNzR.mjs";import No from"./packem_shared/ttlFieldNotTimestamp-BFiRkSZD.mjs";import Oo from"./packem_shared/unboundedStringArgument-AkkIcr-S.mjs";import Eo from"./packem_shared/unindexedForeignKey-DK4eWXkb.mjs";import Go from"./packem_shared/unindexedRelationTarget-B5fFq1E8.mjs";import zo from"./packem_shared/unrestrictedWhereBranch-YKiydie4.mjs";import Ko from"./packem_shared/userCreatingMutationWithoutCaptcha-iDjRkUFO.mjs";import Lo from"./packem_shared/vectorsNamespaceFromUserInput-Cyq5B2kF.mjs";import Vo from"./packem_shared/workflowDuplicateStepName-cXF6Rpvg.mjs";import jo from"./packem_shared/workflowUnknownTarget-JF8rITLP.mjs";import qo from"./packem_shared/workflowUnused-Dx_FQwGE.mjs";import{AE_METRIC_EVENTS as Et,loadAnalyticsRuntimeMetrics as Gt}from"./packem_shared/AE_METRIC_EVENTS-LP_0D7Uw.mjs";import{fromServerSchema as Kt}from"./packem_shared/fromServerSchema-CJ-AQ2kw.mjs";const _o=[_,To,Ao,jo,Vo,Ro,v,M,D,C,E,G,P,No,y,Eo,Go,x,Do,qo,go,N,wo,oo,ro,V,Uo,$,fo,yo,J,X,R,k,$o,zo,Ko,ko,co,Oo,z,Fo,f,so,Q,bo,A,uo,H,d,p,mo,Co,B,w,l,Lo,Z,T,lo,F,W,S,I,h,U,g,b,q,So,ho,c,vo,Mo,xo,Po,K,L,Io,O,u,j,no,Wo,Y,ao,to,eo,io,po],Ho=[s,n,m],Bo=[..._o,...Ho],Dt=(i,o={})=>{const e=o.lints??Bo,r=[];for(const t of e)o.source!==void 0&&t.source!==o.source||r.push(...t.run(i));return a(r)};export{Et as AE_METRIC_EVENTS,Bo as ALL_LINTS,Ho as RUNTIME_LINTS,_o as STATIC_LINTS,p as actionFetchSsrf,f as adminRouteWithoutGuard,l as aiRawRunEscapeHatch,u as aiToolSideEffectPromptInjection,d as aiUnboundedGenerationPublic,c as allowUnauthenticatedShardAccessEnabled,$ as authApiCallWithoutHeaders,h as authCsrfCheckDisabled,g as authEmailVerificationDisabled,S as authScimWithoutTransactions,U as authSecureCookiesDisabled,b as authSessionFreshageZero,I as authTrustedOriginsWildcard,A as browserAllowPrivateTargets,T as browserUserUrlWithoutAllowlist,y as circularFk,m as constraintValidator,w as containerInstanceKeyFromUserInput,R as containerOversizedInstance,k as containerPublicInternet,W as containerRuntimeEgressRelaxation,F as containerStartEnableInternetOverride,a as dedupeCacheKeys,x as duplicateIndex,C as emptyIndex,P as exportSinkMisconfigured,v as externalSourceIncrementalNoDeletePath,M as externalSourceOnGlobal,D as externalSourceUnscoped,N as filterWithoutIndex,O as flagGatesSecurityWithUnsafeDefault,Kt as fromServerSchema,E as geoIndexFieldNotGeopoint,G as geoIndexUnused,z as hardcodedSecret,s as hotShard,K as httpActionMissingAuthGuard,L as httpActionResponseHeaderInjection,V as hyperdriveOutsideAction,j as identityUndeclaredClaimTrusted,q as imagesUrlSourceFromUserInput,_ as indexReferencesUnknownField,n as indexUtilization,H as insertManyUnsafeUserData,B as kvUnscopedUserKeyIdor,Gt as loadAnalyticsRuntimeMetrics,Q as mailInboundDispatchWithoutVerify,Z as mailRecipientFromRequestInput,J as maskUncoveredPiiColumn,X as maskWeakHashStrategyOnPii,Y as maskedRelationLeakViaWith,oo as mutatorFullRowReplace,ro as nondeterministicQueryMutation,to as normalizeIdUsedAsAuthorization,io as notifyMissingPushConfig,eo as notifySendOutsideAction,ao as outputProjectionMissingOnPublicRead,mo as ownerFieldFromArgsNotAuth,so as paymentCreateWithoutAuthorize,no as paymentWebhookWideTolerance,po as plaintextSecretInWranglerVariables,fo as policyReferencesUnknownTable,lo as privilegedDispatchUnvalidatedPayload,uo as privilegedFanoutFromPublicProcedure,co as publicArgumentUsesAny,$o as publicMutationWithoutRatelimit,ho as publicTableRlsOptoutConfusion,go as queueWithoutDlq,Uo as r2sqlOutsideAction,bo as ratelimitDefaultMemoryStore,So as ratelimitKeySpoofableOrGlobal,Io as ratelimitMiddlewareFailOpen,Ao as relationReferencesUnknownField,To as relationReferencesUnknownTable,yo as rlsUncoveredTable,Dt as runAdvisor,wo as shapeTargetsGlobalTable,Ro as shapeUnknownTable,ko as signupMutationWithoutDisposableGating,Wo as softDeleteIncludeDeletedFromArgs,Fo as sqlInjectionRisk,xo as storageGenerateUploadUrlNoContentTypePin,Co as storageKeyFromUserArgs,Po as storagePresignedUrlForPrivateContent,vo as storageUploadWithoutContentTypeAllowlist,Mo as storageUploadWithoutMaxSize,Do as tableWithoutInsert,No as ttlFieldNotTimestamp,Oo as unboundedStringArgument,Eo as unindexedForeignKey,Go as unindexedRelationTarget,zo as unrestrictedWhereBranch,Ko as userCreatingMutationWithoutCaptcha,Lo as vectorsNamespaceFromUserInput,Vo as workflowDuplicateStepName,jo as workflowUnknownTarget,qo as workflowUnused};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i}from"./finding-BAVgqnCF.mjs";import{i as s}from"./helpers-DwlvEUCh.mjs";const o={categories:["SECURITY"],description:"A public `mutation`/`action` that creates a user/session/account row has no disposable-email gate. Throwaway mailboxes farm free trials, evade bans, and pollute the user table.",facing:"EXTERNAL",level:"WARN",name:"signup_mutation_without_disposable_gating",remediation:"Add `.use(emailGateMiddleware({ email: (ctx) => ctx.args.email }))` from `@lunora/auth/email-guard` to reject disposable domains at signup, or gate better-auth's native signup with `withEmailGate(...)` / `emailGateDatabaseHooks(...)`.",run:a=>{if(a.procedureProtections===void 0)return[];const t=[];for(const e of a.procedureProtections)!s(e)||!e.writesUserTable||e.usesEmailGate||t.push(i(o,{cacheKey:`signup_mutation_without_disposable_gating:${e.file}:${e.exportName}`,detail:`Public ${e.kind} \`${e.exportName}\` (${e.file}) writes a user/session/account table but has no disposable-email gate. Add \`.use(emailGateMiddleware(...))\` from \`@lunora/auth/email-guard\`.`,metadata:{exportName:e.exportName,file:e.file,kind:e.kind,writesUserTable:e.writesUserTable}}));return t},source:"static",title:"Account-creating write without a disposable-email gate"};export{o as default};
|
|
1
|
+
import{i}from"./finding-BAVgqnCF.mjs";import{i as s}from"./helpers-DwlvEUCh.mjs";const o={categories:["SECURITY"],description:"A public `mutation`/`action` that creates a user/session/account row has no disposable-email gate. Throwaway mailboxes farm free trials, evade bans, and pollute the user table.",facing:"EXTERNAL",level:"WARN",name:"signup_mutation_without_disposable_gating",remediation:"Add `.use(emailGateMiddleware({ email: (ctx) => ctx.args.email }))` from `@lunora/auth/email-guard` to reject disposable domains at signup, or gate better-auth's native signup with `withEmailGate(...)` / `emailGateDatabaseHooks(...)`.",run:a=>{if(a.procedureProtections===void 0)return[];const t=[];for(const e of a.procedureProtections)!s(e)||!e.writesUserTable||e.usesEmailGate||e.hasEmailArg!==!1&&t.push(i(o,{cacheKey:`signup_mutation_without_disposable_gating:${e.file}:${e.exportName}`,detail:`Public ${e.kind} \`${e.exportName}\` (${e.file}) writes a user/session/account table but has no disposable-email gate. Add \`.use(emailGateMiddleware(...))\` from \`@lunora/auth/email-guard\`.`,metadata:{exportName:e.exportName,file:e.file,kind:e.kind,writesUserTable:e.writesUserTable}}));return t},source:"static",title:"Account-creating write without a disposable-email gate"};export{o as default};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lunora/advisor",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.52",
|
|
4
4
|
"description": "Schema & query lints (splinter-style advisors) for Lunora, feeding the Studio Advisors view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"advisor",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@lunora/errors": "1.0.0-alpha.8",
|
|
50
|
-
"@lunora/server": "1.0.0-alpha.
|
|
50
|
+
"@lunora/server": "1.0.0-alpha.49"
|
|
51
51
|
},
|
|
52
52
|
"engines": {
|
|
53
53
|
"node": "^22.15.0 || >=24.11.0"
|