@highstate/designer 0.7.2 → 0.7.3

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 (131) hide show
  1. package/package.json +14 -7
  2. package/.output/nitro.json +0 -15
  3. package/.output/public/_nuxt/1_b4y8eQ.js +0 -1
  4. package/.output/public/_nuxt/BjOhMR1f.js +0 -242
  5. package/.output/public/_nuxt/CPAAHz3G.js +0 -1
  6. package/.output/public/_nuxt/CmGpyJTe.js +0 -1
  7. package/.output/public/_nuxt/builds/latest.json +0 -1
  8. package/.output/public/_nuxt/builds/meta/f777d22c-e958-4e7c-865d-11bb8a560858.json +0 -1
  9. package/.output/public/_nuxt/entry.Vs8IncyG.css +0 -5
  10. package/.output/public/_nuxt/error-404.BJkSn6RI.css +0 -1
  11. package/.output/public/_nuxt/error-500.TOCKLquH.css +0 -1
  12. package/.output/public/_nuxt/materialdesignicons-webfont.B6OSyW2I.woff2 +0 -0
  13. package/.output/public/_nuxt/materialdesignicons-webfont.BpRar1d5.ttf +0 -0
  14. package/.output/public/_nuxt/materialdesignicons-webfont.Bvl3VxMs.woff +0 -0
  15. package/.output/public/_nuxt/materialdesignicons-webfont.TEmAk13K.eot +0 -0
  16. package/.output/public/favicon.ico +0 -0
  17. package/.output/public/libavoid.wasm +0 -0
  18. package/.output/public/robots.txt +0 -1
  19. package/.output/server/index.mjs +0 -11426
  20. package/.output/server/index.mjs.map +0 -1
  21. package/.output/server/node_modules/@babel/parser/lib/index.js +0 -14246
  22. package/.output/server/node_modules/@babel/parser/package.json +0 -50
  23. package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/fetchRequestHandler.mjs +0 -74
  24. package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/index.mjs +0 -1
  25. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/incomingMessageToRequest.mjs +0 -119
  26. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/index.mjs +0 -2
  27. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +0 -92
  28. package/.output/server/node_modules/@trpc/server/dist/adapters/node-http/writeResponse.mjs +0 -79
  29. package/.output/server/node_modules/@trpc/server/dist/index.mjs +0 -12
  30. package/.output/server/node_modules/@trpc/server/dist/observable/observable.mjs +0 -175
  31. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/createProxy.mjs +0 -73
  32. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/TRPCError.mjs +0 -79
  33. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/formatter.mjs +0 -5
  34. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/getErrorShape.mjs +0 -29
  35. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/abortError.mjs +0 -10
  36. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/contentType.mjs +0 -229
  37. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +0 -76
  38. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/parseConnectionParams.mjs +0 -39
  39. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/http/resolveResponse.mjs +0 -570
  40. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/initTRPC.mjs +0 -80
  41. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/middleware.mjs +0 -90
  42. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/parser.mjs +0 -52
  43. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/procedureBuilder.mjs +0 -198
  44. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rootConfig.mjs +0 -6
  45. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/router.mjs +0 -278
  46. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/rpc/codes.mjs +0 -54
  47. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/jsonl.mjs +0 -603
  48. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/sse.mjs +0 -369
  49. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/tracked.mjs +0 -25
  50. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +0 -165
  51. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +0 -15
  52. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +0 -43
  53. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/mergeAsyncIterables.mjs +0 -239
  54. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +0 -23
  55. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +0 -23
  56. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +0 -127
  57. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/transformer.mjs +0 -101
  58. package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import/utils.mjs +0 -83
  59. package/.output/server/node_modules/@trpc/server/dist/vendor/standard-schema-v1/error.mjs +0 -26
  60. package/.output/server/node_modules/@trpc/server/dist/vendor/unpromise/unpromise.mjs +0 -289
  61. package/.output/server/node_modules/@trpc/server/package.json +0 -156
  62. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +0 -6690
  63. package/.output/server/node_modules/@vue/compiler-core/package.json +0 -58
  64. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +0 -686
  65. package/.output/server/node_modules/@vue/compiler-dom/package.json +0 -57
  66. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +0 -1404
  67. package/.output/server/node_modules/@vue/compiler-ssr/package.json +0 -34
  68. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +0 -1789
  69. package/.output/server/node_modules/@vue/reactivity/package.json +0 -55
  70. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +0 -6654
  71. package/.output/server/node_modules/@vue/runtime-core/package.json +0 -52
  72. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +0 -1669
  73. package/.output/server/node_modules/@vue/runtime-dom/package.json +0 -60
  74. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +0 -857
  75. package/.output/server/node_modules/@vue/server-renderer/package.json +0 -55
  76. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +0 -594
  77. package/.output/server/node_modules/@vue/shared/package.json +0 -47
  78. package/.output/server/node_modules/devalue/index.js +0 -3
  79. package/.output/server/node_modules/devalue/package.json +0 -34
  80. package/.output/server/node_modules/devalue/src/base64.js +0 -110
  81. package/.output/server/node_modules/devalue/src/constants.js +0 -6
  82. package/.output/server/node_modules/devalue/src/parse.js +0 -160
  83. package/.output/server/node_modules/devalue/src/stringify.js +0 -232
  84. package/.output/server/node_modules/devalue/src/uneval.js +0 -351
  85. package/.output/server/node_modules/devalue/src/utils.js +0 -113
  86. package/.output/server/node_modules/entities/lib/decode.js +0 -536
  87. package/.output/server/node_modules/entities/lib/decode_codepoint.js +0 -76
  88. package/.output/server/node_modules/entities/lib/generated/decode-data-html.js +0 -9
  89. package/.output/server/node_modules/entities/lib/generated/decode-data-xml.js +0 -9
  90. package/.output/server/node_modules/entities/package.json +0 -90
  91. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +0 -344
  92. package/.output/server/node_modules/estree-walker/package.json +0 -37
  93. package/.output/server/node_modules/hookable/dist/index.mjs +0 -290
  94. package/.output/server/node_modules/hookable/package.json +0 -49
  95. package/.output/server/node_modules/source-map-js/lib/array-set.js +0 -121
  96. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +0 -140
  97. package/.output/server/node_modules/source-map-js/lib/base64.js +0 -67
  98. package/.output/server/node_modules/source-map-js/lib/binary-search.js +0 -111
  99. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +0 -79
  100. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +0 -132
  101. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +0 -1188
  102. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +0 -444
  103. package/.output/server/node_modules/source-map-js/lib/source-node.js +0 -413
  104. package/.output/server/node_modules/source-map-js/lib/util.js +0 -594
  105. package/.output/server/node_modules/source-map-js/package.json +0 -71
  106. package/.output/server/node_modules/source-map-js/source-map.js +0 -8
  107. package/.output/server/node_modules/ufo/dist/index.mjs +0 -630
  108. package/.output/server/node_modules/ufo/package.json +0 -47
  109. package/.output/server/node_modules/unhead/dist/plugins.mjs +0 -94
  110. package/.output/server/node_modules/unhead/dist/server.mjs +0 -220
  111. package/.output/server/node_modules/unhead/dist/shared/unhead.C13swrCa.mjs +0 -48
  112. package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +0 -148
  113. package/.output/server/node_modules/unhead/dist/shared/unhead.Cp0iF6eN.mjs +0 -177
  114. package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +0 -196
  115. package/.output/server/node_modules/unhead/dist/shared/unhead.DZbvapt-.mjs +0 -70
  116. package/.output/server/node_modules/unhead/dist/shared/unhead.DeCxexjU.mjs +0 -166
  117. package/.output/server/node_modules/unhead/dist/shared/unhead.Txd0XTIP.mjs +0 -172
  118. package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +0 -38
  119. package/.output/server/node_modules/unhead/dist/utils.mjs +0 -5
  120. package/.output/server/node_modules/unhead/package.json +0 -101
  121. package/.output/server/node_modules/vue/dist/vue.cjs.js +0 -80
  122. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +0 -66
  123. package/.output/server/node_modules/vue/index.js +0 -7
  124. package/.output/server/node_modules/vue/index.mjs +0 -1
  125. package/.output/server/node_modules/vue/package.json +0 -112
  126. package/.output/server/node_modules/vue/server-renderer/index.mjs +0 -1
  127. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +0 -196
  128. package/.output/server/node_modules/vue-bundle-renderer/package.json +0 -50
  129. package/.output/server/node_modules/zod/lib/index.mjs +0 -4405
  130. package/.output/server/node_modules/zod/package.json +0 -122
  131. package/.output/server/package.json +0 -1
@@ -1,3 +0,0 @@
1
- export { uneval } from './src/uneval.js';
2
- export { parse, unflatten } from './src/parse.js';
3
- export { stringify } from './src/stringify.js';
@@ -1,34 +0,0 @@
1
- {
2
- "name": "devalue",
3
- "description": "Gets the job done when JSON.stringify can't",
4
- "version": "5.1.1",
5
- "repository": "Rich-Harris/devalue",
6
- "sideEffects": false,
7
- "exports": {
8
- ".": {
9
- "types": "./types/index.d.ts",
10
- "import": "./index.js",
11
- "default": "./index.js"
12
- }
13
- },
14
- "files": [
15
- "index.js",
16
- "src",
17
- "types"
18
- ],
19
- "types": "./types/index.d.ts",
20
- "devDependencies": {
21
- "dts-buddy": "^0.0.4",
22
- "publint": "^0.1.7",
23
- "typescript": "^3.1.3",
24
- "uvu": "^0.5.6"
25
- },
26
- "scripts": {
27
- "build": "dts-buddy",
28
- "test": "uvu test",
29
- "prepublishOnly": "npm test && npm run build && publint"
30
- },
31
- "license": "MIT",
32
- "type": "module",
33
- "packageManager": "pnpm@8.5.1"
34
- }
@@ -1,110 +0,0 @@
1
- /**
2
- * Base64 Encodes an arraybuffer
3
- * @param {ArrayBuffer} arraybuffer
4
- * @returns {string}
5
- */
6
- export function encode64(arraybuffer) {
7
- const dv = new DataView(arraybuffer);
8
- let binaryString = "";
9
-
10
- for (let i = 0; i < arraybuffer.byteLength; i++) {
11
- binaryString += String.fromCharCode(dv.getUint8(i));
12
- }
13
-
14
- return binaryToAscii(binaryString);
15
- }
16
-
17
- /**
18
- * Decodes a base64 string into an arraybuffer
19
- * @param {string} string
20
- * @returns {ArrayBuffer}
21
- */
22
- export function decode64(string) {
23
- const binaryString = asciiToBinary(string);
24
- const arraybuffer = new ArrayBuffer(binaryString.length);
25
- const dv = new DataView(arraybuffer);
26
-
27
- for (let i = 0; i < arraybuffer.byteLength; i++) {
28
- dv.setUint8(i, binaryString.charCodeAt(i));
29
- }
30
-
31
- return arraybuffer;
32
- }
33
-
34
- const KEY_STRING =
35
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
36
-
37
- /**
38
- * Substitute for atob since it's deprecated in node.
39
- * Does not do any input validation.
40
- *
41
- * @see https://github.com/jsdom/abab/blob/master/lib/atob.js
42
- *
43
- * @param {string} data
44
- * @returns {string}
45
- */
46
- function asciiToBinary(data) {
47
- if (data.length % 4 === 0) {
48
- data = data.replace(/==?$/, "");
49
- }
50
-
51
- let output = "";
52
- let buffer = 0;
53
- let accumulatedBits = 0;
54
-
55
- for (let i = 0; i < data.length; i++) {
56
- buffer <<= 6;
57
- buffer |= KEY_STRING.indexOf(data[i]);
58
- accumulatedBits += 6;
59
- if (accumulatedBits === 24) {
60
- output += String.fromCharCode((buffer & 0xff0000) >> 16);
61
- output += String.fromCharCode((buffer & 0xff00) >> 8);
62
- output += String.fromCharCode(buffer & 0xff);
63
- buffer = accumulatedBits = 0;
64
- }
65
- }
66
- if (accumulatedBits === 12) {
67
- buffer >>= 4;
68
- output += String.fromCharCode(buffer);
69
- } else if (accumulatedBits === 18) {
70
- buffer >>= 2;
71
- output += String.fromCharCode((buffer & 0xff00) >> 8);
72
- output += String.fromCharCode(buffer & 0xff);
73
- }
74
- return output;
75
- }
76
-
77
- /**
78
- * Substitute for btoa since it's deprecated in node.
79
- * Does not do any input validation.
80
- *
81
- * @see https://github.com/jsdom/abab/blob/master/lib/btoa.js
82
- *
83
- * @param {string} str
84
- * @returns {string}
85
- */
86
- function binaryToAscii(str) {
87
- let out = "";
88
- for (let i = 0; i < str.length; i += 3) {
89
- /** @type {[number, number, number, number]} */
90
- const groupsOfSix = [undefined, undefined, undefined, undefined];
91
- groupsOfSix[0] = str.charCodeAt(i) >> 2;
92
- groupsOfSix[1] = (str.charCodeAt(i) & 0x03) << 4;
93
- if (str.length > i + 1) {
94
- groupsOfSix[1] |= str.charCodeAt(i + 1) >> 4;
95
- groupsOfSix[2] = (str.charCodeAt(i + 1) & 0x0f) << 2;
96
- }
97
- if (str.length > i + 2) {
98
- groupsOfSix[2] |= str.charCodeAt(i + 2) >> 6;
99
- groupsOfSix[3] = str.charCodeAt(i + 2) & 0x3f;
100
- }
101
- for (let j = 0; j < groupsOfSix.length; j++) {
102
- if (typeof groupsOfSix[j] === "undefined") {
103
- out += "=";
104
- } else {
105
- out += KEY_STRING[groupsOfSix[j]];
106
- }
107
- }
108
- }
109
- return out;
110
- }
@@ -1,6 +0,0 @@
1
- export const UNDEFINED = -1;
2
- export const HOLE = -2;
3
- export const NAN = -3;
4
- export const POSITIVE_INFINITY = -4;
5
- export const NEGATIVE_INFINITY = -5;
6
- export const NEGATIVE_ZERO = -6;
@@ -1,160 +0,0 @@
1
- import { decode64 } from './base64.js';
2
- import {
3
- HOLE,
4
- NAN,
5
- NEGATIVE_INFINITY,
6
- NEGATIVE_ZERO,
7
- POSITIVE_INFINITY,
8
- UNDEFINED
9
- } from './constants.js';
10
-
11
- /**
12
- * Revive a value serialized with `devalue.stringify`
13
- * @param {string} serialized
14
- * @param {Record<string, (value: any) => any>} [revivers]
15
- */
16
- export function parse(serialized, revivers) {
17
- return unflatten(JSON.parse(serialized), revivers);
18
- }
19
-
20
- /**
21
- * Revive a value flattened with `devalue.stringify`
22
- * @param {number | any[]} parsed
23
- * @param {Record<string, (value: any) => any>} [revivers]
24
- */
25
- export function unflatten(parsed, revivers) {
26
- if (typeof parsed === 'number') return hydrate(parsed, true);
27
-
28
- if (!Array.isArray(parsed) || parsed.length === 0) {
29
- throw new Error('Invalid input');
30
- }
31
-
32
- const values = /** @type {any[]} */ (parsed);
33
-
34
- const hydrated = Array(values.length);
35
-
36
- /**
37
- * @param {number} index
38
- * @returns {any}
39
- */
40
- function hydrate(index, standalone = false) {
41
- if (index === UNDEFINED) return undefined;
42
- if (index === NAN) return NaN;
43
- if (index === POSITIVE_INFINITY) return Infinity;
44
- if (index === NEGATIVE_INFINITY) return -Infinity;
45
- if (index === NEGATIVE_ZERO) return -0;
46
-
47
- if (standalone) throw new Error(`Invalid input`);
48
-
49
- if (index in hydrated) return hydrated[index];
50
-
51
- const value = values[index];
52
-
53
- if (!value || typeof value !== 'object') {
54
- hydrated[index] = value;
55
- } else if (Array.isArray(value)) {
56
- if (typeof value[0] === 'string') {
57
- const type = value[0];
58
-
59
- const reviver = revivers?.[type];
60
- if (reviver) {
61
- return (hydrated[index] = reviver(hydrate(value[1])));
62
- }
63
-
64
- switch (type) {
65
- case 'Date':
66
- hydrated[index] = new Date(value[1]);
67
- break;
68
-
69
- case 'Set':
70
- const set = new Set();
71
- hydrated[index] = set;
72
- for (let i = 1; i < value.length; i += 1) {
73
- set.add(hydrate(value[i]));
74
- }
75
- break;
76
-
77
- case 'Map':
78
- const map = new Map();
79
- hydrated[index] = map;
80
- for (let i = 1; i < value.length; i += 2) {
81
- map.set(hydrate(value[i]), hydrate(value[i + 1]));
82
- }
83
- break;
84
-
85
- case 'RegExp':
86
- hydrated[index] = new RegExp(value[1], value[2]);
87
- break;
88
-
89
- case 'Object':
90
- hydrated[index] = Object(value[1]);
91
- break;
92
-
93
- case 'BigInt':
94
- hydrated[index] = BigInt(value[1]);
95
- break;
96
-
97
- case 'null':
98
- const obj = Object.create(null);
99
- hydrated[index] = obj;
100
- for (let i = 1; i < value.length; i += 2) {
101
- obj[value[i]] = hydrate(value[i + 1]);
102
- }
103
- break;
104
-
105
- case "Int8Array":
106
- case "Uint8Array":
107
- case "Uint8ClampedArray":
108
- case "Int16Array":
109
- case "Uint16Array":
110
- case "Int32Array":
111
- case "Uint32Array":
112
- case "Float32Array":
113
- case "Float64Array":
114
- case "BigInt64Array":
115
- case "BigUint64Array": {
116
- const TypedArrayConstructor = globalThis[type];
117
- const base64 = value[1];
118
- const arraybuffer = decode64(base64);
119
- const typedArray = new TypedArrayConstructor(arraybuffer);
120
- hydrated[index] = typedArray;
121
- break;
122
- }
123
-
124
- case "ArrayBuffer": {
125
- const base64 = value[1];
126
- const arraybuffer = decode64(base64);
127
- hydrated[index] = arraybuffer;
128
- break;
129
- }
130
-
131
- default:
132
- throw new Error(`Unknown type ${type}`);
133
- }
134
- } else {
135
- const array = new Array(value.length);
136
- hydrated[index] = array;
137
-
138
- for (let i = 0; i < value.length; i += 1) {
139
- const n = value[i];
140
- if (n === HOLE) continue;
141
-
142
- array[i] = hydrate(n);
143
- }
144
- }
145
- } else {
146
- /** @type {Record<string, any>} */
147
- const object = {};
148
- hydrated[index] = object;
149
-
150
- for (const key in value) {
151
- const n = value[key];
152
- object[key] = hydrate(n);
153
- }
154
- }
155
-
156
- return hydrated[index];
157
- }
158
-
159
- return hydrate(0);
160
- }
@@ -1,232 +0,0 @@
1
- import {
2
- DevalueError,
3
- enumerable_symbols,
4
- get_type,
5
- is_plain_object,
6
- is_primitive,
7
- stringify_key,
8
- stringify_string
9
- } from './utils.js';
10
- import {
11
- HOLE,
12
- NAN,
13
- NEGATIVE_INFINITY,
14
- NEGATIVE_ZERO,
15
- POSITIVE_INFINITY,
16
- UNDEFINED
17
- } from './constants.js';
18
- import { encode64 } from './base64.js';
19
-
20
- /**
21
- * Turn a value into a JSON string that can be parsed with `devalue.parse`
22
- * @param {any} value
23
- * @param {Record<string, (value: any) => any>} [reducers]
24
- */
25
- export function stringify(value, reducers) {
26
- /** @type {any[]} */
27
- const stringified = [];
28
-
29
- /** @type {Map<any, number>} */
30
- const indexes = new Map();
31
-
32
- /** @type {Array<{ key: string, fn: (value: any) => any }>} */
33
- const custom = [];
34
- if (reducers) {
35
- for (const key of Object.getOwnPropertyNames(reducers)) {
36
- custom.push({ key, fn: reducers[key] });
37
- }
38
- }
39
-
40
- /** @type {string[]} */
41
- const keys = [];
42
-
43
- let p = 0;
44
-
45
- /** @param {any} thing */
46
- function flatten(thing) {
47
- if (typeof thing === 'function') {
48
- throw new DevalueError(`Cannot stringify a function`, keys);
49
- }
50
-
51
- if (indexes.has(thing)) return indexes.get(thing);
52
-
53
- if (thing === undefined) return UNDEFINED;
54
- if (Number.isNaN(thing)) return NAN;
55
- if (thing === Infinity) return POSITIVE_INFINITY;
56
- if (thing === -Infinity) return NEGATIVE_INFINITY;
57
- if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO;
58
-
59
- const index = p++;
60
- indexes.set(thing, index);
61
-
62
- for (const { key, fn } of custom) {
63
- const value = fn(thing);
64
- if (value) {
65
- stringified[index] = `["${key}",${flatten(value)}]`;
66
- return index;
67
- }
68
- }
69
-
70
- let str = '';
71
-
72
- if (is_primitive(thing)) {
73
- str = stringify_primitive(thing);
74
- } else {
75
- const type = get_type(thing);
76
-
77
- switch (type) {
78
- case 'Number':
79
- case 'String':
80
- case 'Boolean':
81
- str = `["Object",${stringify_primitive(thing)}]`;
82
- break;
83
-
84
- case 'BigInt':
85
- str = `["BigInt",${thing}]`;
86
- break;
87
-
88
- case 'Date':
89
- const valid = !isNaN(thing.getDate());
90
- str = `["Date","${valid ? thing.toISOString() : ''}"]`;
91
- break;
92
-
93
- case 'RegExp':
94
- const { source, flags } = thing;
95
- str = flags
96
- ? `["RegExp",${stringify_string(source)},"${flags}"]`
97
- : `["RegExp",${stringify_string(source)}]`;
98
- break;
99
-
100
- case 'Array':
101
- str = '[';
102
-
103
- for (let i = 0; i < thing.length; i += 1) {
104
- if (i > 0) str += ',';
105
-
106
- if (i in thing) {
107
- keys.push(`[${i}]`);
108
- str += flatten(thing[i]);
109
- keys.pop();
110
- } else {
111
- str += HOLE;
112
- }
113
- }
114
-
115
- str += ']';
116
-
117
- break;
118
-
119
- case 'Set':
120
- str = '["Set"';
121
-
122
- for (const value of thing) {
123
- str += `,${flatten(value)}`;
124
- }
125
-
126
- str += ']';
127
- break;
128
-
129
- case 'Map':
130
- str = '["Map"';
131
-
132
- for (const [key, value] of thing) {
133
- keys.push(
134
- `.get(${is_primitive(key) ? stringify_primitive(key) : '...'})`
135
- );
136
- str += `,${flatten(key)},${flatten(value)}`;
137
- keys.pop();
138
- }
139
-
140
- str += ']';
141
- break;
142
-
143
- case "Int8Array":
144
- case "Uint8Array":
145
- case "Uint8ClampedArray":
146
- case "Int16Array":
147
- case "Uint16Array":
148
- case "Int32Array":
149
- case "Uint32Array":
150
- case "Float32Array":
151
- case "Float64Array":
152
- case "BigInt64Array":
153
- case "BigUint64Array": {
154
- /** @type {import("./types.js").TypedArray} */
155
- const typedArray = thing;
156
- const base64 = encode64(typedArray.buffer);
157
- str = '["' + type + '","' + base64 + '"]';
158
- break;
159
- }
160
-
161
- case "ArrayBuffer": {
162
- /** @type {ArrayBuffer} */
163
- const arraybuffer = thing;
164
- const base64 = encode64(arraybuffer);
165
-
166
- str = `["ArrayBuffer","${base64}"]`;
167
- break;
168
- }
169
-
170
- default:
171
- if (!is_plain_object(thing)) {
172
- throw new DevalueError(
173
- `Cannot stringify arbitrary non-POJOs`,
174
- keys
175
- );
176
- }
177
-
178
- if (enumerable_symbols(thing).length > 0) {
179
- throw new DevalueError(
180
- `Cannot stringify POJOs with symbolic keys`,
181
- keys
182
- );
183
- }
184
-
185
- if (Object.getPrototypeOf(thing) === null) {
186
- str = '["null"';
187
- for (const key in thing) {
188
- keys.push(stringify_key(key));
189
- str += `,${stringify_string(key)},${flatten(thing[key])}`;
190
- keys.pop();
191
- }
192
- str += ']';
193
- } else {
194
- str = '{';
195
- let started = false;
196
- for (const key in thing) {
197
- if (started) str += ',';
198
- started = true;
199
- keys.push(stringify_key(key));
200
- str += `${stringify_string(key)}:${flatten(thing[key])}`;
201
- keys.pop();
202
- }
203
- str += '}';
204
- }
205
- }
206
- }
207
-
208
- stringified[index] = str;
209
- return index;
210
- }
211
-
212
- const index = flatten(value);
213
-
214
- // special case — value is represented as a negative index
215
- if (index < 0) return `${index}`;
216
-
217
- return `[${stringified.join(',')}]`;
218
- }
219
-
220
- /**
221
- * @param {any} thing
222
- * @returns {string}
223
- */
224
- function stringify_primitive(thing) {
225
- const type = typeof thing;
226
- if (type === 'string') return stringify_string(thing);
227
- if (thing instanceof String) return stringify_string(thing.toString());
228
- if (thing === void 0) return UNDEFINED.toString();
229
- if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO.toString();
230
- if (type === 'bigint') return `["BigInt","${thing}"]`;
231
- return String(thing);
232
- }