summaryrefslogtreecommitdiff
path: root/@linaria/packages/babel/src/utils/isSerializable.ts
diff options
context:
space:
mode:
Diffstat (limited to '@linaria/packages/babel/src/utils/isSerializable.ts')
-rw-r--r--@linaria/packages/babel/src/utils/isSerializable.ts11
1 files changed, 11 insertions, 0 deletions
diff --git a/@linaria/packages/babel/src/utils/isSerializable.ts b/@linaria/packages/babel/src/utils/isSerializable.ts
new file mode 100644
index 0000000..1f65d58
--- /dev/null
+++ b/@linaria/packages/babel/src/utils/isSerializable.ts
@@ -0,0 +1,11 @@
+import type { Serializable } from '../types';
+import isBoxedPrimitive from './isBoxedPrimitive';
+
+export default function isSerializable(o: any): o is Serializable {
+ return (
+ (Array.isArray(o) && o.every(isSerializable)) ||
+ (typeof o === 'object' &&
+ o !== null &&
+ (o.constructor.name === 'Object' || isBoxedPrimitive(o)))
+ );
+}