harmony-erlpack 0.0.1 → 0.0.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.
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve.
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1. Go to '...'
16
+ 2. Click on '....'
17
+ 3. Scroll down to '....'
18
+ 4. See error
19
+
20
+ **Expected behavior**
21
+ A clear and concise description of what you expected to happen.
22
+
23
+ **Screenshots**
24
+ If applicable, add screenshots to help explain your problem.
25
+
26
+ **Desktop (please complete the following information):**
27
+ - OS: [e.g. iOS]
28
+ - Browser: [e.g. Chrome, Safari]
29
+ - Browser Version: [e.g. 22]
30
+
31
+ **Smartphone (please complete the following information):**
32
+ - Device: [e.g. iPhone6]
33
+ - OS: [e.g. iOS8.1, Android 16]
34
+ - Browser: [e.g. stock browser, safari]
35
+ - Browser Version: [e.g. 22]
36
+
37
+ **Additional context**
38
+ Add any other context about the problem here.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project.
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Is your feature request related to a problem? Please describe.**
11
+ A clear and concise description of what the problem is. Example: I'm always frustrated when [...]
12
+
13
+ **Describe the solution you'd like**
14
+ A clear and concise description of what you want to happen.
15
+
16
+ **Describe alternatives you've considered**
17
+ A clear and concise description of any alternative solutions or features you've considered.
18
+
19
+ **Additional context**
20
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,5 @@
1
+ # Description
2
+ A description of the pull request.
3
+
4
+ # Related issues
5
+ Any related issues, delete if there are none.
@@ -0,0 +1,24 @@
1
+ name: NPM Publish
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ publish:
9
+ name: publish
10
+ runs-on: codeberg-tiny
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - name: install node v22
14
+ uses: actions/setup-node@v1
15
+ with:
16
+ node-version: 22
17
+ - name: npm i
18
+ run: npm i
19
+ - name: npm run tsc
20
+ run: npm run tsc
21
+ - name: auth
22
+ run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_CI_TOKEN }}
23
+ - name: publish
24
+ run: npm publish --access public
@@ -0,0 +1,20 @@
1
+ name: TSC check CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ tsc:
9
+ name: tsc
10
+ runs-on: codeberg-tiny
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - name: install node v22
14
+ uses: actions/setup-node@v1
15
+ with:
16
+ node-version: 22
17
+ - name: npm i
18
+ run: npm i
19
+ - name: npm run tsc
20
+ run: npm run tsc --noEmit
package/dist/decode.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export declare function unpack(buff: ArrayBufferLike, { offset }?: {
2
2
  offset: number;
3
- }): string | number | bigint | boolean | unknown[] | Record<string | number, unknown> | undefined;
3
+ }): string | number | bigint | boolean | unknown[] | Record<string | number, unknown> | null | undefined;
4
4
  //# sourceMappingURL=decode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"AA+BA,wBAAgB,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,EAAC,MAAM,EAAC;;CAAc,iGA4EnE"}
1
+ {"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"AA+BA,wBAAgB,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,EAAC,MAAM,EAAC;;CAAc,wGA4EnE"}
package/dist/decode.js CHANGED
@@ -67,7 +67,7 @@ export function unpack(buff, { offset } = { offset: 0 }) {
67
67
  case "false":
68
68
  return false;
69
69
  case "nil":
70
- return undefined;
70
+ return null;
71
71
  default:
72
72
  throw new Error(text);
73
73
  }
@@ -80,16 +80,16 @@ export function unpack(buff, { offset } = { offset: 0 }) {
80
80
  }
81
81
  case 108 /* erlTypes.array */: {
82
82
  const len = reader.readI32();
83
- const arr = [];
83
+ const arr = new Array(len);
84
84
  for (let i = 0; i < len; i++) {
85
- arr.push(unpack());
85
+ arr[i] = unpack();
86
86
  }
87
87
  reader.readByte();
88
88
  return arr;
89
89
  }
90
90
  case 116 /* erlTypes.object */: {
91
91
  const len = reader.readI32();
92
- const obj2 = {};
92
+ const obj2 = Object.create(null);
93
93
  for (let i = 0; i < len; i++) {
94
94
  obj2[unpack()] = unpack();
95
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"decode.js","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decode.js","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"AA4DA,wBAAgB,IAAI,CAAC,GAAG,EAAE,OAAO,eA6GhC"}
1
+ {"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"AAsEA,wBAAgB,IAAI,CAAC,GAAG,EAAE,OAAO,eAoHhC"}
package/dist/encode.js CHANGED
@@ -2,22 +2,29 @@ import { version } from "./erltype.js";
2
2
  class ByteLayer {
3
3
  buffer = new ArrayBuffer(1 << 6);
4
4
  view = new DataView(this.buffer);
5
+ u8a = new Uint8Array(this.buffer);
5
6
  index = 0;
7
+ bufLen = this.buffer.byteLength - 10;
6
8
  getSpace(len) {
7
- if (this.index + len >= this.buffer.byteLength) {
9
+ if (this.index + len >= this.bufLen) {
8
10
  let llen = this.buffer.byteLength;
9
11
  while (this.index + len >= llen)
10
12
  llen *= 2;
11
13
  this.buffer = this.buffer.transfer(llen);
12
14
  this.view = new DataView(this.buffer);
15
+ this.u8a = new Uint8Array(this.buffer);
16
+ this.bufLen = llen - 10;
13
17
  }
14
18
  const old = this.index;
15
19
  this.index += len;
16
20
  return old;
17
21
  }
22
+ appendLabel(num) {
23
+ this.u8a[this.index++] = num;
24
+ }
18
25
  appendByte(num) {
19
26
  const i = this.getSpace(1);
20
- this.view.setInt8(i, num);
27
+ this.u8a[i] = num;
21
28
  }
22
29
  append32IntDelayed() {
23
30
  const i = this.getSpace(4);
@@ -57,18 +64,20 @@ class ByteLayer {
57
64
  }
58
65
  const encoder = new TextEncoder();
59
66
  const preAtoms = new Map();
67
+ const nilAtom = encoder.encode("nil");
68
+ const trueAtom = encoder.encode("true");
69
+ const falseAtom = encoder.encode("false");
60
70
  export function pack(obj) {
61
71
  const layer = new ByteLayer();
62
- const strMap = new Map();
63
- function appendAtom(str) {
72
+ const appendAtom = (str) => {
64
73
  const buf = preAtoms.get(str) ?? encoder.encode(str);
65
74
  if (!preAtoms.has(str))
66
75
  preAtoms.set(str, buf);
67
76
  layer.appendByte(115 /* erlTypes.sAtom */);
68
77
  layer.appendByte(buf.length);
69
78
  layer.appendBuffer(buf);
70
- }
71
- function layBigint(d) {
79
+ };
80
+ const layBigint = (d) => {
72
81
  const bytes = [];
73
82
  const sign = d < 0n;
74
83
  d = sign ? d * -1n : d;
@@ -82,18 +91,18 @@ export function pack(obj) {
82
91
  layer.appendByte(+sign);
83
92
  layer.appendBuffer(bytes);
84
93
  }
85
- }
94
+ };
86
95
  layer.appendByte(version);
87
96
  function packObj(obj) {
88
97
  switch (typeof obj) {
89
98
  case "number": {
90
99
  if (Number.isInteger(obj) && obj < 2 ** 32 && obj >= -(2 ** 31)) {
91
100
  if (obj > 0 && obj < 256) {
92
- layer.appendByte(97 /* erlTypes.u8 */);
101
+ layer.appendLabel(97 /* erlTypes.u8 */);
93
102
  layer.appendByte(obj);
94
103
  }
95
104
  else if (obj < 2 ** 31 && obj >= -(2 ** 31)) {
96
- layer.appendByte(98 /* erlTypes.i32 */);
105
+ layer.appendLabel(98 /* erlTypes.i32 */);
97
106
  layer.append32Int(obj);
98
107
  }
99
108
  else {
@@ -101,61 +110,69 @@ export function pack(obj) {
101
110
  }
102
111
  }
103
112
  else {
104
- layer.appendByte(70 /* erlTypes.double */);
113
+ layer.appendLabel(70 /* erlTypes.double */);
105
114
  layer.appendDouble(obj);
106
115
  }
107
116
  break;
108
117
  }
109
118
  case "undefined": {
110
- appendAtom("nil");
119
+ layer.appendLabel(115 /* erlTypes.sAtom */);
120
+ layer.appendByte(nilAtom.length);
121
+ layer.appendBuffer(nilAtom);
111
122
  break;
112
123
  }
113
124
  case "boolean": {
114
- appendAtom(obj + "");
115
- break;
116
- }
117
- case "string": {
118
- if (obj.length < 100) {
119
- const buf = strMap.get(obj) ?? encoder.encode(obj);
120
- strMap.set(obj, buf);
121
- layer.appendByte(109 /* erlTypes.bin */);
122
- layer.append32Int(buf.length);
123
- layer.appendBuffer(buf);
125
+ if (obj) {
126
+ layer.appendLabel(115 /* erlTypes.sAtom */);
127
+ layer.appendByte(trueAtom.length);
128
+ layer.appendBuffer(trueAtom);
124
129
  }
125
130
  else {
126
- layer.appendByte(109 /* erlTypes.bin */);
127
- const len = layer.append32IntDelayed();
128
- const size = obj.length * 3;
129
- const { buff, ret } = layer.getBuffer(size);
130
- const { written } = encoder.encodeInto(obj, buff);
131
- ret(size - written);
132
- len(written);
131
+ layer.appendLabel(115 /* erlTypes.sAtom */);
132
+ layer.appendByte(falseAtom.length);
133
+ layer.appendBuffer(falseAtom);
133
134
  }
134
135
  break;
135
136
  }
137
+ case "string": {
138
+ layer.appendLabel(109 /* erlTypes.bin */);
139
+ const len = layer.append32IntDelayed();
140
+ const size = obj.length * 3;
141
+ const { buff, ret } = layer.getBuffer(size);
142
+ const { written } = encoder.encodeInto(obj, buff);
143
+ ret(size - written);
144
+ len(written);
145
+ break;
146
+ }
136
147
  case "object": {
137
148
  if (obj instanceof Array) {
138
- layer.appendByte(108 /* erlTypes.array */);
149
+ layer.appendLabel(108 /* erlTypes.array */);
139
150
  layer.append32Int(obj.length);
140
151
  for (const item of obj) {
141
152
  packObj(item);
142
153
  }
143
154
  //Leaving this off will make @yukikaze-bot/erlpack segfault
144
- layer.appendByte(106 /* erlTypes.endList */);
155
+ layer.appendLabel(106 /* erlTypes.endList */);
145
156
  }
146
157
  else if (obj === null) {
147
- appendAtom("nil");
158
+ layer.appendLabel(115 /* erlTypes.sAtom */);
159
+ layer.appendByte(nilAtom.length);
160
+ layer.appendBuffer(nilAtom);
148
161
  }
149
162
  else {
150
- layer.appendByte(116 /* erlTypes.object */);
151
- const pairs = Object.entries(obj);
152
- layer.append32Int(pairs.length);
153
- for (const [key, value] of pairs) {
163
+ layer.appendLabel(116 /* erlTypes.object */);
164
+ const d = layer.append32IntDelayed();
165
+ let i = 0;
166
+ for (const key in obj) {
167
+ //@ts-expect-error this is safe to do
168
+ const value = obj[key];
154
169
  if (typeof value === "function" || typeof value === "symbol")
155
170
  continue;
171
+ i++;
156
172
  packObj(key);
157
173
  packObj(value);
158
174
  }
175
+ d(i);
159
176
  }
160
177
  break;
161
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"encode.js","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encode.js","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"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"}