@linktr.ee/linkapp 0.0.1
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/bin/cli.js +6 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +52 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.d.ts +7 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +141 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/build.d.ts +8 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +84 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/deploy.d.ts +12 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +158 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +7 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +73 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/login.d.ts +6 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +77 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +6 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +25 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/test-url-match-rules.d.ts +7 -0
- package/dist/commands/test-url-match-rules.d.ts.map +1 -0
- package/dist/commands/test-url-match-rules.js +55 -0
- package/dist/commands/test-url-match-rules.js.map +1 -0
- package/dist/lib/auth/config.d.ts +3 -0
- package/dist/lib/auth/config.d.ts.map +1 -0
- package/dist/lib/auth/config.js +5 -0
- package/dist/lib/auth/config.js.map +1 -0
- package/dist/lib/auth/device-flow.d.ts +15 -0
- package/dist/lib/auth/device-flow.d.ts.map +1 -0
- package/dist/lib/auth/device-flow.js +28 -0
- package/dist/lib/auth/device-flow.js.map +1 -0
- package/dist/lib/auth/fetch-config.d.ts +3 -0
- package/dist/lib/auth/fetch-config.d.ts.map +1 -0
- package/dist/lib/auth/fetch-config.js +15 -0
- package/dist/lib/auth/fetch-config.js.map +1 -0
- package/dist/lib/auth/token-storage.d.ts +10 -0
- package/dist/lib/auth/token-storage.d.ts.map +1 -0
- package/dist/lib/auth/token-storage.js +79 -0
- package/dist/lib/auth/token-storage.js.map +1 -0
- package/dist/lib/build/detect-layouts.d.ts +22 -0
- package/dist/lib/build/detect-layouts.d.ts.map +1 -0
- package/dist/lib/build/detect-layouts.js +58 -0
- package/dist/lib/build/detect-layouts.js.map +1 -0
- package/dist/lib/deploy/generate-manifest-files.d.ts +2 -0
- package/dist/lib/deploy/generate-manifest-files.d.ts.map +1 -0
- package/dist/lib/deploy/generate-manifest-files.js +81 -0
- package/dist/lib/deploy/generate-manifest-files.js.map +1 -0
- package/dist/lib/deploy/pack-project.d.ts +7 -0
- package/dist/lib/deploy/pack-project.d.ts.map +1 -0
- package/dist/lib/deploy/pack-project.js +76 -0
- package/dist/lib/deploy/pack-project.js.map +1 -0
- package/dist/lib/deploy/test-url-match-rules.d.ts +6 -0
- package/dist/lib/deploy/test-url-match-rules.d.ts.map +1 -0
- package/dist/lib/deploy/test-url-match-rules.js +21 -0
- package/dist/lib/deploy/test-url-match-rules.js.map +1 -0
- package/dist/lib/deploy/upload.d.ts +12 -0
- package/dist/lib/deploy/upload.d.ts.map +1 -0
- package/dist/lib/deploy/upload.js +90 -0
- package/dist/lib/deploy/upload.js.map +1 -0
- package/dist/lib/deploy/validation.d.ts +9 -0
- package/dist/lib/deploy/validation.d.ts.map +1 -0
- package/dist/lib/deploy/validation.js +160 -0
- package/dist/lib/deploy/validation.js.map +1 -0
- package/dist/lib/utils/create-project.d.ts +8 -0
- package/dist/lib/utils/create-project.d.ts.map +1 -0
- package/dist/lib/utils/create-project.js +48 -0
- package/dist/lib/utils/create-project.js.map +1 -0
- package/dist/lib/utils/init-git.d.ts +2 -0
- package/dist/lib/utils/init-git.d.ts.map +1 -0
- package/dist/lib/utils/init-git.js +34 -0
- package/dist/lib/utils/init-git.js.map +1 -0
- package/dist/lib/utils/install-dependencies.d.ts +2 -0
- package/dist/lib/utils/install-dependencies.d.ts.map +1 -0
- package/dist/lib/utils/install-dependencies.js +20 -0
- package/dist/lib/utils/install-dependencies.js.map +1 -0
- package/dist/lib/utils/setup-runtime.d.ts +6 -0
- package/dist/lib/utils/setup-runtime.d.ts.map +1 -0
- package/dist/lib/utils/setup-runtime.js +103 -0
- package/dist/lib/utils/setup-runtime.js.map +1 -0
- package/dist/lib/vite/config-factory.d.ts +12 -0
- package/dist/lib/vite/config-factory.d.ts.map +1 -0
- package/dist/lib/vite/config-factory.js +55 -0
- package/dist/lib/vite/config-factory.js.map +1 -0
- package/dist/lib/vite/plugins/asset-versioning.d.ts +11 -0
- package/dist/lib/vite/plugins/asset-versioning.d.ts.map +1 -0
- package/dist/lib/vite/plugins/asset-versioning.js +50 -0
- package/dist/lib/vite/plugins/asset-versioning.js.map +1 -0
- package/dist/lib/vite/plugins/route-handler.d.ts +16 -0
- package/dist/lib/vite/plugins/route-handler.d.ts.map +1 -0
- package/dist/lib/vite/plugins/route-handler.js +108 -0
- package/dist/lib/vite/plugins/route-handler.js.map +1 -0
- package/dist/lib/vite/plugins/window-context.d.ts +7 -0
- package/dist/lib/vite/plugins/window-context.d.ts.map +1 -0
- package/dist/lib/vite/plugins/window-context.js +68 -0
- package/dist/lib/vite/plugins/window-context.js.map +1 -0
- package/dist/schema/config.schema.d.ts +229 -0
- package/dist/schema/config.schema.d.ts.map +1 -0
- package/dist/schema/config.schema.js +116 -0
- package/dist/schema/config.schema.js.map +1 -0
- package/dist/schema/index.d.ts +8 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +8 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/types.d.ts +140 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +70 -0
- package/runtime/index.html +12 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
declare const manifestSchema: z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
tagline: z.ZodString;
|
|
5
|
+
description: z.ZodArray<z.ZodString>;
|
|
6
|
+
manifestVersion: z.ZodString;
|
|
7
|
+
version: z.ZodString;
|
|
8
|
+
supportingLinks: z.ZodObject<{
|
|
9
|
+
termsOfService: z.ZodString;
|
|
10
|
+
privacyPolicy: z.ZodString;
|
|
11
|
+
documentation: z.ZodOptional<z.ZodString>;
|
|
12
|
+
website: z.ZodOptional<z.ZodString>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
category: z.ZodEnum<{
|
|
15
|
+
grow: "grow";
|
|
16
|
+
sell: "sell";
|
|
17
|
+
share: "share";
|
|
18
|
+
other: "other";
|
|
19
|
+
}>;
|
|
20
|
+
searchTerms: z.ZodArray<z.ZodString>;
|
|
21
|
+
author: z.ZodObject<{
|
|
22
|
+
name: z.ZodString;
|
|
23
|
+
accounts: z.ZodArray<z.ZodString>;
|
|
24
|
+
contact: z.ZodObject<{
|
|
25
|
+
url: z.ZodString;
|
|
26
|
+
email: z.ZodString;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
declare const settingsElementSchema: z.ZodObject<{
|
|
31
|
+
id: z.ZodString;
|
|
32
|
+
inputType: z.ZodEnum<{
|
|
33
|
+
number: "number";
|
|
34
|
+
text: "text";
|
|
35
|
+
switch: "switch";
|
|
36
|
+
select: "select";
|
|
37
|
+
color: "color";
|
|
38
|
+
textarea: "textarea";
|
|
39
|
+
}>;
|
|
40
|
+
title: z.ZodString;
|
|
41
|
+
description: z.ZodOptional<z.ZodString>;
|
|
42
|
+
defaultValue: z.ZodOptional<z.ZodUnknown>;
|
|
43
|
+
label: z.ZodOptional<z.ZodString>;
|
|
44
|
+
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
45
|
+
label: z.ZodString;
|
|
46
|
+
value: z.ZodUnknown;
|
|
47
|
+
}, z.core.$strip>>>;
|
|
48
|
+
}, z.core.$strip>;
|
|
49
|
+
declare const settingsSchema: z.ZodObject<{
|
|
50
|
+
title: z.ZodString;
|
|
51
|
+
overview: z.ZodObject<{
|
|
52
|
+
title: z.ZodString;
|
|
53
|
+
description: z.ZodString;
|
|
54
|
+
supportLink: z.ZodString;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
elements: z.ZodArray<z.ZodObject<{
|
|
57
|
+
id: z.ZodString;
|
|
58
|
+
inputType: z.ZodEnum<{
|
|
59
|
+
number: "number";
|
|
60
|
+
text: "text";
|
|
61
|
+
switch: "switch";
|
|
62
|
+
select: "select";
|
|
63
|
+
color: "color";
|
|
64
|
+
textarea: "textarea";
|
|
65
|
+
}>;
|
|
66
|
+
title: z.ZodString;
|
|
67
|
+
description: z.ZodOptional<z.ZodString>;
|
|
68
|
+
defaultValue: z.ZodOptional<z.ZodUnknown>;
|
|
69
|
+
label: z.ZodOptional<z.ZodString>;
|
|
70
|
+
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
71
|
+
label: z.ZodString;
|
|
72
|
+
value: z.ZodUnknown;
|
|
73
|
+
}, z.core.$strip>>>;
|
|
74
|
+
}, z.core.$strip>>;
|
|
75
|
+
}, z.core.$strip>;
|
|
76
|
+
declare const urlMatchRulesSchema: z.ZodObject<{
|
|
77
|
+
hostnames: z.ZodArray<z.ZodString>;
|
|
78
|
+
patterns: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
79
|
+
pathname: z.ZodString;
|
|
80
|
+
}, z.core.$strip>>>;
|
|
81
|
+
notPatterns: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
82
|
+
pathname: z.ZodString;
|
|
83
|
+
}, z.core.$strip>>>;
|
|
84
|
+
}, z.core.$strip>;
|
|
85
|
+
export declare const linkAppConfigSchema: z.ZodObject<{
|
|
86
|
+
id: z.ZodString;
|
|
87
|
+
manifest: z.ZodObject<{
|
|
88
|
+
name: z.ZodString;
|
|
89
|
+
tagline: z.ZodString;
|
|
90
|
+
description: z.ZodArray<z.ZodString>;
|
|
91
|
+
manifestVersion: z.ZodString;
|
|
92
|
+
version: z.ZodString;
|
|
93
|
+
supportingLinks: z.ZodObject<{
|
|
94
|
+
termsOfService: z.ZodString;
|
|
95
|
+
privacyPolicy: z.ZodString;
|
|
96
|
+
documentation: z.ZodOptional<z.ZodString>;
|
|
97
|
+
website: z.ZodOptional<z.ZodString>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
category: z.ZodEnum<{
|
|
100
|
+
grow: "grow";
|
|
101
|
+
sell: "sell";
|
|
102
|
+
share: "share";
|
|
103
|
+
other: "other";
|
|
104
|
+
}>;
|
|
105
|
+
searchTerms: z.ZodArray<z.ZodString>;
|
|
106
|
+
author: z.ZodObject<{
|
|
107
|
+
name: z.ZodString;
|
|
108
|
+
accounts: z.ZodArray<z.ZodString>;
|
|
109
|
+
contact: z.ZodObject<{
|
|
110
|
+
url: z.ZodString;
|
|
111
|
+
email: z.ZodString;
|
|
112
|
+
}, z.core.$strip>;
|
|
113
|
+
}, z.core.$strip>;
|
|
114
|
+
}, z.core.$strip>;
|
|
115
|
+
settings: z.ZodObject<{
|
|
116
|
+
title: z.ZodString;
|
|
117
|
+
overview: z.ZodObject<{
|
|
118
|
+
title: z.ZodString;
|
|
119
|
+
description: z.ZodString;
|
|
120
|
+
supportLink: z.ZodString;
|
|
121
|
+
}, z.core.$strip>;
|
|
122
|
+
elements: z.ZodArray<z.ZodObject<{
|
|
123
|
+
id: z.ZodString;
|
|
124
|
+
inputType: z.ZodEnum<{
|
|
125
|
+
number: "number";
|
|
126
|
+
text: "text";
|
|
127
|
+
switch: "switch";
|
|
128
|
+
select: "select";
|
|
129
|
+
color: "color";
|
|
130
|
+
textarea: "textarea";
|
|
131
|
+
}>;
|
|
132
|
+
title: z.ZodString;
|
|
133
|
+
description: z.ZodOptional<z.ZodString>;
|
|
134
|
+
defaultValue: z.ZodOptional<z.ZodUnknown>;
|
|
135
|
+
label: z.ZodOptional<z.ZodString>;
|
|
136
|
+
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
137
|
+
label: z.ZodString;
|
|
138
|
+
value: z.ZodUnknown;
|
|
139
|
+
}, z.core.$strip>>>;
|
|
140
|
+
}, z.core.$strip>>;
|
|
141
|
+
}, z.core.$strip>;
|
|
142
|
+
urlMatchRules: z.ZodOptional<z.ZodObject<{
|
|
143
|
+
hostnames: z.ZodArray<z.ZodString>;
|
|
144
|
+
patterns: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
145
|
+
pathname: z.ZodString;
|
|
146
|
+
}, z.core.$strip>>>;
|
|
147
|
+
notPatterns: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
148
|
+
pathname: z.ZodString;
|
|
149
|
+
}, z.core.$strip>>>;
|
|
150
|
+
}, z.core.$strip>>;
|
|
151
|
+
}, z.core.$strip>;
|
|
152
|
+
export type LinkAppConfig = z.infer<typeof linkAppConfigSchema>;
|
|
153
|
+
export type LinkAppManifest = z.infer<typeof manifestSchema>;
|
|
154
|
+
export type LinkAppSettings = z.infer<typeof settingsSchema>;
|
|
155
|
+
export type UrlMatchRules = z.infer<typeof urlMatchRulesSchema>;
|
|
156
|
+
export type SettingsElement = z.infer<typeof settingsElementSchema>;
|
|
157
|
+
/**
|
|
158
|
+
* Validates a LinkApp configuration object
|
|
159
|
+
* @param config - The configuration object to validate
|
|
160
|
+
* @returns Validated and typed configuration
|
|
161
|
+
* @throws ZodError with detailed validation errors
|
|
162
|
+
*/
|
|
163
|
+
export declare function validateLinkAppConfig(config: unknown): LinkAppConfig;
|
|
164
|
+
/**
|
|
165
|
+
* Safely validates a LinkApp configuration object
|
|
166
|
+
* @param config - The configuration object to validate
|
|
167
|
+
* @returns Success object with data or error object with issues
|
|
168
|
+
*/
|
|
169
|
+
export declare function safeLyValidateLinkAppConfig(config: unknown): z.ZodSafeParseResult<{
|
|
170
|
+
id: string;
|
|
171
|
+
manifest: {
|
|
172
|
+
name: string;
|
|
173
|
+
tagline: string;
|
|
174
|
+
description: string[];
|
|
175
|
+
manifestVersion: string;
|
|
176
|
+
version: string;
|
|
177
|
+
supportingLinks: {
|
|
178
|
+
termsOfService: string;
|
|
179
|
+
privacyPolicy: string;
|
|
180
|
+
documentation?: string | undefined;
|
|
181
|
+
website?: string | undefined;
|
|
182
|
+
};
|
|
183
|
+
category: "grow" | "sell" | "share" | "other";
|
|
184
|
+
searchTerms: string[];
|
|
185
|
+
author: {
|
|
186
|
+
name: string;
|
|
187
|
+
accounts: string[];
|
|
188
|
+
contact: {
|
|
189
|
+
url: string;
|
|
190
|
+
email: string;
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
settings: {
|
|
195
|
+
title: string;
|
|
196
|
+
overview: {
|
|
197
|
+
title: string;
|
|
198
|
+
description: string;
|
|
199
|
+
supportLink: string;
|
|
200
|
+
};
|
|
201
|
+
elements: {
|
|
202
|
+
id: string;
|
|
203
|
+
inputType: "number" | "text" | "switch" | "select" | "color" | "textarea";
|
|
204
|
+
title: string;
|
|
205
|
+
description?: string | undefined;
|
|
206
|
+
defaultValue?: unknown;
|
|
207
|
+
label?: string | undefined;
|
|
208
|
+
options?: {
|
|
209
|
+
label: string;
|
|
210
|
+
value: unknown;
|
|
211
|
+
}[] | undefined;
|
|
212
|
+
}[];
|
|
213
|
+
};
|
|
214
|
+
urlMatchRules?: {
|
|
215
|
+
hostnames: string[];
|
|
216
|
+
patterns?: {
|
|
217
|
+
pathname: string;
|
|
218
|
+
}[] | undefined;
|
|
219
|
+
notPatterns?: {
|
|
220
|
+
pathname: string;
|
|
221
|
+
}[] | undefined;
|
|
222
|
+
} | undefined;
|
|
223
|
+
}>;
|
|
224
|
+
/**
|
|
225
|
+
* Type guard to check if a value is a valid LinkAppConfig
|
|
226
|
+
*/
|
|
227
|
+
export declare function isLinkAppConfig(value: unknown): value is LinkAppConfig;
|
|
228
|
+
export {};
|
|
229
|
+
//# sourceMappingURL=config.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/schema/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA8BvB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBlB,CAAA;AAGF,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;iBAQzB,CAAA;AAGF,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQlB,CAAA;AAGF,QAAA,MAAM,mBAAmB;;;;;;;;iBAgBvB,CAAA;AAGF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS9B,CAAA;AAGF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for LinkApp configuration
|
|
4
|
+
* Based on manifest.schema.json with TypeScript-friendly camelCase naming
|
|
5
|
+
*/
|
|
6
|
+
const urlSchema = z.string().url();
|
|
7
|
+
const emailSchema = z.string().email();
|
|
8
|
+
const versionSchema = z.string().regex(/^\d+\.\d+\.\d+$/, 'Must be semver format (e.g., 1.0.0)');
|
|
9
|
+
// Supporting Links Schema
|
|
10
|
+
const supportingLinksSchema = z.object({
|
|
11
|
+
termsOfService: urlSchema.describe('The URL of the terms of service'),
|
|
12
|
+
privacyPolicy: urlSchema.describe('The URL of the privacy policy'),
|
|
13
|
+
documentation: urlSchema.optional().describe('The URL of the documentation'),
|
|
14
|
+
website: urlSchema.optional().describe('The URL of the website'),
|
|
15
|
+
});
|
|
16
|
+
// Author Schema
|
|
17
|
+
const authorSchema = z.object({
|
|
18
|
+
name: z.string().min(1, 'Author name is required'),
|
|
19
|
+
accounts: z.array(z.string()).min(1, 'At least one account is required'),
|
|
20
|
+
contact: z.object({
|
|
21
|
+
url: urlSchema,
|
|
22
|
+
email: emailSchema,
|
|
23
|
+
}),
|
|
24
|
+
});
|
|
25
|
+
// Manifest Schema
|
|
26
|
+
const manifestSchema = z.object({
|
|
27
|
+
name: z
|
|
28
|
+
.string()
|
|
29
|
+
.min(3, 'Name must be at least 3 characters')
|
|
30
|
+
.max(50, 'Name must be at most 50 characters')
|
|
31
|
+
.describe('The name of the link type'),
|
|
32
|
+
tagline: z
|
|
33
|
+
.string()
|
|
34
|
+
.min(3, 'Tagline must be at least 3 characters')
|
|
35
|
+
.max(200, 'Tagline must be at most 200 characters')
|
|
36
|
+
.describe('A short tagline for the link type'),
|
|
37
|
+
description: z
|
|
38
|
+
.array(z.string())
|
|
39
|
+
.min(1, 'At least one description paragraph is required')
|
|
40
|
+
.describe('Array of description paragraphs'),
|
|
41
|
+
manifestVersion: versionSchema.describe('The manifest schema version'),
|
|
42
|
+
version: versionSchema.describe('The version of the linkapp'),
|
|
43
|
+
supportingLinks: supportingLinksSchema,
|
|
44
|
+
category: z.enum(['grow', 'sell', 'share', 'other']).describe('The category of the link type'),
|
|
45
|
+
searchTerms: z.array(z.string()).min(1, 'At least one search term is required'),
|
|
46
|
+
author: authorSchema,
|
|
47
|
+
});
|
|
48
|
+
// Settings Element Schema
|
|
49
|
+
const settingsElementSchema = z.object({
|
|
50
|
+
id: z.string().min(1, 'Element ID is required'),
|
|
51
|
+
inputType: z.enum(['text', 'number', 'switch', 'select', 'color', 'textarea']),
|
|
52
|
+
title: z.string().min(1, 'Element title is required'),
|
|
53
|
+
description: z.string().optional(),
|
|
54
|
+
defaultValue: z.unknown().optional(),
|
|
55
|
+
label: z.string().optional(),
|
|
56
|
+
options: z.array(z.object({ label: z.string(), value: z.unknown() })).optional(),
|
|
57
|
+
});
|
|
58
|
+
// Settings Schema
|
|
59
|
+
const settingsSchema = z.object({
|
|
60
|
+
title: z.string().min(1, 'Settings title is required'),
|
|
61
|
+
overview: z.object({
|
|
62
|
+
title: z.string().min(1, 'Overview title is required'),
|
|
63
|
+
description: z.string().min(1, 'Overview description is required'),
|
|
64
|
+
supportLink: urlSchema,
|
|
65
|
+
}),
|
|
66
|
+
elements: z.array(settingsElementSchema).min(0),
|
|
67
|
+
});
|
|
68
|
+
// URL Match Rules Schema
|
|
69
|
+
const urlMatchRulesSchema = z.object({
|
|
70
|
+
hostnames: z.array(z.string()).min(1, 'At least one hostname is required'),
|
|
71
|
+
patterns: z
|
|
72
|
+
.array(z.object({
|
|
73
|
+
pathname: z.string().min(1, 'Pathname pattern is required'),
|
|
74
|
+
}))
|
|
75
|
+
.optional(),
|
|
76
|
+
notPatterns: z
|
|
77
|
+
.array(z.object({
|
|
78
|
+
pathname: z.string().min(1, 'Pathname pattern is required'),
|
|
79
|
+
}))
|
|
80
|
+
.optional(),
|
|
81
|
+
});
|
|
82
|
+
// Main LinkApp Config Schema
|
|
83
|
+
export const linkAppConfigSchema = z.object({
|
|
84
|
+
id: z
|
|
85
|
+
.string()
|
|
86
|
+
.min(1, 'LinkApp ID is required')
|
|
87
|
+
.regex(/^[a-z0-9-]+$/, 'LinkApp ID must contain only lowercase letters, numbers, and hyphens')
|
|
88
|
+
.describe('Unique identifier for the linkapp'),
|
|
89
|
+
manifest: manifestSchema,
|
|
90
|
+
settings: settingsSchema,
|
|
91
|
+
urlMatchRules: urlMatchRulesSchema.optional(),
|
|
92
|
+
});
|
|
93
|
+
/**
|
|
94
|
+
* Validates a LinkApp configuration object
|
|
95
|
+
* @param config - The configuration object to validate
|
|
96
|
+
* @returns Validated and typed configuration
|
|
97
|
+
* @throws ZodError with detailed validation errors
|
|
98
|
+
*/
|
|
99
|
+
export function validateLinkAppConfig(config) {
|
|
100
|
+
return linkAppConfigSchema.parse(config);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Safely validates a LinkApp configuration object
|
|
104
|
+
* @param config - The configuration object to validate
|
|
105
|
+
* @returns Success object with data or error object with issues
|
|
106
|
+
*/
|
|
107
|
+
export function safeLyValidateLinkAppConfig(config) {
|
|
108
|
+
return linkAppConfigSchema.safeParse(config);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Type guard to check if a value is a valid LinkAppConfig
|
|
112
|
+
*/
|
|
113
|
+
export function isLinkAppConfig(value) {
|
|
114
|
+
return linkAppConfigSchema.safeParse(value).success;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=config.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../src/schema/config.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LinkApp Configuration Schema
|
|
3
|
+
*
|
|
4
|
+
* This module provides schema validation for LinkApp configurations.
|
|
5
|
+
* Inspired by Next.js and Tailwind CSS configuration validation.
|
|
6
|
+
*/
|
|
7
|
+
export { linkAppConfigSchema, validateLinkAppConfig, safeLyValidateLinkAppConfig, isLinkAppConfig, type LinkAppConfig, type LinkAppManifest, type LinkAppSettings, type UrlMatchRules, type SettingsElement, } from './config.schema.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC3B,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LinkApp Configuration Schema
|
|
3
|
+
*
|
|
4
|
+
* This module provides schema validation for LinkApp configurations.
|
|
5
|
+
* Inspired by Next.js and Tailwind CSS configuration validation.
|
|
6
|
+
*/
|
|
7
|
+
export { linkAppConfigSchema, validateLinkAppConfig, safeLyValidateLinkAppConfig, isLinkAppConfig, } from './config.schema.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC3B,eAAe,GAMhB,MAAM,oBAAoB,CAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
export type Environment = 'production' | 'qa';
|
|
2
|
+
/**
|
|
3
|
+
* Theme configuration from Linktree profile
|
|
4
|
+
*/
|
|
5
|
+
export interface Theme {
|
|
6
|
+
textColor: string;
|
|
7
|
+
backgroundColor: string;
|
|
8
|
+
borderRadius: string;
|
|
9
|
+
borderColor: string;
|
|
10
|
+
isOutlineStyle: boolean;
|
|
11
|
+
contrastColor: string;
|
|
12
|
+
textHoverColor: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Viewport dimensions
|
|
16
|
+
*/
|
|
17
|
+
export interface Viewport {
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Geographic position
|
|
23
|
+
*/
|
|
24
|
+
export interface Position {
|
|
25
|
+
latitude: number;
|
|
26
|
+
longitude: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Core Linktree context available to all LinkApps
|
|
30
|
+
*/
|
|
31
|
+
export interface LinktreeContext {
|
|
32
|
+
linkUrl: string;
|
|
33
|
+
layout?: 'stack' | 'grid' | 'carousel' | 'featured';
|
|
34
|
+
theme: Theme;
|
|
35
|
+
locale: string;
|
|
36
|
+
currency: string;
|
|
37
|
+
username: string;
|
|
38
|
+
viewport: Viewport;
|
|
39
|
+
position?: Position;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Props available to layout components
|
|
43
|
+
* Extend with custom settings from your config
|
|
44
|
+
*/
|
|
45
|
+
export type AppProps<TSettings = Record<string, unknown>> = LinktreeContext & TSettings;
|
|
46
|
+
export type LinktreeTheme = Theme;
|
|
47
|
+
export interface LinkAppManifest {
|
|
48
|
+
name: string;
|
|
49
|
+
tagline: string;
|
|
50
|
+
description: string[];
|
|
51
|
+
manifestVersion: string;
|
|
52
|
+
version: string;
|
|
53
|
+
supportingLinks: {
|
|
54
|
+
termsOfService: string;
|
|
55
|
+
privacyPolicy: string;
|
|
56
|
+
documentation?: string;
|
|
57
|
+
website?: string;
|
|
58
|
+
};
|
|
59
|
+
category: 'grow' | 'sell' | 'share' | 'learn';
|
|
60
|
+
searchTerms: string[];
|
|
61
|
+
author: {
|
|
62
|
+
name: string;
|
|
63
|
+
accounts: string[];
|
|
64
|
+
contact: {
|
|
65
|
+
url: string;
|
|
66
|
+
email: string;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export interface LinkAppSettings {
|
|
71
|
+
title: string;
|
|
72
|
+
overview: {
|
|
73
|
+
title: string;
|
|
74
|
+
description: string;
|
|
75
|
+
supportLink: string;
|
|
76
|
+
};
|
|
77
|
+
elements: SettingsElement[];
|
|
78
|
+
supportsFeaturedLayout: boolean;
|
|
79
|
+
}
|
|
80
|
+
export interface SettingsElement {
|
|
81
|
+
id: string;
|
|
82
|
+
inputType: string;
|
|
83
|
+
title: string;
|
|
84
|
+
description?: string;
|
|
85
|
+
defaultValue?: unknown;
|
|
86
|
+
label?: string;
|
|
87
|
+
}
|
|
88
|
+
export interface UrlMatchRules {
|
|
89
|
+
hostnames: string[];
|
|
90
|
+
patterns: Array<{
|
|
91
|
+
pathname: string;
|
|
92
|
+
}>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Preview props for development mode
|
|
96
|
+
*/
|
|
97
|
+
export interface PreviewProps extends LinktreeContext {
|
|
98
|
+
[key: string]: unknown;
|
|
99
|
+
}
|
|
100
|
+
export interface LinkAppConfig {
|
|
101
|
+
id: string;
|
|
102
|
+
manifest: LinkAppManifest;
|
|
103
|
+
settings: LinkAppSettings;
|
|
104
|
+
urlMatchRules?: UrlMatchRules;
|
|
105
|
+
previewProps?: PreviewProps;
|
|
106
|
+
}
|
|
107
|
+
export interface AppConfig {
|
|
108
|
+
auth: {
|
|
109
|
+
domain: string;
|
|
110
|
+
client_id: string;
|
|
111
|
+
audience: string;
|
|
112
|
+
};
|
|
113
|
+
link_types_url: string;
|
|
114
|
+
logout_redirect_url: string;
|
|
115
|
+
}
|
|
116
|
+
export interface DeployResponse {
|
|
117
|
+
linkType: {
|
|
118
|
+
linkTypeId: string;
|
|
119
|
+
status: string;
|
|
120
|
+
updatedTimestamp: number;
|
|
121
|
+
};
|
|
122
|
+
build?: {
|
|
123
|
+
id: string;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
export interface Template {
|
|
127
|
+
name: string;
|
|
128
|
+
description: string;
|
|
129
|
+
path: string;
|
|
130
|
+
}
|
|
131
|
+
export interface ComponentRegistryItem {
|
|
132
|
+
name: string;
|
|
133
|
+
dependencies: string[];
|
|
134
|
+
files: string[];
|
|
135
|
+
type: string;
|
|
136
|
+
}
|
|
137
|
+
export interface ComponentRegistry {
|
|
138
|
+
[key: string]: ComponentRegistryItem;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@linktr.ee/linkapp",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Development, build, and deployment tooling for LinkApps",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"linkapp": "./bin/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"bin",
|
|
12
|
+
"runtime",
|
|
13
|
+
"linkapp-preview"
|
|
14
|
+
],
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/types.d.ts",
|
|
18
|
+
"import": "./dist/cli.js"
|
|
19
|
+
},
|
|
20
|
+
"./types": {
|
|
21
|
+
"types": "./dist/types.d.ts"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc",
|
|
26
|
+
"dev": "tsc --watch",
|
|
27
|
+
"lint": "biome check .",
|
|
28
|
+
"format": "biome format --write .",
|
|
29
|
+
"clean": "rm -rf dist",
|
|
30
|
+
"test": "vitest run",
|
|
31
|
+
"test:watch": "vitest"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@clack/prompts": "^0.8.2",
|
|
35
|
+
"@ngrok/ngrok": "^1.4.1",
|
|
36
|
+
"@tailwindcss/vite": "^4.1.14",
|
|
37
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
38
|
+
"archiver": "^7.0.1",
|
|
39
|
+
"axios": "^1.7.9",
|
|
40
|
+
"cac": "^6.7.14",
|
|
41
|
+
"connect": "^3.7.0",
|
|
42
|
+
"form-data": "^4.0.1",
|
|
43
|
+
"fs-extra": "^11.2.0",
|
|
44
|
+
"jiti": "^2.6.1",
|
|
45
|
+
"jsonwebtoken": "^9.0.2",
|
|
46
|
+
"netrc-parser": "^3.1.6",
|
|
47
|
+
"open": "^10.1.0",
|
|
48
|
+
"openid-client": "^5.7.1",
|
|
49
|
+
"picocolors": "^1.1.1",
|
|
50
|
+
"vite": "^6.0.3",
|
|
51
|
+
"zod": "^4.1.12"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@biomejs/biome": "^1.9.4",
|
|
55
|
+
"@types/archiver": "^6.0.2",
|
|
56
|
+
"@types/connect": "^3.4.38",
|
|
57
|
+
"@types/fs-extra": "^11.0.4",
|
|
58
|
+
"@types/jsonwebtoken": "^9.0.7",
|
|
59
|
+
"@types/node": "^20.17.6",
|
|
60
|
+
"typescript": "^5.7.2",
|
|
61
|
+
"vitest": "^2.1.9"
|
|
62
|
+
},
|
|
63
|
+
"engines": {
|
|
64
|
+
"node": ">=18.0.0",
|
|
65
|
+
"npm": ">=10.0.0"
|
|
66
|
+
},
|
|
67
|
+
"publishConfig": {
|
|
68
|
+
"access": "public"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>LinkApp</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<div id="root"></div>
|
|
10
|
+
<script type="module" src="/.linkapp/main.tsx"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|