@proveanything/smartlinks 2.0.5 → 2.0.9

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 (185) hide show
  1. package/dist/api/ai.d.ts +1 -1
  2. package/dist/api/ai.js +1 -1
  3. package/dist/api/analytics.d.ts +1 -1
  4. package/dist/api/analytics.js +1 -1
  5. package/dist/api/appConfiguration.d.ts +3 -3
  6. package/dist/api/appConfiguration.js +3 -3
  7. package/dist/api/appObjects.d.ts +1 -1
  8. package/dist/api/appObjects.js +1 -1
  9. package/dist/api/asset.d.ts +1 -1
  10. package/dist/api/asset.js +2 -2
  11. package/dist/api/async.d.ts +1 -1
  12. package/dist/api/async.js +1 -1
  13. package/dist/api/attestation.d.ts +1 -1
  14. package/dist/api/attestation.js +1 -1
  15. package/dist/api/attestations.d.ts +1 -1
  16. package/dist/api/attestations.js +1 -1
  17. package/dist/api/auth.d.ts +2 -2
  18. package/dist/api/auth.js +2 -2
  19. package/dist/api/authKit.d.ts +1 -1
  20. package/dist/api/authKit.js +1 -1
  21. package/dist/api/batch.d.ts +1 -1
  22. package/dist/api/batch.js +1 -1
  23. package/dist/api/broadcasts.d.ts +2 -2
  24. package/dist/api/broadcasts.js +1 -1
  25. package/dist/api/claimSet.d.ts +1 -1
  26. package/dist/api/claimSet.js +1 -1
  27. package/dist/api/collection.d.ts +1 -1
  28. package/dist/api/collection.js +1 -1
  29. package/dist/api/comms.d.ts +15 -15
  30. package/dist/api/comms.js +1 -1
  31. package/dist/api/config.d.ts +1 -1
  32. package/dist/api/config.js +1 -1
  33. package/dist/api/contact.d.ts +1 -1
  34. package/dist/api/contact.js +1 -1
  35. package/dist/api/containers.d.ts +1 -1
  36. package/dist/api/containers.js +1 -1
  37. package/dist/api/crate.d.ts +1 -1
  38. package/dist/api/crate.js +1 -1
  39. package/dist/api/facets.d.ts +1 -1
  40. package/dist/api/facets.js +1 -1
  41. package/dist/api/form.js +1 -1
  42. package/dist/api/http.js +1 -1
  43. package/dist/api/index.d.ts +46 -46
  44. package/dist/api/index.js +46 -46
  45. package/dist/api/integrations.d.ts +1 -1
  46. package/dist/api/integrations.js +1 -1
  47. package/dist/api/interactions.d.ts +1 -1
  48. package/dist/api/interactions.js +1 -1
  49. package/dist/api/jobs.d.ts +1 -1
  50. package/dist/api/jobs.js +1 -1
  51. package/dist/api/journeys.d.ts +1 -1
  52. package/dist/api/journeys.js +1 -1
  53. package/dist/api/journeysAnalytics.d.ts +1 -1
  54. package/dist/api/journeysAnalytics.js +1 -1
  55. package/dist/api/location.d.ts +1 -1
  56. package/dist/api/location.js +1 -1
  57. package/dist/api/lots.d.ts +1 -1
  58. package/dist/api/lots.js +1 -1
  59. package/dist/api/loyalty.d.ts +1 -1
  60. package/dist/api/loyalty.js +1 -1
  61. package/dist/api/navigation.d.ts +1 -1
  62. package/dist/api/navigation.js +1 -1
  63. package/dist/api/nfc.d.ts +1 -1
  64. package/dist/api/nfc.js +1 -1
  65. package/dist/api/order.d.ts +1 -1
  66. package/dist/api/order.js +1 -1
  67. package/dist/api/product.d.ts +1 -1
  68. package/dist/api/product.js +1 -1
  69. package/dist/api/products.d.ts +1 -1
  70. package/dist/api/products.js +1 -1
  71. package/dist/api/proof.d.ts +1 -1
  72. package/dist/api/proof.js +1 -1
  73. package/dist/api/qr.d.ts +1 -1
  74. package/dist/api/qr.js +1 -1
  75. package/dist/api/realtime.d.ts +1 -1
  76. package/dist/api/realtime.js +1 -1
  77. package/dist/api/research.d.ts +1 -1
  78. package/dist/api/research.js +1 -1
  79. package/dist/api/secrets.d.ts +1 -1
  80. package/dist/api/secrets.js +1 -1
  81. package/dist/api/segments.d.ts +1 -1
  82. package/dist/api/segments.js +1 -1
  83. package/dist/api/sequence.js +1 -1
  84. package/dist/api/tags.d.ts +1 -1
  85. package/dist/api/tags.js +1 -1
  86. package/dist/api/template.d.ts +1 -1
  87. package/dist/api/template.js +1 -1
  88. package/dist/api/translations.d.ts +1 -1
  89. package/dist/api/translations.js +2 -2
  90. package/dist/api/variant.d.ts +1 -1
  91. package/dist/api/variant.js +1 -1
  92. package/dist/containers/types.d.ts +1 -1
  93. package/dist/docs/API_SUMMARY.md +7 -7
  94. package/dist/docs/agent-tools.md +111 -0
  95. package/dist/docs/ai.md +14 -520
  96. package/dist/docs/analytics.md +41 -2
  97. package/dist/docs/app-data-storage.md +0 -38
  98. package/dist/docs/app-manifest.md +104 -7
  99. package/dist/docs/app-objects.md +0 -148
  100. package/dist/docs/app-records-pattern.md +2 -2
  101. package/dist/docs/building-react-components.md +6 -14
  102. package/dist/docs/caching.md +20 -21
  103. package/dist/docs/container-tracking.md +2 -0
  104. package/dist/docs/containers.md +14 -66
  105. package/dist/docs/deploying-apps.md +8 -3
  106. package/dist/docs/executor.md +4 -4
  107. package/dist/docs/host-dependency-contract.md +159 -0
  108. package/dist/docs/iframe-responder.md +308 -0
  109. package/dist/docs/item-context.md +0 -2
  110. package/dist/docs/manifests.md +3 -3
  111. package/dist/docs/mobile-admin-container.md +4 -4
  112. package/dist/docs/mpa.md +5 -5
  113. package/dist/docs/native-facade.md +1 -1
  114. package/dist/docs/overview.md +36 -15
  115. package/dist/docs/portal-back-button.md +2 -3
  116. package/dist/docs/sequences.md +1 -1
  117. package/dist/docs/server-functions.md +2 -3
  118. package/dist/docs/widgets.md +11 -69
  119. package/dist/http.d.ts +24 -8
  120. package/dist/http.js +32 -14
  121. package/dist/iframe.d.ts +2 -2
  122. package/dist/iframe.js +1 -1
  123. package/dist/iframeResponder.d.ts +7 -1
  124. package/dist/iframeResponder.js +45 -4
  125. package/dist/index.d.ts +30 -27
  126. package/dist/index.js +10 -8
  127. package/dist/mobile-admin/errors.d.ts +1 -1
  128. package/dist/mobile-admin/types.d.ts +2 -2
  129. package/dist/openapi.yaml +12 -0
  130. package/dist/shared-dependencies.d.ts +37 -0
  131. package/dist/shared-dependencies.js +79 -0
  132. package/dist/testing/index.d.ts +1 -1
  133. package/dist/translationCache.d.ts +1 -1
  134. package/dist/types/appManifest.d.ts +23 -0
  135. package/dist/types/broadcasts.d.ts +1 -1
  136. package/dist/types/collection.d.ts +2 -2
  137. package/dist/types/comms.d.ts +5 -5
  138. package/dist/types/contact.d.ts +1 -1
  139. package/dist/types/facets.d.ts +1 -1
  140. package/dist/types/iframeResponder.d.ts +3 -3
  141. package/dist/types/index.d.ts +44 -44
  142. package/dist/types/index.js +44 -44
  143. package/dist/types/interaction.d.ts +1 -1
  144. package/dist/types/itemContext.d.ts +1 -1
  145. package/dist/types/journeysAnalytics.d.ts +1 -1
  146. package/dist/types/navigation.d.ts +1 -1
  147. package/dist/types/product.d.ts +1 -1
  148. package/dist/types/proof.d.ts +1 -1
  149. package/dist/types/segments.d.ts +1 -1
  150. package/dist/types/widgets.d.ts +2 -2
  151. package/dist/utils/conditions.d.ts +1 -1
  152. package/dist/utils/index.d.ts +3 -3
  153. package/dist/utils/index.js +3 -3
  154. package/dist/utils/paths.d.ts +4 -4
  155. package/docs/API_SUMMARY.md +7 -7
  156. package/docs/agent-tools.md +111 -0
  157. package/docs/ai.md +14 -520
  158. package/docs/analytics.md +41 -2
  159. package/docs/app-data-storage.md +0 -38
  160. package/docs/app-manifest.md +104 -7
  161. package/docs/app-objects.md +0 -148
  162. package/docs/app-records-pattern.md +2 -2
  163. package/docs/building-react-components.md +6 -14
  164. package/docs/caching.md +20 -21
  165. package/docs/container-tracking.md +2 -0
  166. package/docs/containers.md +14 -66
  167. package/docs/deploying-apps.md +8 -3
  168. package/docs/executor.md +4 -4
  169. package/docs/host-dependency-contract.md +159 -0
  170. package/docs/iframe-responder.md +308 -0
  171. package/docs/item-context.md +0 -2
  172. package/docs/mobile-admin-container.md +4 -4
  173. package/docs/mpa.md +5 -5
  174. package/docs/native-facade.md +1 -1
  175. package/docs/overview.md +36 -15
  176. package/docs/portal-back-button.md +2 -3
  177. package/docs/sequences.md +1 -1
  178. package/docs/server-functions.md +2 -3
  179. package/docs/widgets.md +11 -69
  180. package/openapi.yaml +12 -0
  181. package/package.json +17 -6
  182. package/scripts/doctor.mjs +171 -0
  183. package/docs/analytics-metadata-conventions.md +0 -88
  184. package/docs/iframe-streaming-parent-changes.md +0 -308
  185. package/docs/manifests.md +0 -204
package/dist/index.d.ts CHANGED
@@ -1,29 +1,32 @@
1
- export { initializeApi, isInitialized, hasAuthCredentials, configureSdkCache, invalidateCache, getHttpCacheDiagnostics, resetHttpCacheDiagnostics, request, post, put, patch, del, sendCustomProxyMessage, getApiHeaders, isProxyEnabled, setBearerToken, getBearerToken, setGrantToken, getGrantToken } from "./http";
2
- export * from "./api";
3
- export * from "./types";
4
- export { iframe } from "./iframe";
5
- export * as cache from './cache';
6
- export { IframeResponder, isAdminFromRoles, buildIframeSrc, } from './iframeResponder';
7
- export * as utils from './utils';
8
- export type { PortalPathParams, Gs1DigitalLinkParams, ConditionParams, ConditionDebugOptions, ConditionDebugLogger, ConditionSet, Condition, UserInfo, ProductInfo, ProofInfo, CollectionInfo, } from './utils';
9
- export type { LoginResponse, VerifyTokenResponse, AccountInfoResponse, AuthLocation, } from "./api/auth";
10
- export type { UserAccountRegistrationRequest, } from "./types/auth";
11
- export type { CommunicationEvent, CommsQueryByUser, CommsRecipientIdsQuery, CommsRecipientsWithoutActionQuery, CommsRecipientsWithActionQuery, RecipientId, RecipientWithOutcome, LogCommunicationEventBody, LogBulkCommunicationEventsBody, AppendResult, AppendBulkResult, CommsSettings, TopicConfig, CommsSettingsGetResponse, CommsSettingsPatchBody, CommsPublicTopicsResponse, UnsubscribeQuery, UnsubscribeResponse, CommsConsentUpsertRequest, CommsPreferencesUpsertRequest, CommsSubscribeRequest, CommsSubscribeResponse, CommsSubscriptionCheckQuery, CommsSubscriptionCheckResponse, CommsListMethodsQuery, CommsListMethodsResponse, RegisterEmailMethodRequest, RegisterSmsMethodRequest, RegisterMethodResponse, SubscriptionsResolveRequest, SubscriptionsResolveResponse, } from "./types/comms";
12
- export type { BatchResponse, BatchCreateRequest, BatchUpdateRequest, } from "./types/batch";
13
- export type { Lot, LotStatus, LotSelector, LotPayload, LotCreateInput, LotUpdateInput, ListLotsParams, ListLotsResponse, LotMemberDiff, ResolveLotResponse, LotProductSummary, ListLotProductsResponse, LotResolutionResult, } from "./types/lots";
14
- export type { VariantResponse, VariantCreateRequest, VariantUpdateRequest, } from "./types/variant";
15
- export type { BroadcastSendRequest } from "./types/broadcasts";
16
- export type { AppConfigOptions } from "./api/appConfiguration";
17
- export type { AdditionalGtin, ISODateString, JsonPrimitive, JsonValue, ProductCreateRequest, ProductClaimCreateInput, ProductClaimCreateRequestBody, ProductClaimLookupInput, ProductFacetMap, ProductFacetValue, ProductImageUrlInput, ProductKey, ProductQueryRequest, ProductQueryResponse, ProductUpdateRequest, Product, ProductWriteInput, PublicProduct, } from "./types/product";
18
- export type { TranslationLookupMode, TranslationContentType, TranslationQuality, TranslationItemStatus, TranslationContextValue, TranslationContext, TranslationLookupRequestBase, TranslationLookupSingleRequest, TranslationLookupBatchRequest, TranslationLookupRequest, TranslationLookupItem, TranslationLookupResponse, ResolvedTranslationItem, ResolvedTranslationResponse, TranslationHashOptions, TranslationResolveOptions, TranslationRecord, TranslationListParams, TranslationListResponse, TranslationUpdateRequest, } from "./types/translations";
19
- export type { FacetBucket, FacetDefinition, FacetDefinitionWriteInput, FacetGetParams, FacetListParams, FacetListResponse, FacetNamespaceListResponse, FacetQueryRequest, FacetQueryResponse, FacetValue, FacetValueDefinition, FacetValueGetParams, FacetValueListParams, FacetValueListResponse, FacetValueResponse, FacetValueWriteInput, PublicFacetListParams, } from "./types/facets";
20
- export type { Collection, CollectionResponse, CollectionCreateRequest, CollectionUpdateRequest, DomainTarget, HubAvailabilityResponse, } from "./types/collection";
21
- export type { Proof, ProofResponse, ProofWrite, ProofCreateRequest, ProofUpdateRequest, ProofClaimRequest, ProofGrant, GrantScope, GrantAudience, CreateGrantOptions, RedeemGrantOptions, RedeemGrantResult, ProofTransfer, ProofTransferType, ProofTransferState, TransferProofOptions, TransferProofResult, } from "./types/proof";
22
- export type { QrShortCodeLookupResponse, } from "./types/qr";
23
- export type { ReverseTagLookupParams, ReverseTagLookupResponse, } from "./types/tags";
1
+ export { initializeApi, isInitialized, hasAuthCredentials, configureSdkCache, invalidateCache, getHttpCacheDiagnostics, resetHttpCacheDiagnostics, request, post, put, patch, del, sendCustomProxyMessage, getApiHeaders, getBaseURL, isProxyEnabled, setBearerToken, getBearerToken, setGrantToken, getGrantToken } from "./http.js";
2
+ export * from "./api/index.js";
3
+ export * from "./types/index.js";
4
+ export { iframe } from "./iframe.js";
5
+ export type { InvalidateCacheOptions } from "./http.js";
6
+ export * as cache from './cache.js';
7
+ export { IframeResponder, isAdminFromRoles, buildIframeSrc, } from './iframeResponder.js';
8
+ export * as utils from './utils/index.js';
9
+ export { SHARED_DEPENDENCY_CONTRACT_VERSION, SHARED_DEPENDENCIES, SHARED_DEPENDENCY_SPECIFIERS, importMapPathFor, getHostSharedDependencies, } from './shared-dependencies.js';
10
+ export type { SharedDependency, HostSharedDependencies } from './shared-dependencies.js';
11
+ export type { PortalPathParams, Gs1DigitalLinkParams, ConditionParams, ConditionDebugOptions, ConditionDebugLogger, ConditionSet, Condition, UserInfo, ProductInfo, ProofInfo, CollectionInfo, } from './utils/index.js';
12
+ export type { LoginResponse, VerifyTokenResponse, AccountInfoResponse, AuthLocation, } from "./api/auth.js";
13
+ export type { UserAccountRegistrationRequest, } from "./types/auth.js";
14
+ export type { CommunicationEvent, CommsQueryByUser, CommsRecipientIdsQuery, CommsRecipientsWithoutActionQuery, CommsRecipientsWithActionQuery, RecipientId, RecipientWithOutcome, LogCommunicationEventBody, LogBulkCommunicationEventsBody, AppendResult, AppendBulkResult, CommsSettings, TopicConfig, CommsSettingsGetResponse, CommsSettingsPatchBody, CommsPublicTopicsResponse, UnsubscribeQuery, UnsubscribeResponse, CommsConsentUpsertRequest, CommsPreferencesUpsertRequest, CommsSubscribeRequest, CommsSubscribeResponse, CommsSubscriptionCheckQuery, CommsSubscriptionCheckResponse, CommsListMethodsQuery, CommsListMethodsResponse, RegisterEmailMethodRequest, RegisterSmsMethodRequest, RegisterMethodResponse, SubscriptionsResolveRequest, SubscriptionsResolveResponse, } from "./types/comms.js";
15
+ export type { BatchResponse, BatchCreateRequest, BatchUpdateRequest, } from "./types/batch.js";
16
+ export type { Lot, LotStatus, LotSelector, LotPayload, LotCreateInput, LotUpdateInput, ListLotsParams, ListLotsResponse, LotMemberDiff, ResolveLotResponse, LotProductSummary, ListLotProductsResponse, LotResolutionResult, } from "./types/lots.js";
17
+ export type { VariantResponse, VariantCreateRequest, VariantUpdateRequest, } from "./types/variant.js";
18
+ export type { BroadcastSendRequest } from "./types/broadcasts.js";
19
+ export type { AppConfigOptions } from "./api/appConfiguration.js";
20
+ export type { AdditionalGtin, ISODateString, JsonPrimitive, JsonValue, ProductCreateRequest, ProductClaimCreateInput, ProductClaimCreateRequestBody, ProductClaimLookupInput, ProductFacetMap, ProductFacetValue, ProductImageUrlInput, ProductKey, ProductQueryRequest, ProductQueryResponse, ProductUpdateRequest, Product, ProductWriteInput, PublicProduct, } from "./types/product.js";
21
+ export type { TranslationLookupMode, TranslationContentType, TranslationQuality, TranslationItemStatus, TranslationContextValue, TranslationContext, TranslationLookupRequestBase, TranslationLookupSingleRequest, TranslationLookupBatchRequest, TranslationLookupRequest, TranslationLookupItem, TranslationLookupResponse, ResolvedTranslationItem, ResolvedTranslationResponse, TranslationHashOptions, TranslationResolveOptions, TranslationRecord, TranslationListParams, TranslationListResponse, TranslationUpdateRequest, } from "./types/translations.js";
22
+ export type { FacetBucket, FacetDefinition, FacetDefinitionWriteInput, FacetGetParams, FacetListParams, FacetListResponse, FacetNamespaceListResponse, FacetQueryRequest, FacetQueryResponse, FacetValue, FacetValueDefinition, FacetValueGetParams, FacetValueListParams, FacetValueListResponse, FacetValueResponse, FacetValueWriteInput, PublicFacetListParams, } from "./types/facets.js";
23
+ export type { Collection, CollectionResponse, CollectionCreateRequest, CollectionUpdateRequest, DomainTarget, HubAvailabilityResponse, } from "./types/collection.js";
24
+ export type { Proof, ProofResponse, ProofWrite, ProofCreateRequest, ProofUpdateRequest, ProofClaimRequest, ProofGrant, GrantScope, GrantAudience, CreateGrantOptions, RedeemGrantOptions, RedeemGrantResult, ProofTransfer, ProofTransferType, ProofTransferState, TransferProofOptions, TransferProofResult, } from "./types/proof.js";
25
+ export type { QrShortCodeLookupResponse, } from "./types/qr.js";
26
+ export type { ReverseTagLookupParams, ReverseTagLookupResponse, } from "./types/tags.js";
24
27
  export type { AdminMobileCapability, ActionableCapability, AdminMobileHostId, AdminMobileEvent, AdminMobileEventCallback, AdminMobileEventSubscriber, ScannerEventSubscriber, // @deprecated — use AdminMobileEventCallback
25
28
  AdminMobileHostContext, AdminMobileComponentManifest, AdminMobileBundleManifest, MobileAdminComponentManifest, // @deprecated — use AdminMobileComponentManifest
26
- MobileAdminBundleManifest, } from './mobile-admin/types';
27
- export { HostCapabilityUnavailableError, HostPermissionDeniedError, HostTimeoutError, } from './mobile-admin/errors';
28
- export type { NativeCapability, NativeFacade, ShareFacade, ClipboardFacade, HapticImpactStyle, HapticNotificationStyle, HapticsFacade, NetworkStatus, NetworkFacade, DeviceInfo, DeviceFacade, StorageFacade, QrScanOptions, QrFacade, AuthFacade, NfcReadResult, NfcFacade, RfidScanOptions, RfidFacade, EventsFacade, WebSourceMode, WebSourceConfig, WebSourceFacade, } from './native/types';
29
- export type { AuthKitUser, UserProfile, ProfileUpdateData, UpdateProfileResponse, SuccessResponse, AuthLoginResponse, AppleLoginOptions, AuthKitErrorCode, RefreshResponse, LogoutResponse, RefreshErrorCode, MagicLinkSendResponse, MagicLinkVerifyResponse, PhoneSendCodeResponse, PhoneVerifyResponse, PasswordResetRequestResponse, VerifyResetTokenResponse, PasswordResetCompleteResponse, EmailVerificationActionResponse, EmailVerifyTokenResponse, VerifyStatus, WhatsAppReplyCta, WhatsAppReplyOptions, WhatsAppContactData, SendWhatsAppRequest, SendWhatsAppResponse, ExchangeWhatsAppSessionResponse, VerifyWhatsAppResponse, WhatsAppStatusResponse, SendSmsVerifyRequest, SendSmsVerifyResponse, VerifySmsResponse, UpsertContactRequest, UpsertContactResponse, AuthKitBrandingConfig, AuthKitConfig, AuthKitConfigInput, AuthKitSecurityConfig, AuthKitPasswordPolicy, AuthKitSessionPolicy, AuthKitLockoutPolicy, PasswordPolicyErrorCode, LoginSecurityErrorCode, } from './types/authKit';
29
+ MobileAdminBundleManifest, } from './mobile-admin/types.js';
30
+ export { HostCapabilityUnavailableError, HostPermissionDeniedError, HostTimeoutError, } from './mobile-admin/errors.js';
31
+ export type { NativeCapability, NativeFacade, ShareFacade, ClipboardFacade, HapticImpactStyle, HapticNotificationStyle, HapticsFacade, NetworkStatus, NetworkFacade, DeviceInfo, DeviceFacade, StorageFacade, QrScanOptions, QrFacade, AuthFacade, NfcReadResult, NfcFacade, RfidScanOptions, RfidFacade, EventsFacade, WebSourceMode, WebSourceConfig, WebSourceFacade, } from './native/types.js';
32
+ export type { AuthKitUser, UserProfile, ProfileUpdateData, UpdateProfileResponse, SuccessResponse, AuthLoginResponse, AppleLoginOptions, AuthKitErrorCode, RefreshResponse, LogoutResponse, RefreshErrorCode, MagicLinkSendResponse, MagicLinkVerifyResponse, PhoneSendCodeResponse, PhoneVerifyResponse, PasswordResetRequestResponse, VerifyResetTokenResponse, PasswordResetCompleteResponse, EmailVerificationActionResponse, EmailVerifyTokenResponse, VerifyStatus, WhatsAppReplyCta, WhatsAppReplyOptions, WhatsAppContactData, SendWhatsAppRequest, SendWhatsAppResponse, ExchangeWhatsAppSessionResponse, VerifyWhatsAppResponse, WhatsAppStatusResponse, SendSmsVerifyRequest, SendSmsVerifyResponse, VerifySmsResponse, UpsertContactRequest, UpsertContactResponse, AuthKitBrandingConfig, AuthKitConfig, AuthKitConfigInput, AuthKitSecurityConfig, AuthKitPasswordPolicy, AuthKitSessionPolicy, AuthKitLockoutPolicy, PasswordPolicyErrorCode, LoginSecurityErrorCode, } from './types/authKit.js';
package/dist/index.js CHANGED
@@ -1,14 +1,16 @@
1
1
  // src/index.ts
2
2
  // Top-level entrypoint of the npm package. Re-export initializeApi + all namespaces.
3
- export { initializeApi, isInitialized, hasAuthCredentials, configureSdkCache, invalidateCache, getHttpCacheDiagnostics, resetHttpCacheDiagnostics, request, post, put, patch, del, sendCustomProxyMessage, getApiHeaders, isProxyEnabled, setBearerToken, getBearerToken, setGrantToken, getGrantToken } from "./http";
4
- export * from "./api";
5
- export * from "./types";
3
+ export { initializeApi, isInitialized, hasAuthCredentials, configureSdkCache, invalidateCache, getHttpCacheDiagnostics, resetHttpCacheDiagnostics, request, post, put, patch, del, sendCustomProxyMessage, getApiHeaders, getBaseURL, isProxyEnabled, setBearerToken, getBearerToken, setGrantToken, getGrantToken } from "./http.js";
4
+ export * from "./api/index.js";
5
+ export * from "./types/index.js";
6
6
  // Iframe namespace
7
- export { iframe } from "./iframe";
8
- import * as cache_1 from './cache';
7
+ export { iframe } from "./iframe.js";
8
+ import * as cache_1 from './cache.js';
9
9
  export { cache_1 as cache };
10
10
  // IframeResponder (also exported via iframe namespace)
11
- export { IframeResponder, isAdminFromRoles, buildIframeSrc, } from './iframeResponder';
12
- import * as utils_1 from './utils';
11
+ export { IframeResponder, isAdminFromRoles, buildIframeSrc, } from './iframeResponder.js';
12
+ import * as utils_1 from './utils/index.js';
13
13
  export { utils_1 as utils };
14
- export { HostCapabilityUnavailableError, HostPermissionDeniedError, HostTimeoutError, } from './mobile-admin/errors';
14
+ // Shared dependency contract (host↔app) — one source of truth for externalized deps
15
+ export { SHARED_DEPENDENCY_CONTRACT_VERSION, SHARED_DEPENDENCIES, SHARED_DEPENDENCY_SPECIFIERS, importMapPathFor, getHostSharedDependencies, } from './shared-dependencies.js';
16
+ export { HostCapabilityUnavailableError, HostPermissionDeniedError, HostTimeoutError, } from './mobile-admin/errors.js';
@@ -5,7 +5,7 @@
5
5
  * All three classes call `Object.setPrototypeOf(this, new.target.prototype)` so
6
6
  * `instanceof` works correctly when transpiled to ES5.
7
7
  */
8
- import type { ActionableCapability, AdminMobileHostId } from './types';
8
+ import type { ActionableCapability, AdminMobileHostId } from './types.js';
9
9
  /**
10
10
  * Thrown when a container requests a hardware action that the current host
11
11
  * does not support (e.g. calling `requestNfcTap` on a `'pwa'` host).
@@ -1,4 +1,4 @@
1
- import type { NativeFacade } from '../native/types';
1
+ import type { NativeFacade } from '../native/types.js';
2
2
  /**
3
3
  * Hardware/software capability tokens a mobile admin host may advertise.
4
4
  * Passed to `AdminMobileHostContext.capabilities` and to
@@ -79,7 +79,7 @@ export interface AdminMobileHostContext {
79
79
  * calls — never `import * as SL from '@proveanything/smartlinks'` inside a
80
80
  * container, as that would create a second SDK instance.
81
81
  */
82
- SL: typeof import('../index');
82
+ SL: typeof import('../index.js');
83
83
  /** Capabilities advertised by this host instance. */
84
84
  capabilities: AdminMobileCapability[];
85
85
  /**
package/dist/openapi.yaml CHANGED
@@ -17471,6 +17471,18 @@ components:
17471
17471
  type: string
17472
17472
  appId:
17473
17473
  type: string
17474
+ moduleFormat:
17475
+ type: string
17476
+ enum:
17477
+ - umd
17478
+ - esm
17479
+ - dual
17480
+ sharedDependencies:
17481
+ type: string
17482
+ globals:
17483
+ type: object
17484
+ additionalProperties:
17485
+ type: string
17474
17486
  seo:
17475
17487
  type: object
17476
17488
  additionalProperties: true
@@ -0,0 +1,37 @@
1
+ /** Current contract revision. Bumped when the entry list or host versions change. */
2
+ export declare const SHARED_DEPENDENCY_CONTRACT_VERSION: "v5";
3
+ export interface SharedDependency {
4
+ /** Bare import specifier the app writes, e.g. `react-dom/client`. */
5
+ specifier: string;
6
+ /** Window global the host exposes for the UMD (legacy) resolution path. */
7
+ globalName: string;
8
+ /** Minimum version whose API the host guarantees — build against `>=` this, `<=` host. */
9
+ minVersion: string;
10
+ /** Portal-served ESM shim path this specifier maps to in the import map. */
11
+ importMapPath: string;
12
+ }
13
+ /**
14
+ * Canonical import-map path for a specifier: drop the leading `@` scope marker and
15
+ * turn every `/` into `-`.
16
+ * 'react-dom/client' -> '/sl-shared/v5/react-dom-client.js'
17
+ * '@radix-ui/react-slot' -> '/sl-shared/v5/radix-ui-react-slot.js'
18
+ * Hosts MUST serve shims at these paths so the map the SDK advertises resolves.
19
+ */
20
+ export declare function importMapPathFor(specifier: string, version?: string): string;
21
+ /** The full shared-dependency contract for {@link SHARED_DEPENDENCY_CONTRACT_VERSION}. */
22
+ export declare const SHARED_DEPENDENCIES: readonly SharedDependency[];
23
+ /** Just the bare specifiers — handy for a bundler `external` list. */
24
+ export declare const SHARED_DEPENDENCY_SPECIFIERS: readonly string[];
25
+ /** What a host advertises at runtime so apps can detect the live contract. */
26
+ export interface HostSharedDependencies {
27
+ version: string;
28
+ specifiers: string[];
29
+ }
30
+ /**
31
+ * Read the shared-dependency contract the current host advertises at runtime
32
+ * (via `window.__SMARTLINKS_SHARED__`). Returns `null` when there is no host
33
+ * marker — e.g. an older portal, or the bundle running outside a portal — so an
34
+ * app can degrade gracefully or fail with an actionable message instead of a
35
+ * bare-specifier resolution crash.
36
+ */
37
+ export declare function getHostSharedDependencies(): HostSharedDependencies | null;
@@ -0,0 +1,79 @@
1
+ // src/shared-dependencies.ts
2
+ // -----------------------------------------------------------------------------
3
+ // The host↔app SHARED DEPENDENCY CONTRACT — the single source of truth for which
4
+ // libraries the R5 portal (host) provides as singletons, so apps externalize them
5
+ // instead of bundling their own copy.
6
+ //
7
+ // The host publishes these to modern (ESM) apps via a versioned import map, and to
8
+ // legacy (UMD) apps via window globals. Both hosts and app authors should read THIS
9
+ // list rather than hard-coding their own — a mismatch is what causes duplicate-React
10
+ // crashes and silent blank containers.
11
+ //
12
+ // See docs/host-dependency-contract.md.
13
+ /** Current contract revision. Bumped when the entry list or host versions change. */
14
+ export const SHARED_DEPENDENCY_CONTRACT_VERSION = 'v5';
15
+ /**
16
+ * Canonical import-map path for a specifier: drop the leading `@` scope marker and
17
+ * turn every `/` into `-`.
18
+ * 'react-dom/client' -> '/sl-shared/v5/react-dom-client.js'
19
+ * '@radix-ui/react-slot' -> '/sl-shared/v5/radix-ui-react-slot.js'
20
+ * Hosts MUST serve shims at these paths so the map the SDK advertises resolves.
21
+ */
22
+ export function importMapPathFor(specifier, version = SHARED_DEPENDENCY_CONTRACT_VERSION) {
23
+ const slug = specifier.replace(/^@/, '').replace(/\//g, '-');
24
+ return `/sl-shared/${version}/${slug}.js`;
25
+ }
26
+ // The 25-entry v5 contract: the historical 23 plus `react-dom/client` and
27
+ // `react/jsx-dev-runtime`. minVersion follows the R5 host baseline (React 19,
28
+ // Router 7.18.4 security floor, LiquidJS 10.27+, current Radix majors).
29
+ const CONTRACT = [
30
+ { specifier: 'react', globalName: 'React', minVersion: '19.0.0' },
31
+ { specifier: 'react-dom', globalName: 'ReactDOM', minVersion: '19.0.0' },
32
+ { specifier: 'react-dom/client', globalName: 'ReactDOMClient', minVersion: '19.0.0' },
33
+ { specifier: 'react/jsx-runtime', globalName: 'jsxRuntime', minVersion: '19.0.0' },
34
+ { specifier: 'react/jsx-dev-runtime', globalName: 'jsxDevRuntime', minVersion: '19.0.0' },
35
+ { specifier: '@proveanything/smartlinks', globalName: 'SL', minVersion: '2.0.0' },
36
+ { specifier: '@proveanything/smartlinks-auth-ui', globalName: 'SmartlinksAuthUI', minVersion: '2.0.0' },
37
+ { specifier: 'react-router-dom', globalName: 'ReactRouterDOM', minVersion: '7.18.4' },
38
+ { specifier: '@tanstack/react-query', globalName: 'ReactQuery', minVersion: '5.0.0' },
39
+ { specifier: 'lucide-react', globalName: 'LucideReact', minVersion: '1.0.0' },
40
+ { specifier: 'date-fns', globalName: 'dateFns', minVersion: '4.0.0' },
41
+ { specifier: 'liquidjs', globalName: 'LiquidJS', minVersion: '10.27.0' },
42
+ { specifier: 'class-variance-authority', globalName: 'CVA', minVersion: '0.7.0' },
43
+ { specifier: '@radix-ui/react-slot', globalName: 'RadixSlot', minVersion: '1.2.0' },
44
+ { specifier: '@radix-ui/react-dialog', globalName: 'RadixDialog', minVersion: '1.1.0' },
45
+ { specifier: '@radix-ui/react-popover', globalName: 'RadixPopover', minVersion: '1.1.0' },
46
+ { specifier: '@radix-ui/react-tooltip', globalName: 'RadixTooltip', minVersion: '1.2.0' },
47
+ { specifier: '@radix-ui/react-tabs', globalName: 'RadixTabs', minVersion: '1.1.0' },
48
+ { specifier: '@radix-ui/react-accordion', globalName: 'RadixAccordion', minVersion: '1.2.0' },
49
+ { specifier: '@radix-ui/react-select', globalName: 'RadixSelect', minVersion: '2.3.0' },
50
+ { specifier: '@radix-ui/react-scroll-area', globalName: 'RadixScrollArea', minVersion: '1.2.0' },
51
+ { specifier: '@radix-ui/react-label', globalName: 'RadixLabel', minVersion: '2.1.0' },
52
+ { specifier: '@radix-ui/react-toast', globalName: 'RadixToast', minVersion: '1.2.0' },
53
+ { specifier: '@radix-ui/react-progress', globalName: 'RadixProgress', minVersion: '1.1.0' },
54
+ { specifier: '@radix-ui/react-avatar', globalName: 'RadixAvatar', minVersion: '1.1.0' },
55
+ ];
56
+ /** The full shared-dependency contract for {@link SHARED_DEPENDENCY_CONTRACT_VERSION}. */
57
+ export const SHARED_DEPENDENCIES = CONTRACT.map((d) => (Object.assign(Object.assign({}, d), { importMapPath: importMapPathFor(d.specifier) })));
58
+ /** Just the bare specifiers — handy for a bundler `external` list. */
59
+ export const SHARED_DEPENDENCY_SPECIFIERS = SHARED_DEPENDENCIES.map((d) => d.specifier);
60
+ /**
61
+ * Read the shared-dependency contract the current host advertises at runtime
62
+ * (via `window.__SMARTLINKS_SHARED__`). Returns `null` when there is no host
63
+ * marker — e.g. an older portal, or the bundle running outside a portal — so an
64
+ * app can degrade gracefully or fail with an actionable message instead of a
65
+ * bare-specifier resolution crash.
66
+ */
67
+ export function getHostSharedDependencies() {
68
+ const g = globalThis;
69
+ const marker = g.__SMARTLINKS_SHARED__;
70
+ if (!marker || typeof marker !== 'object')
71
+ return null;
72
+ const version = typeof marker.version === 'string' ? marker.version : null;
73
+ const specifiers = Array.isArray(marker.specifiers)
74
+ ? marker.specifiers.filter((s) => typeof s === 'string')
75
+ : null;
76
+ if (!version || !specifiers)
77
+ return null;
78
+ return { version, specifiers };
79
+ }
@@ -1,4 +1,4 @@
1
- import type { AppFunctionDef, ServerFunctionContext } from '../types/appManifest';
1
+ import type { AppFunctionDef, ServerFunctionContext } from '../types/appManifest.js';
2
2
  export declare class CapabilityError extends Error {
3
3
  capability: string;
4
4
  code: string;
@@ -1,4 +1,4 @@
1
- import type { ResolvedTranslationItem, TranslationContext, TranslationHashOptions } from './types/translations';
1
+ import type { ResolvedTranslationItem, TranslationContext, TranslationHashOptions } from './types/translations.js';
2
2
  interface LocalTranslationCacheEntry {
3
3
  collectionId: string;
4
4
  sourceLanguage: string;
@@ -405,6 +405,29 @@ export interface AppManifest {
405
405
  version: string;
406
406
  platformRevision?: string;
407
407
  appId: string;
408
+ /**
409
+ * How this app's bundles are packaged, so the host knows how to load them:
410
+ * - `"umd"` (default when absent) — host loads the UMD bundle (`files.js.umd`)
411
+ * via the CommonJS `require` shim, resolving shared deps from window globals.
412
+ * Every existing app keeps working with no change.
413
+ * - `"dual"` — host prefers the ESM bundle (`files.js.esm`) when it has an import
414
+ * map for the declared `sharedDependencies` contract; falls back to UMD otherwise.
415
+ * - `"esm"` — host loads ESM natively; if it has no matching import map it fails
416
+ * with an actionable error rather than a bare-specifier resolution crash.
417
+ */
418
+ moduleFormat?: 'umd' | 'esm' | 'dual';
419
+ /**
420
+ * Shared-dependency contract version this bundle was built against, e.g. `"v5"`
421
+ * (see `SHARED_DEPENDENCY_CONTRACT_VERSION`). The host uses it to select a
422
+ * compatible import map for the ESM load path.
423
+ */
424
+ sharedDependencies?: string;
425
+ /**
426
+ * Per-app namespaced UMD globals (R4.7+), e.g. `{ widgets: "MyAppWidgets" }`.
427
+ * UMD-only: ESM bundles expose their exports through the module namespace and
428
+ * don't need this. Absent → legacy bundle (colliding `window.SmartLinks{Surface}`).
429
+ */
430
+ globals?: Record<string, string>;
408
431
  /**
409
432
  * SEO configuration for this app.
410
433
  * `priority` controls which app's singular fields (title, description, ogImage) win
@@ -44,7 +44,7 @@ export interface BroadcastList {
44
44
  offset: number;
45
45
  }
46
46
  export interface BroadcastRecipientsResponse {
47
- items: import('./comms').Recipient[];
47
+ items: import('./comms.js').Recipient[];
48
48
  total: number;
49
49
  limit: number;
50
50
  offset: number;
@@ -1,5 +1,5 @@
1
- import { AssetRef } from "./asset";
2
- import type { AppConfigSettings } from "./appConfiguration";
1
+ import { AssetRef } from "./asset.js";
2
+ import type { AppConfigSettings } from "./appConfiguration.js";
3
3
  /**
4
4
  * Represents a Collection object.
5
5
  */
@@ -1,5 +1,5 @@
1
- import type { IdField } from './common';
2
- import type { BroadcastChannel } from './broadcasts';
1
+ import type { IdField } from './common.js';
2
+ import type { BroadcastChannel } from './broadcasts.js';
3
3
  /**
4
4
  * Target subject for notifications (product, collection, etc.)
5
5
  */
@@ -93,7 +93,7 @@ export interface AppendBulkResult {
93
93
  success: true;
94
94
  count: number;
95
95
  }
96
- export type Recipient = import('./contact').Contact;
96
+ export type Recipient = import('./contact.js').Contact;
97
97
  export interface RecipientsPage {
98
98
  items: Recipient[];
99
99
  total: number;
@@ -181,7 +181,7 @@ export interface UnsubscribeResponse {
181
181
  };
182
182
  }
183
183
  export type ConsentChannels = Partial<Record<BroadcastChannel, boolean>>;
184
- type SubjectType = import('./contact').SubjectType;
184
+ type SubjectType = import('./contact.js').SubjectType;
185
185
  export interface CommsConsentUpsertRequest {
186
186
  contactId: string;
187
187
  channels?: ConsentChannels;
@@ -229,7 +229,7 @@ export interface CommsListMethodsQuery {
229
229
  }
230
230
  export interface CommsListMethodsResponse {
231
231
  ok: true;
232
- methods: import('./contact').CommMethod[];
232
+ methods: import('./contact.js').CommMethod[];
233
233
  }
234
234
  export interface RegisterEmailMethodRequest {
235
235
  contactId?: string;
@@ -103,7 +103,7 @@ export interface PublicUpdateMyContactResponse {
103
103
  ok: boolean;
104
104
  contact: ContactPublic;
105
105
  }
106
- export type ChannelName = import('./broadcasts').BroadcastChannel;
106
+ export type ChannelName = import('./broadcasts.js').BroadcastChannel;
107
107
  export type SubjectType = 'product' | 'proof' | 'batch';
108
108
  /** Registered delivery method for a contact */
109
109
  export interface CommMethodMeta {
@@ -1,4 +1,4 @@
1
- import type { JsonValue, ProductQueryRequest } from "./product";
1
+ import type { JsonValue, ProductQueryRequest } from "./product.js";
2
2
  export interface FacetDefinition {
3
3
  id?: string;
4
4
  orgId?: string;
@@ -1,6 +1,6 @@
1
- export type { AuthKitUser } from './authKit';
2
- export type { AppConfig as CollectionApp } from './collection';
3
- import type { AppConfig } from './collection';
1
+ export type { AuthKitUser } from './authKit.js';
2
+ export type { AppConfig as CollectionApp } from './collection.js';
3
+ import type { AppConfig } from './collection.js';
4
4
  export interface CachedData {
5
5
  collection?: Record<string, any>;
6
6
  product?: Record<string, any>;
@@ -1,44 +1,44 @@
1
- export * from "./collection";
2
- export * from "./facets";
3
- export * from "./product";
4
- export * from "./proof";
5
- export * from "./appConfiguration";
6
- export * from "./error";
7
- export * from "./asset";
8
- export * from "./batch";
9
- export * from "./variant";
10
- export * from "./claimSet";
11
- export * from "./auth";
12
- export * from "./comms";
13
- export * from "./nfc";
14
- export * from "./itemContext";
15
- export * from "./contact";
16
- export * from "./broadcasts";
17
- export * from "./segments";
18
- export * from "./common";
19
- export * from "./journeys";
20
- export * from "./journeysAnalytics";
21
- export * from "./qr";
22
- export * from "./template";
23
- export * from "./interaction";
24
- export * from "./analytics";
25
- export * from "./location";
26
- export * from "./jobs";
27
- export * from "./realtime";
28
- export * from "./tags";
29
- export * from "./navigation";
30
- export * from "./order";
31
- export * from "./crate";
32
- export * from "./attestations";
33
- export * from "./containers";
34
- export * from "./authKit";
35
- export * from "./iframeResponder";
36
- export * from "./ai";
37
- export * from "./appManifest";
38
- export * from "./appObjects";
39
- export * from "./loyalty";
40
- export * from "./translations";
41
- export * from "./integrations";
42
- export * from "./research";
43
- export * from "./config";
44
- export * from "./widgets";
1
+ export * from "./collection.js";
2
+ export * from "./facets.js";
3
+ export * from "./product.js";
4
+ export * from "./proof.js";
5
+ export * from "./appConfiguration.js";
6
+ export * from "./error.js";
7
+ export * from "./asset.js";
8
+ export * from "./batch.js";
9
+ export * from "./variant.js";
10
+ export * from "./claimSet.js";
11
+ export * from "./auth.js";
12
+ export * from "./comms.js";
13
+ export * from "./nfc.js";
14
+ export * from "./itemContext.js";
15
+ export * from "./contact.js";
16
+ export * from "./broadcasts.js";
17
+ export * from "./segments.js";
18
+ export * from "./common.js";
19
+ export * from "./journeys.js";
20
+ export * from "./journeysAnalytics.js";
21
+ export * from "./qr.js";
22
+ export * from "./template.js";
23
+ export * from "./interaction.js";
24
+ export * from "./analytics.js";
25
+ export * from "./location.js";
26
+ export * from "./jobs.js";
27
+ export * from "./realtime.js";
28
+ export * from "./tags.js";
29
+ export * from "./navigation.js";
30
+ export * from "./order.js";
31
+ export * from "./crate.js";
32
+ export * from "./attestations.js";
33
+ export * from "./containers.js";
34
+ export * from "./authKit.js";
35
+ export * from "./iframeResponder.js";
36
+ export * from "./ai.js";
37
+ export * from "./appManifest.js";
38
+ export * from "./appObjects.js";
39
+ export * from "./loyalty.js";
40
+ export * from "./translations.js";
41
+ export * from "./integrations.js";
42
+ export * from "./research.js";
43
+ export * from "./config.js";
44
+ export * from "./widgets.js";
@@ -1,46 +1,46 @@
1
1
  // src/types/index.ts
2
2
  // Re-export all type modules so consumers can import types directly
3
- export * from "./collection";
4
- export * from "./facets";
5
- export * from "./product";
6
- export * from "./proof";
7
- export * from "./appConfiguration";
8
- export * from "./error";
9
- export * from "./asset";
10
- export * from "./batch";
11
- export * from "./variant";
12
- export * from "./claimSet";
13
- export * from "./auth";
14
- export * from "./comms";
15
- export * from "./nfc";
16
- export * from "./itemContext";
17
- export * from "./contact";
18
- export * from "./broadcasts";
19
- export * from "./segments";
20
- export * from "./common";
21
- export * from "./journeys";
22
- export * from "./journeysAnalytics";
23
- export * from "./qr";
24
- export * from "./template";
25
- export * from "./interaction";
26
- export * from "./analytics";
27
- export * from "./location";
28
- export * from "./jobs";
29
- export * from "./realtime";
30
- export * from "./tags";
31
- export * from "./navigation";
32
- export * from "./order";
33
- export * from "./crate";
34
- export * from "./attestations";
35
- export * from "./containers";
36
- export * from "./authKit";
37
- export * from "./iframeResponder";
38
- export * from "./ai";
39
- export * from "./appManifest";
40
- export * from "./appObjects";
41
- export * from "./loyalty";
42
- export * from "./translations";
43
- export * from "./integrations";
44
- export * from "./research";
45
- export * from "./config";
46
- export * from "./widgets";
3
+ export * from "./collection.js";
4
+ export * from "./facets.js";
5
+ export * from "./product.js";
6
+ export * from "./proof.js";
7
+ export * from "./appConfiguration.js";
8
+ export * from "./error.js";
9
+ export * from "./asset.js";
10
+ export * from "./batch.js";
11
+ export * from "./variant.js";
12
+ export * from "./claimSet.js";
13
+ export * from "./auth.js";
14
+ export * from "./comms.js";
15
+ export * from "./nfc.js";
16
+ export * from "./itemContext.js";
17
+ export * from "./contact.js";
18
+ export * from "./broadcasts.js";
19
+ export * from "./segments.js";
20
+ export * from "./common.js";
21
+ export * from "./journeys.js";
22
+ export * from "./journeysAnalytics.js";
23
+ export * from "./qr.js";
24
+ export * from "./template.js";
25
+ export * from "./interaction.js";
26
+ export * from "./analytics.js";
27
+ export * from "./location.js";
28
+ export * from "./jobs.js";
29
+ export * from "./realtime.js";
30
+ export * from "./tags.js";
31
+ export * from "./navigation.js";
32
+ export * from "./order.js";
33
+ export * from "./crate.js";
34
+ export * from "./attestations.js";
35
+ export * from "./containers.js";
36
+ export * from "./authKit.js";
37
+ export * from "./iframeResponder.js";
38
+ export * from "./ai.js";
39
+ export * from "./appManifest.js";
40
+ export * from "./appObjects.js";
41
+ export * from "./loyalty.js";
42
+ export * from "./translations.js";
43
+ export * from "./integrations.js";
44
+ export * from "./research.js";
45
+ export * from "./config.js";
46
+ export * from "./widgets.js";
@@ -1,4 +1,4 @@
1
- import type { IdField } from './common';
1
+ import type { IdField } from './common.js';
2
2
  export interface AdminInteractionsQueryRequest {
3
3
  userId?: string;
4
4
  contactId?: string;
@@ -1,4 +1,4 @@
1
- import type { TagContext } from './nfc';
1
+ import type { TagContext } from './nfc.js';
2
2
  /**
3
3
  * Authenticity status for a specific item — a proof, resolved via an NFC
4
4
  * tap or a serial proof URL. Collection- and product-only URLs have no
@@ -1,4 +1,4 @@
1
- import type { IdField } from './common';
1
+ import type { IdField } from './common.js';
2
2
  export interface JourneyStatsRequest {
3
3
  idField?: IdField;
4
4
  from?: string;
@@ -1,4 +1,4 @@
1
- import type { CollectionAnalyticsEvent } from './analytics';
1
+ import type { CollectionAnalyticsEvent } from './analytics.js';
2
2
  /** Where the link opens once resolved. */
3
3
  export type LinkOpenTarget = '_self' | '_blank';
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { AssetRef } from "./asset";
1
+ import { AssetRef } from "./asset.js";
2
2
  export type JsonPrimitive = string | number | boolean | null;
3
3
  export type JsonValue = JsonPrimitive | JsonValue[] | {
4
4
  [key: string]: JsonValue;
@@ -1,4 +1,4 @@
1
- import { JsonValue, ScopedFieldDef } from './product';
1
+ import { JsonValue, ScopedFieldDef } from './product.js';
2
2
  /**
3
3
  * `proof.values` — the owner + business-writable bag.
4
4
  * Public keys sit at the root (business + current owner can write, everyone