@linktr.ee/linkapp 0.0.47 → 0.0.49
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 +1 -1
- package/dev-server/components/form/array-field.tsx +115 -0
- package/dev-server/components/form/file-field.tsx +48 -0
- package/dev-server/components/form/form-element.tsx +304 -0
- package/dev-server/components/form/link-behavior-field.tsx +68 -0
- package/dev-server/components/form/location-field.tsx +60 -0
- package/dev-server/components/settings-preview.tsx +138 -302
- package/dev-server/components/ui/checkbox.tsx +29 -0
- package/dev-server/components/ui/dialog.tsx +2 -10
- package/dev-server/components/ui/field.tsx +37 -0
- package/dev-server/components/ui/input.tsx +24 -0
- package/dev-server/components/ui/label.tsx +21 -0
- package/dev-server/components/ui/radio-group.tsx +37 -0
- package/dev-server/components/ui/select.tsx +153 -0
- package/dev-server/components/ui/switch.tsx +31 -0
- package/dev-server/components/ui/tabs.tsx +1 -1
- package/dev-server/components/ui/textarea.tsx +22 -0
- package/dev-server/env.d.ts +4 -1
- package/dev-server/expanded/main.tsx +20 -22
- package/dev-server/expanded.html +0 -1
- package/dev-server/featured/main.tsx +29 -36
- package/dev-server/featured-carousel.html +0 -1
- package/dev-server/featured.html +0 -1
- package/dev-server/index.html +1 -7
- package/dev-server/lib/utils.ts +3 -3
- package/dev-server/package.json +3 -3
- package/dev-server/postcss/tailwind-source-fallback.js +2 -7
- package/dev-server/postcss.config.mjs +2 -2
- package/dev-server/preview/Preview.tsx +316 -359
- package/dev-server/preview/main.tsx +8 -8
- package/dev-server/preview/preview.css +0 -1
- package/dev-server/public/site.webmanifest +1 -1
- package/dev-server/rsbuild.config.ts +1 -1
- package/dev-server/shared/dev-parent-simulator.ts +219 -0
- package/dev-server/shared/theme-presets.ts +71 -75
- package/dev-server/shared/theme-utils.ts +11 -11
- package/dist/cli.js +18 -12
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +27 -42
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +26 -16
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/deploy.d.ts +1 -11
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +3 -13
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +132 -388
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +17 -29
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +6 -11
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/rollback.d.ts +10 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +148 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/status.d.ts +8 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +96 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/test-url-match-rules.d.ts.map +1 -1
- package/dist/commands/test-url-match-rules.js +20 -26
- package/dist/commands/test-url-match-rules.js.map +1 -1
- package/dist/lib/auth/device-flow.d.ts +1 -1
- package/dist/lib/auth/device-flow.d.ts.map +1 -1
- package/dist/lib/auth/device-flow.js +3 -3
- package/dist/lib/auth/device-flow.js.map +1 -1
- package/dist/lib/auth/token-storage.d.ts.map +1 -1
- package/dist/lib/auth/token-storage.js +14 -37
- package/dist/lib/auth/token-storage.js.map +1 -1
- package/dist/lib/build/detect-layouts.d.ts.map +1 -1
- package/dist/lib/build/detect-layouts.js +27 -13
- package/dist/lib/build/detect-layouts.js.map +1 -1
- package/dist/lib/config/load-config.d.ts.map +1 -1
- package/dist/lib/config/load-config.js +0 -2
- package/dist/lib/config/load-config.js.map +1 -1
- package/dist/lib/deploy/deploy-output.d.ts +2 -1
- package/dist/lib/deploy/deploy-output.d.ts.map +1 -1
- package/dist/lib/deploy/deploy-output.js +9 -1
- package/dist/lib/deploy/deploy-output.js.map +1 -1
- package/dist/lib/deploy/deploy-phases.d.ts +2 -0
- package/dist/lib/deploy/deploy-phases.d.ts.map +1 -1
- package/dist/lib/deploy/deploy-phases.js +9 -23
- package/dist/lib/deploy/deploy-phases.js.map +1 -1
- package/dist/lib/deploy/deploy-utils.d.ts +15 -7
- package/dist/lib/deploy/deploy-utils.d.ts.map +1 -1
- package/dist/lib/deploy/deploy-utils.js +49 -36
- package/dist/lib/deploy/deploy-utils.js.map +1 -1
- package/dist/lib/deploy/generate-manifest-files.d.ts.map +1 -1
- package/dist/lib/deploy/generate-manifest-files.js +13 -39
- package/dist/lib/deploy/generate-manifest-files.js.map +1 -1
- package/dist/lib/deploy/pack-project.d.ts.map +1 -1
- package/dist/lib/deploy/pack-project.js +34 -20
- package/dist/lib/deploy/pack-project.js.map +1 -1
- package/dist/lib/deploy/slot-manager.d.ts +54 -0
- package/dist/lib/deploy/slot-manager.d.ts.map +1 -0
- package/dist/lib/deploy/slot-manager.js +72 -0
- package/dist/lib/deploy/slot-manager.js.map +1 -0
- package/dist/lib/deploy/test-url-match-rules.d.ts +10 -2
- package/dist/lib/deploy/test-url-match-rules.d.ts.map +1 -1
- package/dist/lib/deploy/test-url-match-rules.js +1 -1
- package/dist/lib/deploy/test-url-match-rules.js.map +1 -1
- package/dist/lib/deploy/upload.d.ts +1 -0
- package/dist/lib/deploy/upload.d.ts.map +1 -1
- package/dist/lib/deploy/upload.js +15 -24
- package/dist/lib/deploy/upload.js.map +1 -1
- package/dist/lib/deploy/validation.d.ts.map +1 -1
- package/dist/lib/deploy/validation.js +43 -48
- package/dist/lib/deploy/validation.js.map +1 -1
- package/dist/lib/rsbuild/config-factory.d.ts.map +1 -1
- package/dist/lib/rsbuild/config-factory.js +10 -17
- package/dist/lib/rsbuild/config-factory.js.map +1 -1
- package/dist/lib/rsbuild/plugins/asset-versioning.d.ts.map +1 -1
- package/dist/lib/rsbuild/plugins/asset-versioning.js +4 -14
- package/dist/lib/rsbuild/plugins/asset-versioning.js.map +1 -1
- package/dist/lib/rsbuild/plugins/brotli-compression.d.ts.map +1 -1
- package/dist/lib/rsbuild/plugins/brotli-compression.js +4 -4
- package/dist/lib/rsbuild/plugins/brotli-compression.js.map +1 -1
- package/dist/lib/rsbuild/plugins/copy-public.d.ts.map +1 -1
- package/dist/lib/rsbuild/plugins/copy-public.js.map +1 -1
- package/dist/lib/rsbuild/postcss/tailwind-source-fallback.d.ts.map +1 -1
- package/dist/lib/rsbuild/postcss/tailwind-source-fallback.js +1 -3
- package/dist/lib/rsbuild/postcss/tailwind-source-fallback.js.map +1 -1
- package/dist/lib/utils/console.d.ts +8 -0
- package/dist/lib/utils/console.d.ts.map +1 -0
- package/dist/lib/utils/console.js +10 -0
- package/dist/lib/utils/console.js.map +1 -0
- package/dist/lib/utils/filesystem.d.ts +9 -0
- package/dist/lib/utils/filesystem.d.ts.map +1 -0
- package/dist/lib/utils/filesystem.js +30 -0
- package/dist/lib/utils/filesystem.js.map +1 -0
- package/dist/lib/utils/formatters.d.ts +8 -0
- package/dist/lib/utils/formatters.d.ts.map +1 -0
- package/dist/lib/utils/formatters.js +22 -0
- package/dist/lib/utils/formatters.js.map +1 -0
- package/dist/lib/utils/index.d.ts +7 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +7 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/utils/setup-runtime.d.ts.map +1 -1
- package/dist/lib/utils/setup-runtime.js +36 -73
- package/dist/lib/utils/setup-runtime.js.map +1 -1
- package/dist/schema/config.schema.d.ts +9 -48
- package/dist/schema/config.schema.d.ts.map +1 -1
- package/dist/schema/config.schema.js +119 -120
- package/dist/schema/config.schema.js.map +1 -1
- package/dist/sdk/hooks/mocks.d.ts +9 -0
- package/dist/sdk/hooks/mocks.d.ts.map +1 -0
- package/dist/sdk/hooks/mocks.js +17 -0
- package/dist/sdk/hooks/mocks.js.map +1 -0
- package/dist/sdk/hooks/use-audience-manager.d.ts +44 -0
- package/dist/sdk/hooks/use-audience-manager.d.ts.map +1 -0
- package/dist/sdk/hooks/use-audience-manager.js +109 -0
- package/dist/sdk/hooks/use-audience-manager.js.map +1 -0
- package/dist/sdk/hooks/use-ip.d.ts +45 -0
- package/dist/sdk/hooks/use-ip.d.ts.map +1 -0
- package/dist/sdk/hooks/use-ip.js +46 -0
- package/dist/sdk/hooks/use-ip.js.map +1 -0
- package/dist/sdk/hooks/use-sdk-request.d.ts +46 -0
- package/dist/sdk/hooks/use-sdk-request.d.ts.map +1 -0
- package/dist/sdk/hooks/use-sdk-request.js +65 -0
- package/dist/sdk/hooks/use-sdk-request.js.map +1 -0
- package/dist/sdk/hooks/use-theme.d.ts +45 -0
- package/dist/sdk/hooks/use-theme.d.ts.map +1 -0
- package/dist/sdk/hooks/use-theme.js +97 -0
- package/dist/sdk/hooks/use-theme.js.map +1 -0
- package/dist/sdk/hooks/use-visitor.d.ts +41 -0
- package/dist/sdk/hooks/use-visitor.d.ts.map +1 -0
- package/dist/sdk/hooks/use-visitor.js +42 -0
- package/dist/sdk/hooks/use-visitor.js.map +1 -0
- package/dist/sdk/hooks/validation.d.ts +8 -0
- package/dist/sdk/hooks/validation.d.ts.map +1 -0
- package/dist/sdk/hooks/validation.js +13 -0
- package/dist/sdk/hooks/validation.js.map +1 -0
- package/dist/sdk/index.d.ts +17 -5
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +16 -5
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/message-bus.d.ts +59 -0
- package/dist/sdk/message-bus.d.ts.map +1 -0
- package/dist/sdk/message-bus.js +152 -0
- package/dist/sdk/message-bus.js.map +1 -0
- package/dist/sdk/messages.d.ts +121 -0
- package/dist/sdk/messages.d.ts.map +1 -0
- package/dist/sdk/messages.js +9 -0
- package/dist/sdk/messages.js.map +1 -0
- package/dist/sdk/send-message.d.ts +1 -1
- package/dist/sdk/send-message.js +18 -18
- package/dist/sdk/send-message.js.map +1 -1
- package/dist/sdk/use-expand-link-app.d.ts +3 -3
- package/dist/sdk/use-expand-link-app.d.ts.map +1 -1
- package/dist/sdk/use-expand-link-app.js +9 -5
- package/dist/sdk/use-expand-link-app.js.map +1 -1
- package/dist/types.d.ts +235 -55
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -3
- package/dist/types.js.map +1 -1
- package/package.json +8 -9
- package/runtime/index.html +28 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MessageBus for bidirectional communication between LinkApp iframe and parent window
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - send(message): Fire-and-forget message to parent
|
|
6
|
+
* - request<T>(message, timeout): Send request and await response with correlation
|
|
7
|
+
* - on(type, handler): Subscribe to incoming message types
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Singleton message bus for LinkApp SDK communication
|
|
11
|
+
*/
|
|
12
|
+
class LinkAppMessageBus {
|
|
13
|
+
handlers = new Map();
|
|
14
|
+
pendingRequests = new Map();
|
|
15
|
+
listenerAttached = false;
|
|
16
|
+
constructor() {
|
|
17
|
+
if (typeof window !== 'undefined') {
|
|
18
|
+
this.setupMessageListener();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
setupMessageListener() {
|
|
22
|
+
if (this.listenerAttached)
|
|
23
|
+
return;
|
|
24
|
+
this.listenerAttached = true;
|
|
25
|
+
window.addEventListener('message', this.handleMessage.bind(this));
|
|
26
|
+
}
|
|
27
|
+
handleMessage(event) {
|
|
28
|
+
// Basic structure validation
|
|
29
|
+
const message = event.data;
|
|
30
|
+
if (!message || typeof message !== 'object' || !message.type) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Handle request-response correlation
|
|
34
|
+
const payload = message.payload;
|
|
35
|
+
if (payload?.requestId) {
|
|
36
|
+
const pending = this.pendingRequests.get(payload.requestId);
|
|
37
|
+
if (pending && message.type === pending.responseType) {
|
|
38
|
+
clearTimeout(pending.timeout);
|
|
39
|
+
this.pendingRequests.delete(payload.requestId);
|
|
40
|
+
// Check for error responses
|
|
41
|
+
const errorPayload = payload;
|
|
42
|
+
if (errorPayload.success === false && errorPayload.error) {
|
|
43
|
+
pending.reject(new Error(errorPayload.error));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
pending.resolve(message);
|
|
47
|
+
}
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Dispatch to registered handlers
|
|
52
|
+
const handlers = this.handlers.get(message.type);
|
|
53
|
+
if (handlers) {
|
|
54
|
+
for (const handler of handlers) {
|
|
55
|
+
try {
|
|
56
|
+
handler(message);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
console.error(`[LinkApp SDK] Handler error for ${message.type}:`, err);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if running inside an iframe
|
|
66
|
+
*/
|
|
67
|
+
isInIframe() {
|
|
68
|
+
if (typeof window === 'undefined')
|
|
69
|
+
return false;
|
|
70
|
+
return window !== window.parent;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generate a unique request ID for correlation
|
|
74
|
+
*/
|
|
75
|
+
generateRequestId() {
|
|
76
|
+
return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Send a message to the parent window (fire-and-forget)
|
|
80
|
+
*/
|
|
81
|
+
send(message) {
|
|
82
|
+
if (typeof window === 'undefined') {
|
|
83
|
+
console.warn('[LinkApp SDK] Cannot send message in non-browser environment');
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (!this.isInIframe()) {
|
|
87
|
+
console.warn('[LinkApp SDK] Cannot send message outside iframe context');
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
window.parent.postMessage(message, '*');
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Send a request and await the response
|
|
94
|
+
*
|
|
95
|
+
* @param message - The request message to send
|
|
96
|
+
* @param responseType - The expected response message type
|
|
97
|
+
* @param timeoutMs - Timeout in milliseconds (default: 10000)
|
|
98
|
+
* @returns Promise that resolves with the response message
|
|
99
|
+
*/
|
|
100
|
+
async request(message, responseType, timeoutMs = 10000) {
|
|
101
|
+
// In dev mode (not in iframe), reject with helpful message
|
|
102
|
+
if (!this.isInIframe()) {
|
|
103
|
+
return Promise.reject(new Error(`[LinkApp SDK] ${message.type} requires iframe context. Use dev server for testing.`));
|
|
104
|
+
}
|
|
105
|
+
const requestId = message.payload.requestId;
|
|
106
|
+
if (!requestId) {
|
|
107
|
+
return Promise.reject(new Error('[LinkApp SDK] Request message must have a requestId in payload'));
|
|
108
|
+
}
|
|
109
|
+
return new Promise((resolve, reject) => {
|
|
110
|
+
const timeout = setTimeout(() => {
|
|
111
|
+
this.pendingRequests.delete(requestId);
|
|
112
|
+
reject(new Error(`[LinkApp SDK] Request ${message.type} timed out after ${timeoutMs}ms`));
|
|
113
|
+
}, timeoutMs);
|
|
114
|
+
this.pendingRequests.set(requestId, {
|
|
115
|
+
resolve,
|
|
116
|
+
reject,
|
|
117
|
+
timeout,
|
|
118
|
+
responseType,
|
|
119
|
+
});
|
|
120
|
+
this.send(message);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Subscribe to a specific message type from parent
|
|
125
|
+
*
|
|
126
|
+
* @param type - The message type to listen for
|
|
127
|
+
* @param handler - Callback function when message is received
|
|
128
|
+
* @returns Unsubscribe function
|
|
129
|
+
*/
|
|
130
|
+
on(type, handler) {
|
|
131
|
+
if (!this.handlers.has(type)) {
|
|
132
|
+
this.handlers.set(type, new Set());
|
|
133
|
+
}
|
|
134
|
+
this.handlers.get(type)?.add(handler);
|
|
135
|
+
// Return unsubscribe function
|
|
136
|
+
return () => {
|
|
137
|
+
this.handlers.get(type)?.delete(handler);
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Clear all pending requests (for testing)
|
|
142
|
+
*/
|
|
143
|
+
clearPendingRequests() {
|
|
144
|
+
for (const [, pending] of this.pendingRequests) {
|
|
145
|
+
clearTimeout(pending.timeout);
|
|
146
|
+
}
|
|
147
|
+
this.pendingRequests.clear();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Singleton instance
|
|
151
|
+
export const messageBus = new LinkAppMessageBus();
|
|
152
|
+
//# sourceMappingURL=message-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-bus.js","sourceRoot":"","sources":["../../src/sdk/message-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message types for bidirectional communication between LinkApp iframe and parent window
|
|
3
|
+
*
|
|
4
|
+
* Protocol:
|
|
5
|
+
* - LinkApp sends REQUEST_* messages to parent with a unique requestId
|
|
6
|
+
* - Parent responds with *_RESPONSE messages containing the same requestId
|
|
7
|
+
*/
|
|
8
|
+
/** Unique identifier for request-response correlation */
|
|
9
|
+
export type RequestId = string;
|
|
10
|
+
/** Visitor data from the parent profile page */
|
|
11
|
+
export interface VisitorData {
|
|
12
|
+
/** Whether the visitor is on a mobile device */
|
|
13
|
+
mobileDetected: boolean;
|
|
14
|
+
/** Browser user agent string */
|
|
15
|
+
userAgent: string;
|
|
16
|
+
/** Whether the visitor is following this profile */
|
|
17
|
+
isFollowing?: boolean | undefined;
|
|
18
|
+
/** Visitor's email if they are a verified follower */
|
|
19
|
+
followerEmail?: string | undefined;
|
|
20
|
+
}
|
|
21
|
+
/** IP and geolocation data */
|
|
22
|
+
export interface IPData {
|
|
23
|
+
/** ISO 3166-1 alpha-2 country code (e.g., "US") */
|
|
24
|
+
countryCode?: string | undefined;
|
|
25
|
+
/** City name in lowercase (e.g., "san francisco") */
|
|
26
|
+
city?: string | undefined;
|
|
27
|
+
}
|
|
28
|
+
/** Subscribe operation result */
|
|
29
|
+
export interface SubscribeResult {
|
|
30
|
+
success: boolean;
|
|
31
|
+
error?: string | undefined;
|
|
32
|
+
errorCode?: 'INVALID_EMAIL' | 'ALREADY_SUBSCRIBED' | 'CAPTCHA_FAILED' | 'RATE_LIMITED' | undefined;
|
|
33
|
+
}
|
|
34
|
+
/** Request visitor data from parent */
|
|
35
|
+
export interface RequestVisitorMessage {
|
|
36
|
+
source: 'linkapp';
|
|
37
|
+
type: 'REQUEST_VISITOR';
|
|
38
|
+
payload: {
|
|
39
|
+
requestId: RequestId;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Request IP/geo data from parent */
|
|
43
|
+
export interface RequestIPMessage {
|
|
44
|
+
source: 'linkapp';
|
|
45
|
+
type: 'REQUEST_IP';
|
|
46
|
+
payload: {
|
|
47
|
+
requestId: RequestId;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** Request reCAPTCHA token from parent (domain-bound) */
|
|
51
|
+
export interface RequestCaptchaMessage {
|
|
52
|
+
source: 'linkapp';
|
|
53
|
+
type: 'REQUEST_CAPTCHA';
|
|
54
|
+
payload: {
|
|
55
|
+
requestId: RequestId;
|
|
56
|
+
/** reCAPTCHA action name (e.g., "subscribe") */
|
|
57
|
+
action: string;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** Submit email subscription via parent */
|
|
61
|
+
export interface SubmitSubscribeMessage {
|
|
62
|
+
source: 'linkapp';
|
|
63
|
+
type: 'SUBMIT_SUBSCRIBE';
|
|
64
|
+
payload: {
|
|
65
|
+
requestId: RequestId;
|
|
66
|
+
email: string;
|
|
67
|
+
captchaToken: string;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/** Message to expand LinkApp into modal view (existing) */
|
|
71
|
+
export interface ExpandLinkAppMessage {
|
|
72
|
+
source: 'linkapp';
|
|
73
|
+
type: 'EXPAND_LINK_APP';
|
|
74
|
+
payload: {
|
|
75
|
+
data?: Record<string, unknown> | undefined;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** Union of all messages sent FROM LinkApp iframe TO parent window */
|
|
79
|
+
export type LinkAppToParentMessage = RequestVisitorMessage | RequestIPMessage | RequestCaptchaMessage | SubmitSubscribeMessage | ExpandLinkAppMessage;
|
|
80
|
+
/** Visitor data response */
|
|
81
|
+
export interface VisitorResponseMessage {
|
|
82
|
+
type: 'VISITOR_RESPONSE';
|
|
83
|
+
payload: {
|
|
84
|
+
requestId: RequestId;
|
|
85
|
+
visitor: VisitorData;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/** IP data response */
|
|
89
|
+
export interface IPResponseMessage {
|
|
90
|
+
type: 'IP_RESPONSE';
|
|
91
|
+
payload: {
|
|
92
|
+
requestId: RequestId;
|
|
93
|
+
ip: IPData;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/** reCAPTCHA token response */
|
|
97
|
+
export interface CaptchaResponseMessage {
|
|
98
|
+
type: 'CAPTCHA_RESPONSE';
|
|
99
|
+
payload: {
|
|
100
|
+
requestId: RequestId;
|
|
101
|
+
success: boolean;
|
|
102
|
+
token?: string | undefined;
|
|
103
|
+
error?: string | undefined;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/** Subscribe operation result */
|
|
107
|
+
export interface SubscribeResultMessage {
|
|
108
|
+
type: 'SUBSCRIBE_RESULT';
|
|
109
|
+
payload: {
|
|
110
|
+
requestId: RequestId;
|
|
111
|
+
success: boolean;
|
|
112
|
+
error?: string | undefined;
|
|
113
|
+
errorCode?: 'INVALID_EMAIL' | 'ALREADY_SUBSCRIBED' | 'CAPTCHA_FAILED' | 'RATE_LIMITED' | undefined;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/** Union of all messages sent FROM parent window TO LinkApp iframe */
|
|
117
|
+
export type ParentToLinkAppMessage = VisitorResponseMessage | IPResponseMessage | CaptchaResponseMessage | SubscribeResultMessage;
|
|
118
|
+
/** All possible message types for type guards */
|
|
119
|
+
export type LinkAppMessageType = LinkAppToParentMessage['type'];
|
|
120
|
+
export type ParentMessageType = ParentToLinkAppMessage['type'];
|
|
121
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/sdk/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message types for bidirectional communication between LinkApp iframe and parent window
|
|
3
|
+
*
|
|
4
|
+
* Protocol:
|
|
5
|
+
* - LinkApp sends REQUEST_* messages to parent with a unique requestId
|
|
6
|
+
* - Parent responds with *_RESPONSE messages containing the same requestId
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/sdk/messages.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
package/dist/sdk/send-message.js
CHANGED
|
@@ -13,22 +13,22 @@
|
|
|
13
13
|
* The parent window must implement a message listener to handle these messages.
|
|
14
14
|
*/
|
|
15
15
|
export function sendMessage(type, payload) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
16
|
+
// Check if running in an iframe
|
|
17
|
+
if (typeof window === "undefined") {
|
|
18
|
+
console.warn("[LinkApp SDK] sendMessage called in non-browser environment");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (window === window.parent) {
|
|
22
|
+
console.warn("[LinkApp SDK] sendMessage called outside of iframe context");
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const message = {
|
|
26
|
+
source: "linkapp",
|
|
27
|
+
type: type,
|
|
28
|
+
payload: payload,
|
|
29
|
+
};
|
|
30
|
+
// Send to parent window
|
|
31
|
+
// Using '*' as targetOrigin for now - parent should validate message.source
|
|
32
|
+
window.parent.postMessage(message, "*");
|
|
33
33
|
}
|
|
34
|
-
//# sourceMappingURL=send-message.js.map
|
|
34
|
+
//# sourceMappingURL=send-message.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/sdk/send-message.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAgB;IACxD,gCAAgC;IAChC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,
|
|
1
|
+
{"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/sdk/send-message.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAgB;IACxD,gCAAgC;IAChC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAmB;QAC9B,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,IAA8B;QACpC,OAAO,EAAE,OAAoC;KAC9C,CAAC;IAEF,wBAAwB;IACxB,4EAA4E;IAC5E,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Hook to
|
|
2
|
+
* Hook to expand the LinkApp into an overlay in the parent Linktree window
|
|
3
3
|
*
|
|
4
|
-
* @returns A callback function to trigger the
|
|
4
|
+
* @returns A callback function to trigger the expand with optional data
|
|
5
5
|
*
|
|
6
6
|
* @example
|
|
7
7
|
* ```tsx
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* ```
|
|
18
18
|
*
|
|
19
19
|
* Note: This only works when the LinkApp is embedded in Linktree.
|
|
20
|
-
*
|
|
20
|
+
* In dev mode (not in iframe), logs a warning to console.
|
|
21
21
|
*/
|
|
22
22
|
export declare function useExpandLinkApp(): (data?: Record<string, unknown>) => void;
|
|
23
23
|
//# sourceMappingURL=use-expand-link-app.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-expand-link-app.d.ts","sourceRoot":"","sources":["../../src/sdk/use-expand-link-app.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,YACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"use-expand-link-app.d.ts","sourceRoot":"","sources":["../../src/sdk/use-expand-link-app.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,YACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAOnD"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { messageBus } from './message-bus.js';
|
|
3
3
|
/**
|
|
4
|
-
* Hook to
|
|
4
|
+
* Hook to expand the LinkApp into an overlay in the parent Linktree window
|
|
5
5
|
*
|
|
6
|
-
* @returns A callback function to trigger the
|
|
6
|
+
* @returns A callback function to trigger the expand with optional data
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
9
9
|
* ```tsx
|
|
@@ -19,11 +19,15 @@ import { sendMessage } from './send-message.js';
|
|
|
19
19
|
* ```
|
|
20
20
|
*
|
|
21
21
|
* Note: This only works when the LinkApp is embedded in Linktree.
|
|
22
|
-
*
|
|
22
|
+
* In dev mode (not in iframe), logs a warning to console.
|
|
23
23
|
*/
|
|
24
24
|
export function useExpandLinkApp() {
|
|
25
25
|
return useCallback((data) => {
|
|
26
|
-
|
|
26
|
+
messageBus.send({
|
|
27
|
+
source: 'linkapp',
|
|
28
|
+
type: 'EXPAND_LINK_APP',
|
|
29
|
+
payload: { data },
|
|
30
|
+
});
|
|
27
31
|
}, []);
|
|
28
32
|
}
|
|
29
33
|
//# sourceMappingURL=use-expand-link-app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-expand-link-app.js","sourceRoot":"","sources":["../../src/sdk/use-expand-link-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"use-expand-link-app.js","sourceRoot":"","sources":["../../src/sdk/use-expand-link-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,WAAW,CAAC,CAAC,IAA8B,EAAE,EAAE;QACpD,UAAU,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,EAAE,IAAI,EAAE;SAClB,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC"}
|