unframer 0.6.0

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.
@@ -0,0 +1,494 @@
1
+ import { build, transform } from 'esbuild';
2
+ import dprint from 'dprint-node';
3
+ import pico from 'picocolors';
4
+ import { polyfillNode } from 'esbuild-plugin-polyfill-node';
5
+ import { ControlType, } from '../framer-fixed/dist/framer.js';
6
+ import { fetch as _fetch } from 'native-fetch';
7
+ import fs from 'fs';
8
+ import path from 'path';
9
+ import { execSync } from 'child_process';
10
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
11
+ const prefix = '[unframer]';
12
+ export const logger = {
13
+ log(...args) {
14
+ console.log(prefix, ...args);
15
+ },
16
+ error(...args) {
17
+ console.error([prefix, ...args].map((x) => pico.red(x)).join(' '));
18
+ },
19
+ };
20
+ const fetchWithRetry = retryTwice(_fetch);
21
+ function validateUrl(url) {
22
+ try {
23
+ const u = new URL(url);
24
+ }
25
+ catch (e) {
26
+ throw new Error(`Invalid URL: ${url}`);
27
+ }
28
+ }
29
+ export async function bundle({ cwd: out = '', components = {}, signal = new AbortController().signal, }) {
30
+ out ||= path.resolve(process.cwd(), 'example');
31
+ out = path.resolve(out);
32
+ try {
33
+ fs.rmSync(out, { recursive: true, force: true });
34
+ }
35
+ catch (e) { }
36
+ fs.mkdirSync(path.resolve(out), { recursive: true });
37
+ const result = await build({
38
+ // entryPoints: {
39
+ // index: url,
40
+ // },
41
+ entryPoints: Object.keys(components).map((name) => {
42
+ const url = components[name];
43
+ validateUrl(url);
44
+ return {
45
+ in: `virtual:${name}`,
46
+ out: name,
47
+ };
48
+ }),
49
+ jsx: 'automatic',
50
+ bundle: true,
51
+ platform: 'browser',
52
+ metafile: true,
53
+ format: 'esm',
54
+ minify: false,
55
+ treeShaking: true,
56
+ splitting: true,
57
+ // splitting: true,
58
+ logLevel: 'error',
59
+ pure: ['addPropertyControls'],
60
+ external: whitelist,
61
+ plugins: [
62
+ esbuildPluginBundleDependencies({
63
+ signal,
64
+ }),
65
+ polyfillNode({}),
66
+ {
67
+ name: 'virtual loader',
68
+ setup(build) {
69
+ build.onResolve({ filter: /^virtual:.*/ }, (args) => {
70
+ return {
71
+ path: args.path.replace(/^virtual:/, ''),
72
+ namespace: 'virtual',
73
+ };
74
+ });
75
+ build.onLoad({ filter: /.*/, namespace: 'virtual' }, async (args) => {
76
+ const name = args.path;
77
+ const url = components[name];
78
+ return {
79
+ contents: /** js */ `'use client'
80
+ import Component from '${url}'
81
+ import { WithFramerBreakpoints } from 'unframer/dist/react'
82
+ Component.Responsive = (props) => {
83
+ return <WithFramerBreakpoints Component={Component} {...props} />
84
+ }
85
+ export default Component
86
+ `,
87
+ loader: 'jsx',
88
+ };
89
+ });
90
+ },
91
+ },
92
+ ],
93
+ write: true,
94
+ // outfile: 'dist/example.js',
95
+ outdir: out,
96
+ // outfile: path.resolve(cwd, sourcefile),
97
+ });
98
+ fs.writeFileSync(path.resolve(out, 'meta.json'), JSON.stringify(result.metafile, null, 2), 'utf-8');
99
+ if (signal.aborted) {
100
+ throw new Error('aborted');
101
+ }
102
+ // logger.log('result', result)
103
+ const files = fs.readdirSync(out);
104
+ for (let file of files) {
105
+ if (!file.endsWith('.js')) {
106
+ continue;
107
+ }
108
+ const resultFile = path.resolve(out, file);
109
+ const output = fs.readFileSync(resultFile, 'utf-8');
110
+ logger.log(`formatting`, file);
111
+ const code = dprint.format(resultFile, output, {
112
+ lineWidth: 140,
113
+ quoteStyle: 'alwaysSingle',
114
+ trailingCommas: 'always',
115
+ semiColons: 'always',
116
+ });
117
+ fs.writeFileSync(resultFile, code, 'utf-8');
118
+ const name = file.replace(/\.js$/, '');
119
+ if (components[name]) {
120
+ logger.log(`extracting types for ${name}`);
121
+ const propControls = await extractPropControlsUnsafe(resultFile, name);
122
+ if (!propControls) {
123
+ logger.log(`no property controls found for ${name}`);
124
+ }
125
+ const types = propControlsToType(propControls);
126
+ // name = 'framer-' + name
127
+ // logger.log('name', name)
128
+ fs.writeFileSync(path.resolve(out, `${name}.d.ts`), types);
129
+ }
130
+ }
131
+ // TODO this is a vulnerability, i need to sandbox this somehow
132
+ // https://framer.com/m/Mega-Menu-2wT3.js@W0zNsrcZ2WAwVuzt0BCl
133
+ // let name = u.pathname
134
+ // .split('/')
135
+ // .slice(-1)[0]
136
+ // // https://regex101.com/r/8prywY/1
137
+ // // .replace(/-[\w\d]{4}\.js/i, '')
138
+ // .replace(/\.js/i, '')
139
+ // .replace(/@.*/, '')
140
+ // .toLowerCase()
141
+ }
142
+ function decapitalize(str) {
143
+ return str.charAt(0).toLowerCase() + str.slice(1);
144
+ }
145
+ export async function extractPropControlsSafe(text, name) {
146
+ try {
147
+ const propControlsCode = await parsePropertyControls(text);
148
+ // console.log('propControlsCode', propControlsCode)
149
+ const propControls = await Promise.resolve().then(async () => {
150
+ if (!propControlsCode)
151
+ return;
152
+ const ivm = require('isolated-vm');
153
+ const vm = new ivm.Isolate({ memoryLimit: 128 });
154
+ const context = vm.createContextSync();
155
+ const jail = context.global;
156
+ let result = undefined;
157
+ context.global.setSync('__return', (x) => {
158
+ result = x;
159
+ });
160
+ const mod = vm.compileModuleSync(`${text}`);
161
+ await mod.instantiateSync(context, (spec, mod) => {
162
+ // TODO instantiate framer, react, framer-motion etc
163
+ return;
164
+ });
165
+ await mod.evaluate({});
166
+ return result;
167
+ });
168
+ if (!propControls) {
169
+ logger.error(`no property controls found for component ${name}`);
170
+ return;
171
+ }
172
+ return propControls;
173
+ }
174
+ catch (e) {
175
+ console.error(`Cannot get property controls for ${name}`, e.stack);
176
+ }
177
+ }
178
+ export async function extractPropControlsUnsafe(filename, name) {
179
+ const packageJson = path.resolve(path.dirname(filename), 'package.json');
180
+ try {
181
+ fs.writeFileSync(packageJson, JSON.stringify({ type: 'module' }), 'utf-8');
182
+ const delimiter = '__delimiter__';
183
+ let propCode = `JSON.stringify(x.default?.propertyControls || null, null, 2)`;
184
+ // propCode = `x.default`
185
+ const code = `import(${JSON.stringify(filename)}).then(x => { console.log(${JSON.stringify(delimiter)}); console.log(${propCode})
186
+ })`;
187
+ const res = execSync(`node --input-type=module -e '${code}'`);
188
+ let stdout = res.toString();
189
+ stdout = stdout.split(delimiter)[1];
190
+ // console.log(stdout)
191
+ return safeJsonParse(stdout);
192
+ }
193
+ catch (e) {
194
+ console.error(`Cannot get property controls for ${name}`, e.stack);
195
+ }
196
+ finally {
197
+ fs.rmSync(packageJson);
198
+ }
199
+ }
200
+ function safeJsonParse(text) {
201
+ try {
202
+ return JSON.parse(text);
203
+ }
204
+ catch (e) {
205
+ logger.error('cannot parse json', text.slice(0, 100));
206
+ return null;
207
+ }
208
+ }
209
+ export function propControlsToType(controls) {
210
+ try {
211
+ const types = Object.entries(controls || {})
212
+ .map(([key, value]) => {
213
+ if (!value) {
214
+ return;
215
+ }
216
+ const typescriptType = (value) => {
217
+ value.type;
218
+ switch (value.type) {
219
+ case ControlType.Color:
220
+ return 'string';
221
+ case ControlType.Boolean:
222
+ return 'boolean';
223
+ case ControlType.Number:
224
+ return 'number';
225
+ case ControlType.String:
226
+ return 'string';
227
+ case ControlType.Enum: {
228
+ // @ts-expect-error
229
+ const options = value.optionTitles || value.options;
230
+ return options.map((x) => `'${x}'`).join(' | ');
231
+ }
232
+ case ControlType.File:
233
+ return 'string';
234
+ case ControlType.Image:
235
+ return 'string';
236
+ case ControlType.ComponentInstance:
237
+ return 'React.ReactNode';
238
+ case ControlType.Array:
239
+ // @ts-expect-error
240
+ return `${typescriptType(value.control)}[]`;
241
+ case ControlType.Object:
242
+ // @ts-expect-error
243
+ return `{${Object.entries(value.controls)
244
+ .map(([k, v]) => {
245
+ // @ts-expect-error
246
+ return `${k}: ${typescriptType(v)}`;
247
+ })
248
+ .join(', ')}`;
249
+ case ControlType.Date:
250
+ return 'string | Date';
251
+ case ControlType.Link:
252
+ return 'string';
253
+ case ControlType.ResponsiveImage:
254
+ return `{src: string, srcSet?: string, alt?: string}`;
255
+ case ControlType.FusedNumber:
256
+ return 'number';
257
+ case ControlType.Transition:
258
+ return 'any';
259
+ case ControlType.EventHandler:
260
+ return 'Function';
261
+ }
262
+ };
263
+ let name = decapitalize(value.title || key || '');
264
+ if (!name) {
265
+ return '';
266
+ }
267
+ return ` ${JSON.stringify(name)}?: ${typescriptType(value)}`;
268
+ })
269
+ .filter(Boolean)
270
+ .join('\n');
271
+ const defaultPropsTypes = ` children?: React.ReactNode\n style?: React.CSSProperties\n className?: string\n id?: string\n width?: any\n height?: any\n layoutId?: string\n`;
272
+ let t = '';
273
+ t += 'import * as React from "react"\n';
274
+ t += `export interface Props {\n${defaultPropsTypes}${types}\n}\n`;
275
+ t += `const Component = (props: Props) => any\n`;
276
+ t += `export default Component\n`;
277
+ t += `type Breakpoint = 'Desktop' | 'Tablet' | 'Mobile'\n`;
278
+ t += `Component.Responsive = (props: Omit<Props, 'variant'> & {variants: Record<Breakpoint, Props['variant']>}) => any\n`;
279
+ return t;
280
+ }
281
+ catch (e) {
282
+ logger.error('cannot generate types', e.stack);
283
+ return '';
284
+ }
285
+ }
286
+ export function parsePropertyControls(code) {
287
+ const start = code.indexOf('addPropertyControls(');
288
+ if (start === -1) {
289
+ logger.error('no addPropertyControls call found');
290
+ return null;
291
+ }
292
+ // count all parentheses to find when the addPropertyControls ends
293
+ let openParentheses = 0;
294
+ let closedParentheses = 0;
295
+ let current = start;
296
+ // parses using parentheses
297
+ while (current < code.length) {
298
+ const newP = code.indexOf('(', current);
299
+ const newC = code.indexOf(')', current);
300
+ if (newP === -1 && newC === -1) {
301
+ break;
302
+ }
303
+ if (newP !== -1 && newP < newC) {
304
+ openParentheses++;
305
+ current = newP + 1;
306
+ }
307
+ if (newC !== -1 && newC < newP) {
308
+ closedParentheses++;
309
+ current = newC + 1;
310
+ }
311
+ if (openParentheses === closedParentheses) {
312
+ break;
313
+ }
314
+ }
315
+ const end = current;
316
+ const propControls = code.substring(start, end);
317
+ const realStart = propControls.indexOf(',');
318
+ if (realStart === -1) {
319
+ return '';
320
+ }
321
+ return propControls.slice(realStart + 1, -1);
322
+ }
323
+ const whitelist = [
324
+ 'react',
325
+ 'react-dom',
326
+ 'framer',
327
+ 'unframer',
328
+ 'framer-motion', //
329
+ ];
330
+ export function esbuildPluginBundleDependencies({ signal = undefined, }) {
331
+ const codeCache = new Map();
332
+ let redirectCache = new Map();
333
+ const plugin = {
334
+ name: 'esbuild-plugin',
335
+ setup(build) {
336
+ build.onResolve({ filter: /^https?:\/\// }, (args) => {
337
+ const url = new URL(args.path);
338
+ return {
339
+ path: args.path,
340
+ external: false,
341
+ // sideEffects: false,
342
+ namespace: 'https',
343
+ };
344
+ });
345
+ const resolveDep = (args) => {
346
+ if (signal?.aborted) {
347
+ throw new Error('aborted');
348
+ }
349
+ if (args.path.startsWith('https://')) {
350
+ return {
351
+ path: args.path,
352
+ external: false,
353
+ // sideEffects: false,
354
+ namespace: 'https',
355
+ };
356
+ }
357
+ if (args.path === 'framer') {
358
+ return {
359
+ path: 'unframer/dist/framer',
360
+ external: true,
361
+ };
362
+ }
363
+ if (whitelist.some((x) => x === args.path || args.path.startsWith(x + '/'))) {
364
+ return {
365
+ path: args.path,
366
+ external: true,
367
+ };
368
+ }
369
+ // console.log('resolve', args.path)
370
+ if (args.path.startsWith('.') || args.path.startsWith('/')) {
371
+ const u = new URL(args.path, args.importer).toString();
372
+ // logger.log('resolve', u)
373
+ return {
374
+ path: u,
375
+ namespace: 'https',
376
+ };
377
+ }
378
+ const url = `https://esm.sh/${args.path}`;
379
+ return {
380
+ path: url,
381
+ namespace: 'https',
382
+ external: false,
383
+ };
384
+ };
385
+ // build.onResolve({ filter: /^\w/ }, resolveDep)
386
+ build.onResolve({ filter: /.*/, namespace: 'https' }, resolveDep);
387
+ build.onLoad({ filter: /.*/, namespace: 'https' }, async (args) => {
388
+ if (signal?.aborted) {
389
+ throw new Error('aborted');
390
+ }
391
+ const url = args.path;
392
+ const u = new URL(url);
393
+ const resolved = await resolveRedirect(url, redirectCache);
394
+ if (codeCache.has(url)) {
395
+ const code = await codeCache.get(url);
396
+ return {
397
+ contents: code,
398
+ loader: 'js',
399
+ };
400
+ }
401
+ let loader = 'jsx';
402
+ const promise = Promise.resolve().then(async () => {
403
+ logger.log('fetching', url);
404
+ const res = await fetchWithRetry(resolved, { signal });
405
+ if (!res.ok) {
406
+ throw new Error(`Cannot fetch ${resolved}: ${res.status} ${res.statusText}`);
407
+ }
408
+ // console.log('type', res.headers.get('content-type'))
409
+ if (res.headers
410
+ .get('content-type')
411
+ ?.startsWith('application/json')) {
412
+ loader = 'json';
413
+ return await res.text();
414
+ }
415
+ const text = await res.text();
416
+ const transformed = await transform(text, {
417
+ define: {
418
+ 'import.meta.url': JSON.stringify(resolved),
419
+ },
420
+ minify: false,
421
+ format: 'esm',
422
+ jsx: 'transform',
423
+ logLevel: 'error',
424
+ loader,
425
+ platform: 'browser',
426
+ });
427
+ // console.log('transformed', resolved)
428
+ return transformed.code;
429
+ });
430
+ codeCache.set(url, promise);
431
+ const code = await promise;
432
+ return {
433
+ contents: code,
434
+ loader,
435
+ };
436
+ });
437
+ },
438
+ };
439
+ return plugin;
440
+ }
441
+ export async function resolveRedirect(url, redirectCache) {
442
+ if (!url) {
443
+ return '';
444
+ }
445
+ url = url.toString();
446
+ if (redirectCache.has(url)) {
447
+ return await redirectCache.get(url);
448
+ }
449
+ const p = recursiveResolveRedirect(url);
450
+ redirectCache.set(url, p);
451
+ return await p;
452
+ }
453
+ export async function recursiveResolveRedirect(url) {
454
+ if (!url) {
455
+ return;
456
+ }
457
+ let res = await fetchWithRetry(url, { redirect: 'manual', method: 'HEAD' });
458
+ const loc = res.headers.get('location');
459
+ if (res.status < 400 && res.status >= 300 && loc) {
460
+ // logger.log('redirect', loc)
461
+ return recursiveResolveRedirect(res.headers.get('location') || '');
462
+ }
463
+ return url;
464
+ }
465
+ function addExtension(p) {
466
+ const ext = path.extname(p);
467
+ logger.log('addExtension', ext);
468
+ if (!ext) {
469
+ return p + '.js';
470
+ }
471
+ if (ext.includes('@')) {
472
+ return p + '.js';
473
+ }
474
+ // if (!p.endsWith('.js')) {
475
+ // return p + '.js'
476
+ // }
477
+ return p;
478
+ }
479
+ function retryTwice(fn) {
480
+ return async (...args) => {
481
+ try {
482
+ return await fn(...args);
483
+ }
484
+ catch (e) {
485
+ // ignore abort errors
486
+ if (e.name === 'AbortError') {
487
+ return;
488
+ }
489
+ logger.error('retrying', e.message);
490
+ return await fn(...args);
491
+ }
492
+ };
493
+ }
494
+ //# sourceMappingURL=exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from '../framer-fixed/dist/framer.js';
2
+ //# sourceMappingURL=framer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framer.d.ts","sourceRoot":"","sources":["../src/framer.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA"}
package/dist/framer.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from '../framer-fixed/dist/framer.js';
2
+ //# sourceMappingURL=framer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framer.js","sourceRoot":"","sources":["../src/framer.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { ComponentPropsWithoutRef, ComponentType, ReactNode } from 'react';
2
+ declare const defaultBreakpoints: readonly ["Desktop", "Tablet", "Mobile"];
3
+ type Breakpoint = (typeof defaultBreakpoints)[number];
4
+ export declare function getFontsStyles(Components: any): string;
5
+ export declare function FramerStyles({ Components }: {
6
+ Components?: any[] | undefined;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ export declare function WithFramerBreakpoints<T extends ComponentType<{
9
+ variant?: any;
10
+ className?: string;
11
+ }>>({ Component, variants: breakpointsMap, ...rest }: {
12
+ Component: T;
13
+ variants?: Record<Breakpoint, ComponentPropsWithoutRef<T>['variant']>;
14
+ } & Omit<ComponentPropsWithoutRef<T>, 'variant'>): import("react/jsx-runtime").JSX.Element | ReactNode[];
15
+ export {};
16
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAGA,OAAO,EACH,wBAAwB,EACxB,aAAa,EACb,SAAS,EAGZ,MAAM,OAAO,CAAA;AAWd,QAAA,MAAM,kBAAkB,0CAA2C,CAAA;AAEnE,KAAK,UAAU,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAkDrD,wBAAgB,cAAc,CAAC,UAAU,KAAA,UAsBxC;AA8CD,wBAAgB,YAAY,CAAC,EAAE,UAAwB,EAAE;;CAAA,2CAsBxD;AAED,wBAAgB,qBAAqB,CACjC,CAAC,SAAS,aAAa,CAAC;IAAE,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAChE,EACE,SAAS,EACT,QAAQ,EAAE,cAA2B,EACrC,GAAG,IAAI,EACV,EAAE;IACC,SAAS,EAAE,CAAC,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;CACxE,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,yDAkD/C"}