ylembed-js 1.0.0 → 1.0.2

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
@@ -13,7 +13,7 @@ If you prefer, you can also load the SDK script directly from our CDN via a scri
13
13
  For more detailed examples and docs, visit the [embedded components docs](https://docs.youlend.com/docs/embed-the-application-journey).
14
14
 
15
15
  ```typescript
16
- import { loadYlEmbed, YlEmbedOptions, ApplicationJourney } from '@youlend/yl-embed-sdk';
16
+ import { loadYlEmbed, YlEmbedOptions, ApplicationJourney } from 'ylembed-js';
17
17
 
18
18
  const options: YlEmbedOptions = {
19
19
  partnerName: 'your-partner-name',
package/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var l=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var u=(n,e)=>{for(var o in e)l(n,o,{get:e[o],enumerable:!0})},p=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of m(e))!a.call(n,r)&&r!==o&&l(n,r,{get:()=>e[r],enumerable:!(t=c(e,r))||t.enumerable});return n};var y=n=>p(l({},"__esModule",{value:!0}),n);var g={};u(g,{__resetYlEmbedPromiseForTest:()=>E,loadYlEmbed:()=>f});module.exports=y(g);var s="/v1/ylembed.js";var i=()=>`https://sdk.youlend.com${s}`,b=n=>{if(!n)return i();let e=n.replace(/^https?:\/\//,"");if(e.endsWith(".dev-youlend.com"))return`https://${e.replace(".dev-youlend.com","")}-sdk.dev-youlend.com${s}`;if(e==="staging.youlend.com")return`https://origin-sdk.staging-youlend.com${s}`;if(e==="partners.staging-youlend.com")return`https://partners-sdk.staging-youlend.com${s}`;if(e==="uspartners.staging-youlend.com")return`https://uspartners-sdk.staging-youlend.com${s}`;if(e==="youlend.com"||e==="youlend.us")return i();let o=i();return console.error(`Invalid URL override: ${n} - falling back to script src = ${o}`),o},d=null,f=n=>d||(d=new Promise((e,o)=>{if(typeof window>"u"){let r={open:()=>{},close:()=>{}};e({create:(w,Y)=>r});return}if(window.YlEmbed){e(new window.YlEmbed(n));return}let t=document.createElement("script");t.src=b(n.urlOverride),t.async=!0,t.onload=()=>{window.YlEmbed?e(new window.YlEmbed(n)):o(new Error("YlEmbed script loaded but window.YlEmbed is not available"))},t.onerror=()=>{o(new Error("Failed to load YlEmbed script from "+t.src))},document.head.appendChild(t)}),d),E=()=>{d=null};0&&(module.exports={__resetYlEmbedPromiseForTest,loadYlEmbed});
1
+ "use strict";var l=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var u=(n,e)=>{for(var o in e)l(n,o,{get:e[o],enumerable:!0})},p=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of a(e))!m.call(n,r)&&r!==o&&l(n,r,{get:()=>e[r],enumerable:!(t=c(e,r))||t.enumerable});return n};var y=n=>p(l({},"__esModule",{value:!0}),n);var g={};u(g,{__resetYlEmbedPromiseForTest:()=>E,loadYlEmbed:()=>f});module.exports=y(g);var s="/v1/ylembed.js";var i=()=>`https://sdk.youlend.com${s}`,b=n=>{if(!n)return i();let e=n.replace(/^https?:\/\//,"");if(e.endsWith(".dev-youlend.com"))return`https://${e.replace(".dev-youlend.com","")}-sdk.dev-youlend.com${s}`;if(e==="staging.youlend.com")return`https://origin-sdk.staging-youlend.com${s}`;if(e==="partners.staging-youlend.com")return`https://partners-sdk.staging-youlend.com${s}`;if(e==="uspartners.staging-youlend.com")return`https://uspartners-sdk.staging-youlend.com${s}`;if(e==="youlend.com"||e==="youlend.us")return i();if(e.startsWith("localhost"))return`https://elizabeth-sdk.dev-youlend.com${s}`;let o=i();return console.error(`Invalid URL override: ${n} - falling back to script src = ${o}`),o},d=null,f=n=>d||(d=new Promise((e,o)=>{if(typeof window>"u"){let r={open:()=>{},close:()=>{},destroy:()=>{}};e({create:(w,Y)=>r});return}if(window.YlEmbed){e(new window.YlEmbed(n));return}let t=document.createElement("script");t.src=b(n.urlOverride),t.async=!0,t.onload=()=>{window.YlEmbed?e(new window.YlEmbed(n)):o(new Error("YlEmbed script loaded but window.YlEmbed is not available"))},t.onerror=()=>{o(new Error("Failed to load YlEmbed script from "+t.src))},document.head.appendChild(t)}),d),E=()=>{d=null};0&&(module.exports={__resetYlEmbedPromiseForTest,loadYlEmbed});
2
2
  //# sourceMappingURL=index.cjs.map
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/generated-constants.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { YlEmbedOptions, YlEmbed, ApplicationJourney } from './types';\r\nimport { CDN_SCRIPT_PATH } from './generated-constants';\r\n\r\nexport * from './types';\r\n\r\nconst getDefaultSdkUrl = () => `https://sdk.youlend.com${CDN_SCRIPT_PATH}`;\r\n\r\nconst constructScriptUrl = (urlOverride?: string): string => {\r\n if (!urlOverride) {\r\n return getDefaultSdkUrl();\r\n }\r\n\r\n const cleanUrl = urlOverride.replace(/^https?:\\/\\//, '');\r\n\r\n if (cleanUrl.endsWith('.dev-youlend.com')) {\r\n const subdomain = cleanUrl.replace('.dev-youlend.com', '');\r\n return `https://${subdomain}-sdk.dev-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'staging.youlend.com') {\r\n return `https://origin-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'partners.staging-youlend.com') {\r\n return `https://partners-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'uspartners.staging-youlend.com') {\r\n return `https://uspartners-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'youlend.com' || cleanUrl === 'youlend.us') {\r\n // youlend.com or youlend.us -> sdk.youlend.com + dynamic CDN path\r\n return getDefaultSdkUrl();\r\n }\r\n\r\n const defaultUrl = getDefaultSdkUrl();\r\n console.error(`Invalid URL override: ${urlOverride} - falling back to script src = ${defaultUrl}`);\r\n return defaultUrl;\r\n};\r\n\r\n// Keep a reference to the loaded YlEmbed class\r\nlet ylEmbedPromise: Promise<YlEmbed> | null = null;\r\n\r\n/**\r\n * The main entry point for the YlEmbed SDK.\r\n * This function handles loading the YlEmbed script from the CDN and initializing it.\r\n * It's designed to be called once per page load.\r\n *\r\n * @returns A Promise that resolves with the YlEmbed class.\r\n *\r\n * @example\r\n * ```\r\n * import { loadYlEmbed } from '@youlend/yl-embed-sdk';\r\n *\r\n * const ylEmbed = await loadYlEmbed({ ... });\r\n * ylEmbed.create({ ... });\r\n * ```\r\n */\r\nexport const loadYlEmbed = (options: YlEmbedOptions): Promise<YlEmbed> => {\r\n if (ylEmbedPromise) {\r\n return ylEmbedPromise;\r\n }\r\n ylEmbedPromise = new Promise((resolve, reject) => {\r\n if (typeof window === 'undefined') {\r\n // Return a mock for server-side rendering\r\n const mockApplicationJourney: ApplicationJourney = {\r\n open: () => { },\r\n close: () => { },\r\n };\r\n\r\n resolve({\r\n create: (componentName: 'ApplicationJourney', options?) => mockApplicationJourney,\r\n });\r\n return;\r\n }\r\n if ((window as any).YlEmbed) {\r\n resolve(new (window as any).YlEmbed(options));\r\n return;\r\n }\r\n\r\n const script = document.createElement('script');\r\n script.src = constructScriptUrl(options.urlOverride);\r\n script.async = true;\r\n script.onload = () => {\r\n if ((window as any).YlEmbed) {\r\n resolve(new (window as any).YlEmbed(options));\r\n } else {\r\n reject(new Error('YlEmbed script loaded but window.YlEmbed is not available'));\r\n }\r\n };\r\n script.onerror = () => {\r\n reject(new Error('Failed to load YlEmbed script from ' + script.src));\r\n };\r\n document.head.appendChild(script);\r\n });\r\n\r\n return ylEmbedPromise;\r\n};\r\n\r\n/**\r\n * @internal\r\n * This is an internal helper for testing purposes only and should not be used by consumers of the SDK.\r\n */\r\nexport const __resetYlEmbedPromiseForTest = () => {\r\n ylEmbedPromise = null;\r\n};\r\n","// This file is auto-generated. Do not edit manually.\n// Generated at: 2025-10-07T16:44:36.928Z\n// Source: tsup.config.ts CDN entry configuration\n\n/**\n * The CDN path for the SDK script, automatically extracted from tsup.config.ts\n * This ensures the URL stays in sync with the actual build output.\n */\nexport const CDN_SCRIPT_PATH = '/v1/ylembed.js';\n\n/**\n * All available CDN paths (in case multiple entries are configured)\n */\nexport const ALL_CDN_PATHS = [\n '/v1/ylembed.js'\n];\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kCAAAE,EAAA,gBAAAC,IAAA,eAAAC,EAAAJ,GCQO,IAAMK,EAAkB,iBDF/B,IAAMC,EAAmB,IAAM,0BAA0BC,CAAe,GAElEC,EAAsBC,GAAiC,CAC3D,GAAI,CAACA,EACH,OAAOH,EAAiB,EAG1B,IAAMI,EAAWD,EAAY,QAAQ,eAAgB,EAAE,EAEvD,GAAIC,EAAS,SAAS,kBAAkB,EAEtC,MAAO,WADWA,EAAS,QAAQ,mBAAoB,EAAE,CAC9B,uBAAuBH,CAAe,GAGnE,GAAIG,IAAa,sBACf,MAAO,yCAAyCH,CAAe,GAGjE,GAAIG,IAAa,+BACf,MAAO,2CAA2CH,CAAe,GAGnE,GAAIG,IAAa,iCACf,MAAO,6CAA6CH,CAAe,GAGrE,GAAIG,IAAa,eAAiBA,IAAa,aAE7C,OAAOJ,EAAiB,EAG1B,IAAMK,EAAaL,EAAiB,EACpC,eAAQ,MAAM,yBAAyBG,CAAW,mCAAmCE,CAAU,EAAE,EAC1FA,CACT,EAGIC,EAA0C,KAiBjCC,EAAeC,GACtBF,IAGJA,EAAiB,IAAI,QAAQ,CAACG,EAASC,IAAW,CAChD,GAAI,OAAO,OAAW,IAAa,CAEjC,IAAMC,EAA6C,CACjD,KAAM,IAAM,CAAE,EACd,MAAO,IAAM,CAAE,CACjB,EAEAF,EAAQ,CACN,OAAQ,CAACG,EAAqCJ,IAAaG,CAC7D,CAAC,EACD,MACF,CACA,GAAK,OAAe,QAAS,CAC3BF,EAAQ,IAAK,OAAe,QAAQD,CAAO,CAAC,EAC5C,MACF,CAEA,IAAMK,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,IAAMX,EAAmBM,EAAQ,WAAW,EACnDK,EAAO,MAAQ,GACfA,EAAO,OAAS,IAAM,CACf,OAAe,QAClBJ,EAAQ,IAAK,OAAe,QAAQD,CAAO,CAAC,EAE5CE,EAAO,IAAI,MAAM,2DAA2D,CAAC,CAEjF,EACAG,EAAO,QAAU,IAAM,CACrBH,EAAO,IAAI,MAAM,sCAAwCG,EAAO,GAAG,CAAC,CACtE,EACA,SAAS,KAAK,YAAYA,CAAM,CAClC,CAAC,EAEMP,GAOIQ,EAA+B,IAAM,CAChDR,EAAiB,IACnB","names":["index_exports","__export","__resetYlEmbedPromiseForTest","loadYlEmbed","__toCommonJS","CDN_SCRIPT_PATH","getDefaultSdkUrl","CDN_SCRIPT_PATH","constructScriptUrl","urlOverride","cleanUrl","defaultUrl","ylEmbedPromise","loadYlEmbed","options","resolve","reject","mockApplicationJourney","componentName","script","__resetYlEmbedPromiseForTest"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/generated-constants.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { YlEmbedOptions, YlEmbed, ApplicationJourney } from './types';\r\nimport { CDN_SCRIPT_PATH } from './generated-constants';\r\n\r\nexport * from './types';\r\n\r\nconst getDefaultSdkUrl = () => `https://sdk.youlend.com${CDN_SCRIPT_PATH}`;\r\n\r\nconst constructScriptUrl = (urlOverride?: string): string => {\r\n if (!urlOverride) {\r\n return getDefaultSdkUrl();\r\n }\r\n\r\n const cleanUrl = urlOverride.replace(/^https?:\\/\\//, '');\r\n\r\n if (cleanUrl.endsWith('.dev-youlend.com')) {\r\n const subdomain = cleanUrl.replace('.dev-youlend.com', '');\r\n return `https://${subdomain}-sdk.dev-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'staging.youlend.com') {\r\n return `https://origin-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'partners.staging-youlend.com') {\r\n return `https://partners-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'uspartners.staging-youlend.com') {\r\n return `https://uspartners-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'youlend.com' || cleanUrl === 'youlend.us') {\r\n // youlend.com or youlend.us -> sdk.youlend.com + dynamic CDN path\r\n return getDefaultSdkUrl();\r\n }\r\n\r\n if (cleanUrl.startsWith('localhost')) {\r\n return `https://elizabeth-sdk.dev-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n const defaultUrl = getDefaultSdkUrl();\r\n console.error(`Invalid URL override: ${urlOverride} - falling back to script src = ${defaultUrl}`);\r\n return defaultUrl;\r\n};\r\n\r\n// Keep a reference to the loaded YlEmbed class\r\nlet ylEmbedPromise: Promise<YlEmbed> | null = null;\r\n\r\n/**\r\n * The main entry point for the YlEmbed SDK.\r\n * This function handles loading the YlEmbed script from the CDN and initializing it.\r\n * It's designed to be called once per page load.\r\n *\r\n * @returns A Promise that resolves with the YlEmbed class.\r\n *\r\n * @example\r\n * ```\r\n * import { loadYlEmbed } from '@youlend/yl-embed-sdk';\r\n *\r\n * const ylEmbed = await loadYlEmbed({ ... });\r\n * ylEmbed.create({ ... });\r\n * ```\r\n */\r\nexport const loadYlEmbed = (options: YlEmbedOptions): Promise<YlEmbed> => {\r\n if (ylEmbedPromise) {\r\n return ylEmbedPromise;\r\n }\r\n ylEmbedPromise = new Promise((resolve, reject) => {\r\n if (typeof window === 'undefined') {\r\n // Return a mock for server-side rendering\r\n const mockApplicationJourney: ApplicationJourney = {\r\n open: () => { },\r\n close: () => { },\r\n destroy: () => { },\r\n };\r\n\r\n resolve({\r\n create: (componentName: 'ApplicationJourney', options?) => mockApplicationJourney,\r\n });\r\n return;\r\n }\r\n if ((window as any).YlEmbed) {\r\n resolve(new (window as any).YlEmbed(options));\r\n return;\r\n }\r\n\r\n const script = document.createElement('script');\r\n script.src = constructScriptUrl(options.urlOverride);\r\n script.async = true;\r\n script.onload = () => {\r\n if ((window as any).YlEmbed) {\r\n resolve(new (window as any).YlEmbed(options));\r\n } else {\r\n reject(new Error('YlEmbed script loaded but window.YlEmbed is not available'));\r\n }\r\n };\r\n script.onerror = () => {\r\n reject(new Error('Failed to load YlEmbed script from ' + script.src));\r\n };\r\n document.head.appendChild(script);\r\n });\r\n\r\n return ylEmbedPromise;\r\n};\r\n\r\n/**\r\n * @internal\r\n * This is an internal helper for testing purposes only and should not be used by consumers of the SDK.\r\n */\r\nexport const __resetYlEmbedPromiseForTest = () => {\r\n ylEmbedPromise = null;\r\n};\r\n","// This file is auto-generated. Do not edit manually.\n// Generated at: 2026-01-07T09:55:32.705Z\n// Source: tsup.config.ts CDN entry configuration\n\n/**\n * The CDN path for the SDK script, automatically extracted from tsup.config.ts\n * This ensures the URL stays in sync with the actual build output.\n */\nexport const CDN_SCRIPT_PATH = '/v1/ylembed.js';\n\n/**\n * All available CDN paths (in case multiple entries are configured)\n */\nexport const ALL_CDN_PATHS = [\n '/v1/ylembed.js'\n];\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kCAAAE,EAAA,gBAAAC,IAAA,eAAAC,EAAAJ,GCQO,IAAMK,EAAkB,iBDF/B,IAAMC,EAAmB,IAAM,0BAA0BC,CAAe,GAElEC,EAAsBC,GAAiC,CAC3D,GAAI,CAACA,EACH,OAAOH,EAAiB,EAG1B,IAAMI,EAAWD,EAAY,QAAQ,eAAgB,EAAE,EAEvD,GAAIC,EAAS,SAAS,kBAAkB,EAEtC,MAAO,WADWA,EAAS,QAAQ,mBAAoB,EAAE,CAC9B,uBAAuBH,CAAe,GAGnE,GAAIG,IAAa,sBACf,MAAO,yCAAyCH,CAAe,GAGjE,GAAIG,IAAa,+BACf,MAAO,2CAA2CH,CAAe,GAGnE,GAAIG,IAAa,iCACf,MAAO,6CAA6CH,CAAe,GAGrE,GAAIG,IAAa,eAAiBA,IAAa,aAE7C,OAAOJ,EAAiB,EAG1B,GAAII,EAAS,WAAW,WAAW,EACjC,MAAO,wCAAwCH,CAAe,GAGhE,IAAMI,EAAaL,EAAiB,EACpC,eAAQ,MAAM,yBAAyBG,CAAW,mCAAmCE,CAAU,EAAE,EAC1FA,CACT,EAGIC,EAA0C,KAiBjCC,EAAeC,GACtBF,IAGJA,EAAiB,IAAI,QAAQ,CAACG,EAASC,IAAW,CAChD,GAAI,OAAO,OAAW,IAAa,CAEjC,IAAMC,EAA6C,CACjD,KAAM,IAAM,CAAE,EACd,MAAO,IAAM,CAAE,EACf,QAAS,IAAM,CAAE,CACnB,EAEAF,EAAQ,CACN,OAAQ,CAACG,EAAqCJ,IAAaG,CAC7D,CAAC,EACD,MACF,CACA,GAAK,OAAe,QAAS,CAC3BF,EAAQ,IAAK,OAAe,QAAQD,CAAO,CAAC,EAC5C,MACF,CAEA,IAAMK,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,IAAMX,EAAmBM,EAAQ,WAAW,EACnDK,EAAO,MAAQ,GACfA,EAAO,OAAS,IAAM,CACf,OAAe,QAClBJ,EAAQ,IAAK,OAAe,QAAQD,CAAO,CAAC,EAE5CE,EAAO,IAAI,MAAM,2DAA2D,CAAC,CAEjF,EACAG,EAAO,QAAU,IAAM,CACrBH,EAAO,IAAI,MAAM,sCAAwCG,EAAO,GAAG,CAAC,CACtE,EACA,SAAS,KAAK,YAAYA,CAAM,CAClC,CAAC,EAEMP,GAOIQ,EAA+B,IAAM,CAChDR,EAAiB,IACnB","names":["index_exports","__export","__resetYlEmbedPromiseForTest","loadYlEmbed","__toCommonJS","CDN_SCRIPT_PATH","getDefaultSdkUrl","CDN_SCRIPT_PATH","constructScriptUrl","urlOverride","cleanUrl","defaultUrl","ylEmbedPromise","loadYlEmbed","options","resolve","reject","mockApplicationJourney","componentName","script","__resetYlEmbedPromiseForTest"]}
package/index.d.cts CHANGED
@@ -32,8 +32,18 @@ interface ApplicationJourneyOptions {
32
32
  onApplicationSubmitted?: (leadId: string) => void;
33
33
  }
34
34
  interface ApplicationJourney {
35
+ /**
36
+ * Open the modal.
37
+ */
35
38
  open: () => void;
39
+ /**
40
+ * Hide the modal.
41
+ */
36
42
  close: () => void;
43
+ /**
44
+ * Destroy the embed and all associated resources.
45
+ */
46
+ destroy: () => void;
37
47
  }
38
48
  interface YlEmbed {
39
49
  create(componentName: 'ApplicationJourney', options?: ApplicationJourneyOptions): ApplicationJourney;
package/index.d.ts CHANGED
@@ -32,8 +32,18 @@ interface ApplicationJourneyOptions {
32
32
  onApplicationSubmitted?: (leadId: string) => void;
33
33
  }
34
34
  interface ApplicationJourney {
35
+ /**
36
+ * Open the modal.
37
+ */
35
38
  open: () => void;
39
+ /**
40
+ * Hide the modal.
41
+ */
36
42
  close: () => void;
43
+ /**
44
+ * Destroy the embed and all associated resources.
45
+ */
46
+ destroy: () => void;
37
47
  }
38
48
  interface YlEmbed {
39
49
  create(componentName: 'ApplicationJourney', options?: ApplicationJourneyOptions): ApplicationJourney;
package/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var t="/v1/ylembed.js";var d=()=>`https://sdk.youlend.com${t}`,i=n=>{if(!n)return d();let e=n.replace(/^https?:\/\//,"");if(e.endsWith(".dev-youlend.com"))return`https://${e.replace(".dev-youlend.com","")}-sdk.dev-youlend.com${t}`;if(e==="staging.youlend.com")return`https://origin-sdk.staging-youlend.com${t}`;if(e==="partners.staging-youlend.com")return`https://partners-sdk.staging-youlend.com${t}`;if(e==="uspartners.staging-youlend.com")return`https://uspartners-sdk.staging-youlend.com${t}`;if(e==="youlend.com"||e==="youlend.us")return d();let r=d();return console.error(`Invalid URL override: ${n} - falling back to script src = ${r}`),r},s=null,p=n=>s||(s=new Promise((e,r)=>{if(typeof window>"u"){let l={open:()=>{},close:()=>{}};e({create:(c,m)=>l});return}if(window.YlEmbed){e(new window.YlEmbed(n));return}let o=document.createElement("script");o.src=i(n.urlOverride),o.async=!0,o.onload=()=>{window.YlEmbed?e(new window.YlEmbed(n)):r(new Error("YlEmbed script loaded but window.YlEmbed is not available"))},o.onerror=()=>{r(new Error("Failed to load YlEmbed script from "+o.src))},document.head.appendChild(o)}),s),y=()=>{s=null};export{y as __resetYlEmbedPromiseForTest,p as loadYlEmbed};
1
+ var t="/v1/ylembed.js";var d=()=>`https://sdk.youlend.com${t}`,i=n=>{if(!n)return d();let e=n.replace(/^https?:\/\//,"");if(e.endsWith(".dev-youlend.com"))return`https://${e.replace(".dev-youlend.com","")}-sdk.dev-youlend.com${t}`;if(e==="staging.youlend.com")return`https://origin-sdk.staging-youlend.com${t}`;if(e==="partners.staging-youlend.com")return`https://partners-sdk.staging-youlend.com${t}`;if(e==="uspartners.staging-youlend.com")return`https://uspartners-sdk.staging-youlend.com${t}`;if(e==="youlend.com"||e==="youlend.us")return d();if(e.startsWith("localhost"))return`https://elizabeth-sdk.dev-youlend.com${t}`;let r=d();return console.error(`Invalid URL override: ${n} - falling back to script src = ${r}`),r},s=null,p=n=>s||(s=new Promise((e,r)=>{if(typeof window>"u"){let l={open:()=>{},close:()=>{},destroy:()=>{}};e({create:(c,a)=>l});return}if(window.YlEmbed){e(new window.YlEmbed(n));return}let o=document.createElement("script");o.src=i(n.urlOverride),o.async=!0,o.onload=()=>{window.YlEmbed?e(new window.YlEmbed(n)):r(new Error("YlEmbed script loaded but window.YlEmbed is not available"))},o.onerror=()=>{r(new Error("Failed to load YlEmbed script from "+o.src))},document.head.appendChild(o)}),s),y=()=>{s=null};export{y as __resetYlEmbedPromiseForTest,p as loadYlEmbed};
2
2
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/generated-constants.ts","../../src/index.ts"],"sourcesContent":["// This file is auto-generated. Do not edit manually.\n// Generated at: 2025-10-07T16:44:36.928Z\n// Source: tsup.config.ts CDN entry configuration\n\n/**\n * The CDN path for the SDK script, automatically extracted from tsup.config.ts\n * This ensures the URL stays in sync with the actual build output.\n */\nexport const CDN_SCRIPT_PATH = '/v1/ylembed.js';\n\n/**\n * All available CDN paths (in case multiple entries are configured)\n */\nexport const ALL_CDN_PATHS = [\n '/v1/ylembed.js'\n];\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { YlEmbedOptions, YlEmbed, ApplicationJourney } from './types';\r\nimport { CDN_SCRIPT_PATH } from './generated-constants';\r\n\r\nexport * from './types';\r\n\r\nconst getDefaultSdkUrl = () => `https://sdk.youlend.com${CDN_SCRIPT_PATH}`;\r\n\r\nconst constructScriptUrl = (urlOverride?: string): string => {\r\n if (!urlOverride) {\r\n return getDefaultSdkUrl();\r\n }\r\n\r\n const cleanUrl = urlOverride.replace(/^https?:\\/\\//, '');\r\n\r\n if (cleanUrl.endsWith('.dev-youlend.com')) {\r\n const subdomain = cleanUrl.replace('.dev-youlend.com', '');\r\n return `https://${subdomain}-sdk.dev-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'staging.youlend.com') {\r\n return `https://origin-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'partners.staging-youlend.com') {\r\n return `https://partners-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'uspartners.staging-youlend.com') {\r\n return `https://uspartners-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'youlend.com' || cleanUrl === 'youlend.us') {\r\n // youlend.com or youlend.us -> sdk.youlend.com + dynamic CDN path\r\n return getDefaultSdkUrl();\r\n }\r\n\r\n const defaultUrl = getDefaultSdkUrl();\r\n console.error(`Invalid URL override: ${urlOverride} - falling back to script src = ${defaultUrl}`);\r\n return defaultUrl;\r\n};\r\n\r\n// Keep a reference to the loaded YlEmbed class\r\nlet ylEmbedPromise: Promise<YlEmbed> | null = null;\r\n\r\n/**\r\n * The main entry point for the YlEmbed SDK.\r\n * This function handles loading the YlEmbed script from the CDN and initializing it.\r\n * It's designed to be called once per page load.\r\n *\r\n * @returns A Promise that resolves with the YlEmbed class.\r\n *\r\n * @example\r\n * ```\r\n * import { loadYlEmbed } from '@youlend/yl-embed-sdk';\r\n *\r\n * const ylEmbed = await loadYlEmbed({ ... });\r\n * ylEmbed.create({ ... });\r\n * ```\r\n */\r\nexport const loadYlEmbed = (options: YlEmbedOptions): Promise<YlEmbed> => {\r\n if (ylEmbedPromise) {\r\n return ylEmbedPromise;\r\n }\r\n ylEmbedPromise = new Promise((resolve, reject) => {\r\n if (typeof window === 'undefined') {\r\n // Return a mock for server-side rendering\r\n const mockApplicationJourney: ApplicationJourney = {\r\n open: () => { },\r\n close: () => { },\r\n };\r\n\r\n resolve({\r\n create: (componentName: 'ApplicationJourney', options?) => mockApplicationJourney,\r\n });\r\n return;\r\n }\r\n if ((window as any).YlEmbed) {\r\n resolve(new (window as any).YlEmbed(options));\r\n return;\r\n }\r\n\r\n const script = document.createElement('script');\r\n script.src = constructScriptUrl(options.urlOverride);\r\n script.async = true;\r\n script.onload = () => {\r\n if ((window as any).YlEmbed) {\r\n resolve(new (window as any).YlEmbed(options));\r\n } else {\r\n reject(new Error('YlEmbed script loaded but window.YlEmbed is not available'));\r\n }\r\n };\r\n script.onerror = () => {\r\n reject(new Error('Failed to load YlEmbed script from ' + script.src));\r\n };\r\n document.head.appendChild(script);\r\n });\r\n\r\n return ylEmbedPromise;\r\n};\r\n\r\n/**\r\n * @internal\r\n * This is an internal helper for testing purposes only and should not be used by consumers of the SDK.\r\n */\r\nexport const __resetYlEmbedPromiseForTest = () => {\r\n ylEmbedPromise = null;\r\n};\r\n"],"mappings":"AAQO,IAAMA,EAAkB,iBCF/B,IAAMC,EAAmB,IAAM,0BAA0BC,CAAe,GAElEC,EAAsBC,GAAiC,CAC3D,GAAI,CAACA,EACH,OAAOH,EAAiB,EAG1B,IAAMI,EAAWD,EAAY,QAAQ,eAAgB,EAAE,EAEvD,GAAIC,EAAS,SAAS,kBAAkB,EAEtC,MAAO,WADWA,EAAS,QAAQ,mBAAoB,EAAE,CAC9B,uBAAuBH,CAAe,GAGnE,GAAIG,IAAa,sBACf,MAAO,yCAAyCH,CAAe,GAGjE,GAAIG,IAAa,+BACf,MAAO,2CAA2CH,CAAe,GAGnE,GAAIG,IAAa,iCACf,MAAO,6CAA6CH,CAAe,GAGrE,GAAIG,IAAa,eAAiBA,IAAa,aAE7C,OAAOJ,EAAiB,EAG1B,IAAMK,EAAaL,EAAiB,EACpC,eAAQ,MAAM,yBAAyBG,CAAW,mCAAmCE,CAAU,EAAE,EAC1FA,CACT,EAGIC,EAA0C,KAiBjCC,EAAeC,GACtBF,IAGJA,EAAiB,IAAI,QAAQ,CAACG,EAASC,IAAW,CAChD,GAAI,OAAO,OAAW,IAAa,CAEjC,IAAMC,EAA6C,CACjD,KAAM,IAAM,CAAE,EACd,MAAO,IAAM,CAAE,CACjB,EAEAF,EAAQ,CACN,OAAQ,CAACG,EAAqCJ,IAAaG,CAC7D,CAAC,EACD,MACF,CACA,GAAK,OAAe,QAAS,CAC3BF,EAAQ,IAAK,OAAe,QAAQD,CAAO,CAAC,EAC5C,MACF,CAEA,IAAMK,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,IAAMX,EAAmBM,EAAQ,WAAW,EACnDK,EAAO,MAAQ,GACfA,EAAO,OAAS,IAAM,CACf,OAAe,QAClBJ,EAAQ,IAAK,OAAe,QAAQD,CAAO,CAAC,EAE5CE,EAAO,IAAI,MAAM,2DAA2D,CAAC,CAEjF,EACAG,EAAO,QAAU,IAAM,CACrBH,EAAO,IAAI,MAAM,sCAAwCG,EAAO,GAAG,CAAC,CACtE,EACA,SAAS,KAAK,YAAYA,CAAM,CAClC,CAAC,EAEMP,GAOIQ,EAA+B,IAAM,CAChDR,EAAiB,IACnB","names":["CDN_SCRIPT_PATH","getDefaultSdkUrl","CDN_SCRIPT_PATH","constructScriptUrl","urlOverride","cleanUrl","defaultUrl","ylEmbedPromise","loadYlEmbed","options","resolve","reject","mockApplicationJourney","componentName","script","__resetYlEmbedPromiseForTest"]}
1
+ {"version":3,"sources":["../../src/generated-constants.ts","../../src/index.ts"],"sourcesContent":["// This file is auto-generated. Do not edit manually.\n// Generated at: 2026-01-07T09:55:32.705Z\n// Source: tsup.config.ts CDN entry configuration\n\n/**\n * The CDN path for the SDK script, automatically extracted from tsup.config.ts\n * This ensures the URL stays in sync with the actual build output.\n */\nexport const CDN_SCRIPT_PATH = '/v1/ylembed.js';\n\n/**\n * All available CDN paths (in case multiple entries are configured)\n */\nexport const ALL_CDN_PATHS = [\n '/v1/ylembed.js'\n];\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { YlEmbedOptions, YlEmbed, ApplicationJourney } from './types';\r\nimport { CDN_SCRIPT_PATH } from './generated-constants';\r\n\r\nexport * from './types';\r\n\r\nconst getDefaultSdkUrl = () => `https://sdk.youlend.com${CDN_SCRIPT_PATH}`;\r\n\r\nconst constructScriptUrl = (urlOverride?: string): string => {\r\n if (!urlOverride) {\r\n return getDefaultSdkUrl();\r\n }\r\n\r\n const cleanUrl = urlOverride.replace(/^https?:\\/\\//, '');\r\n\r\n if (cleanUrl.endsWith('.dev-youlend.com')) {\r\n const subdomain = cleanUrl.replace('.dev-youlend.com', '');\r\n return `https://${subdomain}-sdk.dev-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'staging.youlend.com') {\r\n return `https://origin-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'partners.staging-youlend.com') {\r\n return `https://partners-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'uspartners.staging-youlend.com') {\r\n return `https://uspartners-sdk.staging-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n if (cleanUrl === 'youlend.com' || cleanUrl === 'youlend.us') {\r\n // youlend.com or youlend.us -> sdk.youlend.com + dynamic CDN path\r\n return getDefaultSdkUrl();\r\n }\r\n\r\n if (cleanUrl.startsWith('localhost')) {\r\n return `https://elizabeth-sdk.dev-youlend.com${CDN_SCRIPT_PATH}`;\r\n }\r\n\r\n const defaultUrl = getDefaultSdkUrl();\r\n console.error(`Invalid URL override: ${urlOverride} - falling back to script src = ${defaultUrl}`);\r\n return defaultUrl;\r\n};\r\n\r\n// Keep a reference to the loaded YlEmbed class\r\nlet ylEmbedPromise: Promise<YlEmbed> | null = null;\r\n\r\n/**\r\n * The main entry point for the YlEmbed SDK.\r\n * This function handles loading the YlEmbed script from the CDN and initializing it.\r\n * It's designed to be called once per page load.\r\n *\r\n * @returns A Promise that resolves with the YlEmbed class.\r\n *\r\n * @example\r\n * ```\r\n * import { loadYlEmbed } from '@youlend/yl-embed-sdk';\r\n *\r\n * const ylEmbed = await loadYlEmbed({ ... });\r\n * ylEmbed.create({ ... });\r\n * ```\r\n */\r\nexport const loadYlEmbed = (options: YlEmbedOptions): Promise<YlEmbed> => {\r\n if (ylEmbedPromise) {\r\n return ylEmbedPromise;\r\n }\r\n ylEmbedPromise = new Promise((resolve, reject) => {\r\n if (typeof window === 'undefined') {\r\n // Return a mock for server-side rendering\r\n const mockApplicationJourney: ApplicationJourney = {\r\n open: () => { },\r\n close: () => { },\r\n destroy: () => { },\r\n };\r\n\r\n resolve({\r\n create: (componentName: 'ApplicationJourney', options?) => mockApplicationJourney,\r\n });\r\n return;\r\n }\r\n if ((window as any).YlEmbed) {\r\n resolve(new (window as any).YlEmbed(options));\r\n return;\r\n }\r\n\r\n const script = document.createElement('script');\r\n script.src = constructScriptUrl(options.urlOverride);\r\n script.async = true;\r\n script.onload = () => {\r\n if ((window as any).YlEmbed) {\r\n resolve(new (window as any).YlEmbed(options));\r\n } else {\r\n reject(new Error('YlEmbed script loaded but window.YlEmbed is not available'));\r\n }\r\n };\r\n script.onerror = () => {\r\n reject(new Error('Failed to load YlEmbed script from ' + script.src));\r\n };\r\n document.head.appendChild(script);\r\n });\r\n\r\n return ylEmbedPromise;\r\n};\r\n\r\n/**\r\n * @internal\r\n * This is an internal helper for testing purposes only and should not be used by consumers of the SDK.\r\n */\r\nexport const __resetYlEmbedPromiseForTest = () => {\r\n ylEmbedPromise = null;\r\n};\r\n"],"mappings":"AAQO,IAAMA,EAAkB,iBCF/B,IAAMC,EAAmB,IAAM,0BAA0BC,CAAe,GAElEC,EAAsBC,GAAiC,CAC3D,GAAI,CAACA,EACH,OAAOH,EAAiB,EAG1B,IAAMI,EAAWD,EAAY,QAAQ,eAAgB,EAAE,EAEvD,GAAIC,EAAS,SAAS,kBAAkB,EAEtC,MAAO,WADWA,EAAS,QAAQ,mBAAoB,EAAE,CAC9B,uBAAuBH,CAAe,GAGnE,GAAIG,IAAa,sBACf,MAAO,yCAAyCH,CAAe,GAGjE,GAAIG,IAAa,+BACf,MAAO,2CAA2CH,CAAe,GAGnE,GAAIG,IAAa,iCACf,MAAO,6CAA6CH,CAAe,GAGrE,GAAIG,IAAa,eAAiBA,IAAa,aAE7C,OAAOJ,EAAiB,EAG1B,GAAII,EAAS,WAAW,WAAW,EACjC,MAAO,wCAAwCH,CAAe,GAGhE,IAAMI,EAAaL,EAAiB,EACpC,eAAQ,MAAM,yBAAyBG,CAAW,mCAAmCE,CAAU,EAAE,EAC1FA,CACT,EAGIC,EAA0C,KAiBjCC,EAAeC,GACtBF,IAGJA,EAAiB,IAAI,QAAQ,CAACG,EAASC,IAAW,CAChD,GAAI,OAAO,OAAW,IAAa,CAEjC,IAAMC,EAA6C,CACjD,KAAM,IAAM,CAAE,EACd,MAAO,IAAM,CAAE,EACf,QAAS,IAAM,CAAE,CACnB,EAEAF,EAAQ,CACN,OAAQ,CAACG,EAAqCJ,IAAaG,CAC7D,CAAC,EACD,MACF,CACA,GAAK,OAAe,QAAS,CAC3BF,EAAQ,IAAK,OAAe,QAAQD,CAAO,CAAC,EAC5C,MACF,CAEA,IAAMK,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,IAAMX,EAAmBM,EAAQ,WAAW,EACnDK,EAAO,MAAQ,GACfA,EAAO,OAAS,IAAM,CACf,OAAe,QAClBJ,EAAQ,IAAK,OAAe,QAAQD,CAAO,CAAC,EAE5CE,EAAO,IAAI,MAAM,2DAA2D,CAAC,CAEjF,EACAG,EAAO,QAAU,IAAM,CACrBH,EAAO,IAAI,MAAM,sCAAwCG,EAAO,GAAG,CAAC,CACtE,EACA,SAAS,KAAK,YAAYA,CAAM,CAClC,CAAC,EAEMP,GAOIQ,EAA+B,IAAM,CAChDR,EAAiB,IACnB","names":["CDN_SCRIPT_PATH","getDefaultSdkUrl","CDN_SCRIPT_PATH","constructScriptUrl","urlOverride","cleanUrl","defaultUrl","ylEmbedPromise","loadYlEmbed","options","resolve","reject","mockApplicationJourney","componentName","script","__resetYlEmbedPromiseForTest"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ylembed-js",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Wrapper and TypeScript support for YlEmbed.js - YouLend's Embedded Components SDK",
5
5
  "publishConfig": {
6
6
  "access": "public"