@lockerverse/sdk 0.2.69 → 0.2.74

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/README.md CHANGED
@@ -128,6 +128,9 @@ const submission = await signup.submit({
128
128
  ```
129
129
 
130
130
  The signup client is stateless. Calls to `load` and `submit` are independent.
131
+ Signup definitions always have an enabled, required name field. For all other
132
+ built-in fields, a disabled field is never required. The SDK rejects a response
133
+ that breaks these rules before it reaches the UI.
131
134
  Create a submission reference before a request. If an error has
132
135
  `recoveryRecommended: true`, reuse that reference with the same values so
133
136
  Lockerverse can return the original submission.
package/dist/signup.js CHANGED
@@ -1,2 +1,2 @@
1
- import{A as e,C as t,D as n,M as r,T as i,a,c as o,f as s,h as c,j as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v,w as y,x as b}from"./transport.js";import{n as x}from"./types.js";const S=e({city:l(),country:l(),line1:l(),line2:y(b(l())),postalCode:l(),state:l()}),C=i(e({address:y(b(S)),answers:y(m(p)),email:y(b(l())),honeypot:y(l()),name:o,participantCount:y(b(v(0))),phone:y(b(l()))})),w=t({enabled:d(),required:d()}),T=n(t({config:t({builtInFields:t({address:w,email:w,name:w,participantCount:w,phone:w}),customFields:g}),coverImageUrl:u,description:u,id:o,isActive:d(),name:o,slug:o,title:u}),r(({config:e,...t})=>({...t,customFields:e.customFields,fields:e.builtInFields}))),E=n(a,c(({id:e})=>!!e.trim(),`Invalid signup submission ID.`)),D=i(T),O=i(E);function k(e,t,n){return e instanceof x?e:n(new x({code:`signup_submit_failed`,message:`Unable to submit Lockerverse signup.`,operation:`submit_signup`,recoveryRecommended:t,reportable:t}))}function A(e){let t=s(e),n=f({communitySlug:t.communitySlugValue,environment:t.environment,getContext:()=>({signupSlug:t.signupSlugValue}),onError:t.onError,resourceContextName:`lockerverse_signup`,sentryDsn:t.sentryDsn}),{requestJson:r}=_(t.fetchImplementation,e=>n(e.operation===`submit_signup`&&!e.recoveryRecommended?new x({code:e.code,message:e.message,operation:e.operation,recoveryRecommended:!0,reportable:e.reportable}):e),t.requestTimeoutMs),i=`${t.apiBaseUrl}/community/${t.communitySlug}/sign-up-widgets/${t.signupSlug}`;return{async load(){let e={code:`signup_load_failed`,message:`Unable to load Lockerverse signup.`,operation:`load_signup`},t=await r(i,void 0,D,e,e);if(!t.ok)throw n(new x({...e,reportable:t.response.status>=500,status:t.response.status}));return h(t.value)},async submit(e,t){let a=t?.submissionReference??globalThis.crypto.randomUUID(),o={code:`signup_submit_failed`,message:`Unable to submit Lockerverse signup.`,operation:`submit_signup`},s;try{s=C(e)}catch{throw n(new x({...o,message:`Lockerverse signup input is invalid.`,reportable:!1}))}let c=!1;try{let e=JSON.stringify({...s,submissionReference:a});c=!0;let t=await r(`${i}/submissions`,{body:e,headers:{"content-type":`application/json`},method:`POST`},O,o,o);if(!t.ok)throw n(new x({...o,recoveryRecommended:t.response.status>=500,reportable:t.response.status>=500,status:t.response.status}));let l=h(t.value);if(l.id!==a)throw n(new x({...o,recoveryRecommended:!0,reportable:!0}));return l}catch(e){throw k(e,c,n)}}}}export{A as createLockerverseSignupClient};
1
+ import{A as e,C as t,D as n,M as r,T as i,a,c as o,f as s,h as c,j as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v,w as y,x as b}from"./transport.js";import{n as x}from"./types.js";const S=e({city:l(),country:l(),line1:l(),line2:y(b(l())),postalCode:l(),state:l()}),C=i(e({address:y(b(S)),answers:y(m(p)),email:y(b(l())),honeypot:y(l()),name:o,participantCount:y(b(v(0))),phone:y(b(l()))})),w=t({enabled:d(),required:d()}),T=n(w,c(({enabled:e,required:t})=>e||!t,`A disabled signup field cannot be required.`)),E=n(w,c(({enabled:e,required:t})=>e&&t,`The signup name field must be enabled and required.`)),D=n(t({config:t({builtInFields:t({address:T,email:T,name:E,participantCount:T,phone:T}),customFields:g}),coverImageUrl:u,description:u,id:o,isActive:d(),name:o,slug:o,title:u}),r(({config:e,...t})=>({...t,customFields:e.customFields,fields:e.builtInFields}))),O=n(a,c(({id:e})=>!!e.trim(),`Invalid signup submission ID.`)),k=i(D),A=i(O);function j(e,t,n){return e instanceof x?e:n(new x({code:`signup_submit_failed`,message:`Unable to submit Lockerverse signup.`,operation:`submit_signup`,recoveryRecommended:t,reportable:t}))}function M(e){let t=s(e),n=f({communitySlug:t.communitySlugValue,environment:t.environment,getContext:()=>({signupSlug:t.signupSlugValue}),onError:t.onError,resourceContextName:`lockerverse_signup`,sentryDsn:t.sentryDsn}),{requestJson:r}=_(t.fetchImplementation,e=>n(e.operation===`submit_signup`&&!e.recoveryRecommended?new x({code:e.code,message:e.message,operation:e.operation,recoveryRecommended:!0,reportable:e.reportable}):e),t.requestTimeoutMs),i=`${t.apiBaseUrl}/community/${t.communitySlug}/sign-up-widgets/${t.signupSlug}`;return{async load(){let e={code:`signup_load_failed`,message:`Unable to load Lockerverse signup.`,operation:`load_signup`},t=await r(i,void 0,k,e,e);if(!t.ok)throw n(new x({...e,reportable:t.response.status>=500,status:t.response.status}));return h(t.value)},async submit(e,t){let a=t?.submissionReference??globalThis.crypto.randomUUID(),o={code:`signup_submit_failed`,message:`Unable to submit Lockerverse signup.`,operation:`submit_signup`},s;try{s=C(e)}catch{throw n(new x({...o,message:`Lockerverse signup input is invalid.`,reportable:!1}))}let c=!1;try{let e=JSON.stringify({...s,submissionReference:a});c=!0;let t=await r(`${i}/submissions`,{body:e,headers:{"content-type":`application/json`},method:`POST`},A,o,o);if(!t.ok)throw n(new x({...o,recoveryRecommended:t.response.status>=500,reportable:t.response.status>=500,status:t.response.status}));let l=h(t.value);if(l.id!==a)throw n(new x({...o,recoveryRecommended:!0,reportable:!0}));return l}catch(e){throw j(e,c,n)}}}}export{M as createLockerverseSignupClient};
2
2
  //# sourceMappingURL=signup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signup.js","names":[],"sources":["../src/signup-input-schema.ts","../src/signup-schemas.ts","../src/signup.ts"],"sourcesContent":["import {\n array,\n nullable,\n optional,\n parser,\n strictObject,\n string,\n} from \"valibot\";\n\nimport {\n customFieldAnswerSchema,\n nonEmptyStringSchema,\n safeIntegerSchema,\n} from \"./schema-helpers.ts\";\n\nconst signupAddressSchema = strictObject({\n city: string(),\n country: string(),\n line1: string(),\n line2: optional(nullable(string())),\n postalCode: string(),\n state: string(),\n});\n\nexport const parseSignupSubmission = parser(\n strictObject({\n address: optional(nullable(signupAddressSchema)),\n answers: optional(array(customFieldAnswerSchema)),\n email: optional(nullable(string())),\n honeypot: optional(string()),\n name: nonEmptyStringSchema,\n participantCount: optional(nullable(safeIntegerSchema(0))),\n phone: optional(nullable(string())),\n })\n);\n","import { boolean, check, object, parser, pipe, transform } from \"valibot\";\n\nimport { vPublicSignUpWidgetSubmissionResponseDto } from \"./generated/public-api/valibot.gen.ts\";\nimport {\n customFieldsSchema,\n nonEmptyStringSchema,\n optionalNullableStringSchema,\n} from \"./schema-helpers.ts\";\n\nconst signupFieldSchema = object({\n enabled: boolean(),\n required: boolean(),\n});\n\nexport const publicSignupSchema = pipe(\n object({\n config: object({\n builtInFields: object({\n address: signupFieldSchema,\n email: signupFieldSchema,\n name: signupFieldSchema,\n participantCount: signupFieldSchema,\n phone: signupFieldSchema,\n }),\n customFields: customFieldsSchema,\n }),\n coverImageUrl: optionalNullableStringSchema,\n description: optionalNullableStringSchema,\n id: nonEmptyStringSchema,\n isActive: boolean(),\n name: nonEmptyStringSchema,\n slug: nonEmptyStringSchema,\n title: optionalNullableStringSchema,\n }),\n transform(({ config, ...signup }) => ({\n ...signup,\n customFields: config.customFields,\n fields: config.builtInFields,\n }))\n);\n\nexport const signupSubmissionResultSchema = pipe(\n vPublicSignUpWidgetSubmissionResponseDto,\n check(({ id }) => Boolean(id.trim()), \"Invalid signup submission ID.\")\n);\n\nexport const parsePublicSignup = parser(publicSignupSchema);\nexport const parseSignupSubmissionResult = parser(signupSubmissionResultSchema);\n","import { deepFreeze } from \"./deep-freeze.ts\";\nimport { resolveSignupEnvironment } from \"./environment.ts\";\nimport { createSdkErrorReporter } from \"./error-reporting.ts\";\nimport { parseSignupSubmission } from \"./signup-input-schema.ts\";\nimport {\n parsePublicSignup,\n parseSignupSubmissionResult,\n} from \"./signup-schemas.ts\";\nimport type {\n CreateLockerverseSignupOptions,\n LockerverseSignupClient,\n LockerverseSignupSubmission,\n} from \"./signup-types.ts\";\nimport { createTransport } from \"./transport.ts\";\nimport { LockerverseSdkError } from \"./types.ts\";\n\nfunction classifySubmissionError(\n error: unknown,\n requestAttempted: boolean,\n reportError: (error: LockerverseSdkError) => LockerverseSdkError\n) {\n if (error instanceof LockerverseSdkError) {\n return error;\n }\n return reportError(\n new LockerverseSdkError({\n code: \"signup_submit_failed\",\n message: \"Unable to submit Lockerverse signup.\",\n operation: \"submit_signup\",\n recoveryRecommended: requestAttempted,\n reportable: requestAttempted,\n })\n );\n}\n\nexport function createLockerverseSignupClient(\n options: CreateLockerverseSignupOptions\n): LockerverseSignupClient {\n const runtime = resolveSignupEnvironment(options);\n const reportError = createSdkErrorReporter({\n communitySlug: runtime.communitySlugValue,\n environment: runtime.environment,\n getContext: () => ({ signupSlug: runtime.signupSlugValue }),\n onError: runtime.onError,\n resourceContextName: \"lockerverse_signup\",\n sentryDsn: runtime.sentryDsn,\n });\n const { requestJson } = createTransport(\n runtime.fetchImplementation,\n (error) =>\n reportError(\n error.operation === \"submit_signup\" && !error.recoveryRecommended\n ? new LockerverseSdkError({\n code: error.code,\n message: error.message,\n operation: error.operation,\n recoveryRecommended: true,\n reportable: error.reportable,\n })\n : error\n ),\n runtime.requestTimeoutMs\n );\n const signupUrl = `${runtime.apiBaseUrl}/community/${runtime.communitySlug}/sign-up-widgets/${runtime.signupSlug}`;\n\n return {\n async load() {\n const errorContext = {\n code: \"signup_load_failed\" as const,\n message: \"Unable to load Lockerverse signup.\",\n operation: \"load_signup\" as const,\n };\n const signupResponse = await requestJson(\n signupUrl,\n undefined,\n parsePublicSignup,\n errorContext,\n errorContext\n );\n if (!signupResponse.ok) {\n throw reportError(\n new LockerverseSdkError({\n ...errorContext,\n reportable: signupResponse.response.status >= 500,\n status: signupResponse.response.status,\n })\n );\n }\n return deepFreeze(signupResponse.value);\n },\n async submit(submission: LockerverseSignupSubmission, submitOptions) {\n const submissionReference =\n submitOptions?.submissionReference ?? globalThis.crypto.randomUUID();\n const errorContext = {\n code: \"signup_submit_failed\" as const,\n message: \"Unable to submit Lockerverse signup.\",\n operation: \"submit_signup\" as const,\n };\n let parsedSubmission: ReturnType<typeof parseSignupSubmission>;\n try {\n parsedSubmission = parseSignupSubmission(submission);\n } catch {\n // biome-ignore lint/style/useErrorCause: Raw validation errors must not escape the SDK boundary.\n throw reportError(\n new LockerverseSdkError({\n ...errorContext,\n message: \"Lockerverse signup input is invalid.\",\n reportable: false,\n })\n );\n }\n\n let requestAttempted = false;\n try {\n const body = JSON.stringify({\n ...parsedSubmission,\n submissionReference,\n });\n requestAttempted = true;\n const submissionResponse = await requestJson(\n `${signupUrl}/submissions`,\n {\n body,\n headers: { \"content-type\": \"application/json\" },\n method: \"POST\",\n },\n parseSignupSubmissionResult,\n errorContext,\n errorContext\n );\n if (!submissionResponse.ok) {\n throw reportError(\n new LockerverseSdkError({\n ...errorContext,\n recoveryRecommended: submissionResponse.response.status >= 500,\n reportable: submissionResponse.response.status >= 500,\n status: submissionResponse.response.status,\n })\n );\n }\n const result = deepFreeze(submissionResponse.value);\n if (result.id !== submissionReference) {\n throw reportError(\n new LockerverseSdkError({\n ...errorContext,\n recoveryRecommended: true,\n reportable: true,\n })\n );\n }\n return result;\n } catch (error) {\n throw classifySubmissionError(error, requestAttempted, reportError);\n }\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"signup.js","names":[],"sources":["../src/signup-input-schema.ts","../src/signup-schemas.ts","../src/signup.ts"],"sourcesContent":["import {\n array,\n nullable,\n optional,\n parser,\n strictObject,\n string,\n} from \"valibot\";\n\nimport {\n customFieldAnswerSchema,\n nonEmptyStringSchema,\n safeIntegerSchema,\n} from \"./schema-helpers.ts\";\n\nconst signupAddressSchema = strictObject({\n city: string(),\n country: string(),\n line1: string(),\n line2: optional(nullable(string())),\n postalCode: string(),\n state: string(),\n});\n\nexport const parseSignupSubmission = parser(\n strictObject({\n address: optional(nullable(signupAddressSchema)),\n answers: optional(array(customFieldAnswerSchema)),\n email: optional(nullable(string())),\n honeypot: optional(string()),\n name: nonEmptyStringSchema,\n participantCount: optional(nullable(safeIntegerSchema(0))),\n phone: optional(nullable(string())),\n })\n);\n","import { boolean, check, object, parser, pipe, transform } from \"valibot\";\n\nimport { vPublicSignUpWidgetSubmissionResponseDto } from \"./generated/public-api/valibot.gen.ts\";\nimport {\n customFieldsSchema,\n nonEmptyStringSchema,\n optionalNullableStringSchema,\n} from \"./schema-helpers.ts\";\n\nconst signupFieldSchema = object({\n enabled: boolean(),\n required: boolean(),\n});\n\nconst optionalSignupFieldSchema = pipe(\n signupFieldSchema,\n check(\n ({ enabled, required }) => enabled || !required,\n \"A disabled signup field cannot be required.\"\n )\n);\n\nconst requiredNameFieldSchema = pipe(\n signupFieldSchema,\n check(\n ({ enabled, required }) => enabled && required,\n \"The signup name field must be enabled and required.\"\n )\n);\n\nexport const publicSignupSchema = pipe(\n object({\n config: object({\n builtInFields: object({\n address: optionalSignupFieldSchema,\n email: optionalSignupFieldSchema,\n name: requiredNameFieldSchema,\n participantCount: optionalSignupFieldSchema,\n phone: optionalSignupFieldSchema,\n }),\n customFields: customFieldsSchema,\n }),\n coverImageUrl: optionalNullableStringSchema,\n description: optionalNullableStringSchema,\n id: nonEmptyStringSchema,\n isActive: boolean(),\n name: nonEmptyStringSchema,\n slug: nonEmptyStringSchema,\n title: optionalNullableStringSchema,\n }),\n transform(({ config, ...signup }) => ({\n ...signup,\n customFields: config.customFields,\n fields: config.builtInFields,\n }))\n);\n\nexport const signupSubmissionResultSchema = pipe(\n vPublicSignUpWidgetSubmissionResponseDto,\n check(({ id }) => Boolean(id.trim()), \"Invalid signup submission ID.\")\n);\n\nexport const parsePublicSignup = parser(publicSignupSchema);\nexport const parseSignupSubmissionResult = parser(signupSubmissionResultSchema);\n","import { deepFreeze } from \"./deep-freeze.ts\";\nimport { resolveSignupEnvironment } from \"./environment.ts\";\nimport { createSdkErrorReporter } from \"./error-reporting.ts\";\nimport { parseSignupSubmission } from \"./signup-input-schema.ts\";\nimport {\n parsePublicSignup,\n parseSignupSubmissionResult,\n} from \"./signup-schemas.ts\";\nimport type {\n CreateLockerverseSignupOptions,\n LockerverseSignupClient,\n LockerverseSignupSubmission,\n} from \"./signup-types.ts\";\nimport { createTransport } from \"./transport.ts\";\nimport { LockerverseSdkError } from \"./types.ts\";\n\nfunction classifySubmissionError(\n error: unknown,\n requestAttempted: boolean,\n reportError: (error: LockerverseSdkError) => LockerverseSdkError\n) {\n if (error instanceof LockerverseSdkError) {\n return error;\n }\n return reportError(\n new LockerverseSdkError({\n code: \"signup_submit_failed\",\n message: \"Unable to submit Lockerverse signup.\",\n operation: \"submit_signup\",\n recoveryRecommended: requestAttempted,\n reportable: requestAttempted,\n })\n );\n}\n\nexport function createLockerverseSignupClient(\n options: CreateLockerverseSignupOptions\n): LockerverseSignupClient {\n const runtime = resolveSignupEnvironment(options);\n const reportError = createSdkErrorReporter({\n communitySlug: runtime.communitySlugValue,\n environment: runtime.environment,\n getContext: () => ({ signupSlug: runtime.signupSlugValue }),\n onError: runtime.onError,\n resourceContextName: \"lockerverse_signup\",\n sentryDsn: runtime.sentryDsn,\n });\n const { requestJson } = createTransport(\n runtime.fetchImplementation,\n (error) =>\n reportError(\n error.operation === \"submit_signup\" && !error.recoveryRecommended\n ? new LockerverseSdkError({\n code: error.code,\n message: error.message,\n operation: error.operation,\n recoveryRecommended: true,\n reportable: error.reportable,\n })\n : error\n ),\n runtime.requestTimeoutMs\n );\n const signupUrl = `${runtime.apiBaseUrl}/community/${runtime.communitySlug}/sign-up-widgets/${runtime.signupSlug}`;\n\n return {\n async load() {\n const errorContext = {\n code: \"signup_load_failed\" as const,\n message: \"Unable to load Lockerverse signup.\",\n operation: \"load_signup\" as const,\n };\n const signupResponse = await requestJson(\n signupUrl,\n undefined,\n parsePublicSignup,\n errorContext,\n errorContext\n );\n if (!signupResponse.ok) {\n throw reportError(\n new LockerverseSdkError({\n ...errorContext,\n reportable: signupResponse.response.status >= 500,\n status: signupResponse.response.status,\n })\n );\n }\n return deepFreeze(signupResponse.value);\n },\n async submit(submission: LockerverseSignupSubmission, submitOptions) {\n const submissionReference =\n submitOptions?.submissionReference ?? globalThis.crypto.randomUUID();\n const errorContext = {\n code: \"signup_submit_failed\" as const,\n message: \"Unable to submit Lockerverse signup.\",\n operation: \"submit_signup\" as const,\n };\n let parsedSubmission: ReturnType<typeof parseSignupSubmission>;\n try {\n parsedSubmission = parseSignupSubmission(submission);\n } catch {\n // biome-ignore lint/style/useErrorCause: Raw validation errors must not escape the SDK boundary.\n throw reportError(\n new LockerverseSdkError({\n ...errorContext,\n message: \"Lockerverse signup input is invalid.\",\n reportable: false,\n })\n );\n }\n\n let requestAttempted = false;\n try {\n const body = JSON.stringify({\n ...parsedSubmission,\n submissionReference,\n });\n requestAttempted = true;\n const submissionResponse = await requestJson(\n `${signupUrl}/submissions`,\n {\n body,\n headers: { \"content-type\": \"application/json\" },\n method: \"POST\",\n },\n parseSignupSubmissionResult,\n errorContext,\n errorContext\n );\n if (!submissionResponse.ok) {\n throw reportError(\n new LockerverseSdkError({\n ...errorContext,\n recoveryRecommended: submissionResponse.response.status >= 500,\n reportable: submissionResponse.response.status >= 500,\n status: submissionResponse.response.status,\n })\n );\n }\n const result = deepFreeze(submissionResponse.value);\n if (result.id !== submissionReference) {\n throw reportError(\n new LockerverseSdkError({\n ...errorContext,\n recoveryRecommended: true,\n reportable: true,\n })\n );\n }\n return result;\n } catch (error) {\n throw classifySubmissionError(error, requestAttempted, reportError);\n }\n },\n };\n}\n"],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,2 +1,2 @@
1
- const e=`0.2.69`;var t=class extends Error{code;operation;reportable;recoveryRecommended;sdkVersion;status;constructor({code:t,message:n,operation:r,reportable:i,recoveryRecommended:a=!1,status:o}){super(n),this.name=`LockerverseSdkError`,this.code=t,this.operation=r,this.reportable=i,this.recoveryRecommended=a,this.sdkVersion=e,this.status=o}};export{t as n,e as t};
1
+ const e=`0.2.74`;var t=class extends Error{code;operation;reportable;recoveryRecommended;sdkVersion;status;constructor({code:t,message:n,operation:r,reportable:i,recoveryRecommended:a=!1,status:o}){super(n),this.name=`LockerverseSdkError`,this.code=t,this.operation=r,this.reportable=i,this.recoveryRecommended=a,this.sdkVersion=e,this.status=o}};export{t as n,e as t};
2
2
  //# sourceMappingURL=types.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lockerverse/sdk",
3
- "version": "0.2.69",
3
+ "version": "0.2.74",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/Lockerverse/lockerverse-sdk.git",