skir-internal 0.0.2 → 0.0.4

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/dist/casing.d.ts CHANGED
@@ -1,8 +1,5 @@
1
- import type { Casing, ErrorSink, Token } from "./types.js";
2
- /** Registers an error if the given token does not match the expected casing. */
3
- export declare function validate(name: Token, expected: "lower_underscore" | "UpperCamel" | "UPPER_UNDERSCORE", errors: ErrorSink): void;
1
+ import type { Casing } from "./types.js";
4
2
  export declare function convertCase(text: string, target: Casing): string;
5
3
  /** Returns a new string with the first letter of `name` capitalized. */
6
4
  export declare function capitalize(name: string): string;
7
- export declare function caseMatches(name: string, expected: "lower_underscore" | "UpperCamel" | "UPPER_UNDERSCORE"): boolean;
8
5
  //# sourceMappingURL=casing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"casing.d.ts","sourceRoot":"","sources":["../src/casing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE3D,gFAAgF;AAChF,wBAAgB,QAAQ,CACtB,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,kBAAkB,GAAG,YAAY,GAAG,kBAAkB,EAChE,MAAM,EAAE,SAAS,GAChB,IAAI,CAON;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kBAAkB,GAAG,YAAY,GAAG,kBAAkB,GAC/D,OAAO,CAST"}
1
+ {"version":3,"file":"casing.d.ts","sourceRoot":"","sources":["../src/casing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C"}
package/dist/casing.js CHANGED
@@ -1,12 +1,3 @@
1
- /** Registers an error if the given token does not match the expected casing. */
2
- export function validate(name, expected, errors) {
3
- if (!caseMatches(name.text, expected)) {
4
- errors.push({
5
- token: name,
6
- expected: expected,
7
- });
8
- }
9
- }
10
1
  export function convertCase(text, target) {
11
2
  let words;
12
3
  if (text.includes("_")) {
@@ -30,14 +21,4 @@ export function convertCase(text, target) {
30
21
  export function capitalize(name) {
31
22
  return name[0].toUpperCase() + name.slice(1);
32
23
  }
33
- export function caseMatches(name, expected) {
34
- switch (expected) {
35
- case "lower_underscore":
36
- return /^[a-z][0-9a-z]*(_[a-z][0-9a-z]*)*$/.test(name);
37
- case "UpperCamel":
38
- return /^[A-Z][0-9A-Za-z]*$/.test(name);
39
- case "UPPER_UNDERSCORE":
40
- return /^[A-Z][0-9A-Z]*(_[A-Z][0-9A-Z]*)*$/.test(name);
41
- }
42
- }
43
24
  //# sourceMappingURL=casing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"casing.js","sourceRoot":"","sources":["../src/casing.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,MAAM,UAAU,QAAQ,CACtB,IAAW,EACX,QAAgE,EAChE,MAAiB;IAEjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAc;IACtD,IAAI,KAAwB,CAAC;IAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,KAAK,kBAAkB;YACrB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxC,KAAK,kBAAkB;YACrB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,QAAgE;IAEhE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,kBAAkB;YACrB,OAAO,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,KAAK,YAAY;YACf,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,kBAAkB;YACrB,OAAO,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"casing.js","sourceRoot":"","sources":["../src/casing.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAc;IACtD,IAAI,KAAwB,CAAC;IAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,KAAK,kBAAkB;YACrB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxC,KAAK,kBAAkB;YACrB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
@@ -1,124 +1,7 @@
1
1
  import { expect } from "buckwheat";
2
2
  import { describe, it } from "mocha";
3
- import { capitalize, convertCase, validate } from "./casing.js";
4
- function makeToken(text) {
5
- return {
6
- text: text,
7
- originalText: text,
8
- colNumber: 0,
9
- line: {
10
- line: "",
11
- lineNumber: 0,
12
- modulePath: "",
13
- position: 0,
14
- },
15
- position: 0,
16
- };
17
- }
18
- function doValidate(text, casing) {
19
- const errors = [];
20
- validate(makeToken(text), casing, errors);
21
- return errors;
22
- }
3
+ import { capitalize, convertCase } from "./casing.js";
23
4
  describe("casing", () => {
24
- describe("validate", () => {
25
- it("is lower_underscore", () => {
26
- expect(doValidate("foo", "lower_underscore")).toMatch([]);
27
- expect(doValidate("foo_bar", "lower_underscore")).toMatch([]);
28
- expect(doValidate("f00", "lower_underscore")).toMatch([]);
29
- expect(doValidate("f00_bar", "lower_underscore")).toMatch([]);
30
- });
31
- it("is not lower_underscore", () => {
32
- expect(doValidate("Foo", "lower_underscore")).toMatch([
33
- {
34
- token: {
35
- text: "Foo",
36
- },
37
- expected: "lower_underscore",
38
- },
39
- ]);
40
- expect(doValidate("foo__bar", "lower_underscore")).toMatch([
41
- {
42
- token: {
43
- text: "foo__bar",
44
- },
45
- expected: "lower_underscore",
46
- },
47
- ]);
48
- expect(doValidate("foo_", "lower_underscore")).toMatch([
49
- {
50
- token: {
51
- text: "foo_",
52
- },
53
- expected: "lower_underscore",
54
- },
55
- ]);
56
- expect(doValidate("fOO", "lower_underscore")).toMatch([
57
- {
58
- token: {
59
- text: "fOO",
60
- },
61
- expected: "lower_underscore",
62
- },
63
- ]);
64
- expect(doValidate("foo_7", "lower_underscore")).toMatch([
65
- {
66
- token: {
67
- text: "foo_7",
68
- },
69
- expected: "lower_underscore",
70
- },
71
- ]);
72
- });
73
- it("is UPPER_UNDERSCORE", () => {
74
- expect(doValidate("FOO", "UPPER_UNDERSCORE")).toMatch([]);
75
- expect(doValidate("FOO_BAR", "UPPER_UNDERSCORE")).toMatch([]);
76
- expect(doValidate("F00", "UPPER_UNDERSCORE")).toMatch([]);
77
- expect(doValidate("F00_BAR", "UPPER_UNDERSCORE")).toMatch([]);
78
- });
79
- it("is not UPPER_UNDERSCORE", () => {
80
- expect(doValidate("fOO", "UPPER_UNDERSCORE")).toMatch([
81
- {
82
- token: {
83
- text: "fOO",
84
- },
85
- expected: "UPPER_UNDERSCORE",
86
- },
87
- ]);
88
- expect(doValidate("FOO__BAR", "UPPER_UNDERSCORE")).toMatch([
89
- {
90
- token: {
91
- text: "FOO__BAR",
92
- },
93
- expected: "UPPER_UNDERSCORE",
94
- },
95
- ]);
96
- expect(doValidate("FOO_", "UPPER_UNDERSCORE")).toMatch([
97
- {
98
- token: {
99
- text: "FOO_",
100
- },
101
- expected: "UPPER_UNDERSCORE",
102
- },
103
- ]);
104
- expect(doValidate("fOO", "UPPER_UNDERSCORE")).toMatch([
105
- {
106
- token: {
107
- text: "fOO",
108
- },
109
- expected: "UPPER_UNDERSCORE",
110
- },
111
- ]);
112
- expect(doValidate("FOO_7", "UPPER_UNDERSCORE")).toMatch([
113
- {
114
- token: {
115
- text: "FOO_7",
116
- },
117
- expected: "UPPER_UNDERSCORE",
118
- },
119
- ]);
120
- });
121
- });
122
5
  it("convert", () => {
123
6
  expect(convertCase("FOO_BAR", "UPPER_UNDERSCORE")).toBe("FOO_BAR");
124
7
  expect(convertCase("FOO_BAR", "UpperCamel")).toBe("FooBar");
@@ -1 +1 @@
1
- {"version":3,"file":"casing.test.js","sourceRoot":"","sources":["../src/casing.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"casing.test.js","sourceRoot":"","sources":["../src/casing.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtD,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACjB,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QACpB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function encodeInt32(i: number): Uint8Array;
2
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CA+BjD"}
@@ -0,0 +1,38 @@
1
+ export function encodeInt32(i) {
2
+ const buffer = new ArrayBuffer(5);
3
+ const dataView = new DataView(buffer);
4
+ let n;
5
+ if (i < 0) {
6
+ if (i >= -256) {
7
+ dataView.setUint8(0, 235);
8
+ dataView.setUint8(1, i + 256);
9
+ n = 2;
10
+ }
11
+ else if (i >= -65536) {
12
+ dataView.setUint8(0, 236);
13
+ dataView.setUint16(1, i + 65536, true);
14
+ n = 3;
15
+ }
16
+ else {
17
+ dataView.setUint8(0, 237);
18
+ dataView.setInt32(1, i, true);
19
+ n = 5;
20
+ }
21
+ }
22
+ else if (i < 232) {
23
+ dataView.setUint8(0, i);
24
+ n = 1;
25
+ }
26
+ else if (i < 65536) {
27
+ dataView.setUint8(0, 232);
28
+ dataView.setUint16(1, i, true);
29
+ n = 3;
30
+ }
31
+ else {
32
+ dataView.setUint8(0, 233);
33
+ dataView.setInt32(1, i, true);
34
+ n = 5;
35
+ }
36
+ return new Uint8Array(buffer, 0, n);
37
+ }
38
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAS,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1B,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;YAC9B,CAAC,GAAG,CAAC,CAAC;QACR,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1B,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC,GAAG,CAAC,CAAC;QACR,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1B,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC,GAAG,CAAC,CAAC;QACR,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACnB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;SAAM,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;QACrB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=encoding.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.test.d.ts","sourceRoot":"","sources":["../src/encoding.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { expect } from "buckwheat";
2
+ import { describe, it } from "mocha";
3
+ import { encodeInt32 } from "./encoding.js";
4
+ function toHexString(a) {
5
+ return [...a].map((x) => x.toString(16).padStart(2, "0")).join("");
6
+ }
7
+ describe("encoding", () => {
8
+ it("encodeInt32 works", () => {
9
+ expect(toHexString(encodeInt32(4))).toMatch("04");
10
+ expect(toHexString(encodeInt32(231))).toMatch("e7");
11
+ expect(toHexString(encodeInt32(232))).toMatch("e8e800");
12
+ expect(toHexString(encodeInt32(65535))).toMatch("e8ffff");
13
+ expect(toHexString(encodeInt32(65536))).toMatch("e900000100");
14
+ expect(toHexString(encodeInt32(2147483647))).toMatch("e9ffffff7f");
15
+ expect(toHexString(encodeInt32(-255))).toMatch("eb01");
16
+ expect(toHexString(encodeInt32(-256))).toMatch("eb00");
17
+ expect(toHexString(encodeInt32(-257))).toMatch("ecfffe");
18
+ expect(toHexString(encodeInt32(-65536))).toMatch("ec0000");
19
+ expect(toHexString(encodeInt32(-65537))).toMatch("edfffffeff");
20
+ expect(toHexString(encodeInt32(-2147483648))).toMatch("ed00000080");
21
+ });
22
+ });
23
+ //# sourceMappingURL=encoding.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.test.js","sourceRoot":"","sources":["../src/encoding.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,SAAS,WAAW,CAAC,CAAa;IAChC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC9D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type * from "./types.js";
2
+ export { capitalize, convertCase } from "./casing.js";
3
+ export { encodeInt32 } from "./encoding.js";
4
+ export { unquoteAndUnescape } from "./literals.js";
5
+ export { simpleHash } from "./simple_hash.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { capitalize, convertCase } from "./casing.js";
2
+ export { encodeInt32 } from "./encoding.js";
3
+ export { unquoteAndUnescape } from "./literals.js";
4
+ export { simpleHash } from "./simple_hash.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function unquoteAndUnescape(stringLiteral: string): string;
2
+ //# sourceMappingURL=literals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../src/literals.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAWhE"}
@@ -0,0 +1,13 @@
1
+ export function unquoteAndUnescape(stringLiteral) {
2
+ const unquoted = stringLiteral.slice(1, -1);
3
+ const parts = unquoted.split("\\\\");
4
+ for (let i = 0; i < parts.length; ++i) {
5
+ const part = parts[i].replace(/\\(\r\n|\n|\r)/g, "\\n")
6
+ // Escape unescaped double quotes which can appear in a single-quoted
7
+ // string literal.
8
+ .replace(/(?<=^|[^\\])"/g, '\\"');
9
+ parts[i] = JSON.parse(`"${part}"`);
10
+ }
11
+ return parts.join("\\");
12
+ }
13
+ //# sourceMappingURL=literals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literals.js","sourceRoot":"","sources":["../src/literals.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;YACtD,qEAAqE;YACrE,kBAAkB;aACjB,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACpC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=literals.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literals.test.d.ts","sourceRoot":"","sources":["../src/literals.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { expect } from "buckwheat";
2
+ import { describe, it } from "mocha";
3
+ import { unquoteAndUnescape } from "./literals.js";
4
+ describe("literals", () => {
5
+ it("#unquoteAndUnescape() works", () => {
6
+ expect(unquoteAndUnescape('"foo\\\r\n\\\n\\\r\\tbar\\\\t"')).toBe(["foo", "", "", "\tbar\\t"].join("\n"));
7
+ });
8
+ });
9
+ //# sourceMappingURL=literals.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literals.test.js","sourceRoot":"","sources":["../src/literals.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,kBAAkB,CAAC,gCAAgC,CAAC,CAAC,CAAC,IAAI,CAC/D,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACvC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Returns a uint32 hash of the given string. */
2
+ export declare function simpleHash(input: string): number;
3
+ //# sourceMappingURL=simple_hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple_hash.d.ts","sourceRoot":"","sources":["../src/simple_hash.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUhD"}
@@ -0,0 +1,13 @@
1
+ /** Returns a uint32 hash of the given string. */
2
+ export function simpleHash(input) {
3
+ // From https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript
4
+ let hash = 0;
5
+ for (let i = 0; i < input.length; i++) {
6
+ const char = input.charCodeAt(i);
7
+ hash = (hash << 5) - hash + char;
8
+ hash |= 0;
9
+ }
10
+ // Signed int32 to unsigned int32.
11
+ return hash >>> 0;
12
+ }
13
+ //# sourceMappingURL=simple_hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple_hash.js","sourceRoot":"","sources":["../src/simple_hash.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,kGAAkG;IAClG,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,kCAAkC;IAClC,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=simple_hash.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple_hash.test.d.ts","sourceRoot":"","sources":["../src/simple_hash.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { expect } from "buckwheat";
2
+ import { describe, it } from "mocha";
3
+ import { simpleHash } from "./simple_hash.js";
4
+ describe("simple hash", () => {
5
+ it("works", () => {
6
+ expect(simpleHash("")).toBe(0);
7
+ expect(simpleHash("hello")).toBe(99162322);
8
+ expect(simpleHash("world")).toBe(113318802);
9
+ });
10
+ });
11
+ //# sourceMappingURL=simple_hash.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple_hash.test.js","sourceRoot":"","sources":["../src/simple_hash.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACf,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skir-internal",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/gepheum/skir-internal#readme",
6
6
  "bugs": {
package/src/casing.ts CHANGED
@@ -1,18 +1,4 @@
1
- import type { Casing, ErrorSink, Token } from "./types.js";
2
-
3
- /** Registers an error if the given token does not match the expected casing. */
4
- export function validate(
5
- name: Token,
6
- expected: "lower_underscore" | "UpperCamel" | "UPPER_UNDERSCORE",
7
- errors: ErrorSink,
8
- ): void {
9
- if (!caseMatches(name.text, expected)) {
10
- errors.push({
11
- token: name,
12
- expected: expected,
13
- });
14
- }
15
- }
1
+ import type { Casing } from "./types.js";
16
2
 
17
3
  export function convertCase(text: string, target: Casing): string {
18
4
  let words: readonly string[];
@@ -37,17 +23,3 @@ export function convertCase(text: string, target: Casing): string {
37
23
  export function capitalize(name: string): string {
38
24
  return name[0]!.toUpperCase() + name.slice(1);
39
25
  }
40
-
41
- export function caseMatches(
42
- name: string,
43
- expected: "lower_underscore" | "UpperCamel" | "UPPER_UNDERSCORE",
44
- ): boolean {
45
- switch (expected) {
46
- case "lower_underscore":
47
- return /^[a-z][0-9a-z]*(_[a-z][0-9a-z]*)*$/.test(name);
48
- case "UpperCamel":
49
- return /^[A-Z][0-9A-Za-z]*$/.test(name);
50
- case "UPPER_UNDERSCORE":
51
- return /^[A-Z][0-9A-Z]*(_[A-Z][0-9A-Z]*)*$/.test(name);
52
- }
53
- }
@@ -0,0 +1,32 @@
1
+ export function encodeInt32(i: number): Uint8Array {
2
+ const buffer = new ArrayBuffer(5);
3
+ const dataView = new DataView(buffer);
4
+ let n: number;
5
+ if (i < 0) {
6
+ if (i >= -256) {
7
+ dataView.setUint8(0, 235);
8
+ dataView.setUint8(1, i + 256);
9
+ n = 2;
10
+ } else if (i >= -65536) {
11
+ dataView.setUint8(0, 236);
12
+ dataView.setUint16(1, i + 65536, true);
13
+ n = 3;
14
+ } else {
15
+ dataView.setUint8(0, 237);
16
+ dataView.setInt32(1, i, true);
17
+ n = 5;
18
+ }
19
+ } else if (i < 232) {
20
+ dataView.setUint8(0, i);
21
+ n = 1;
22
+ } else if (i < 65536) {
23
+ dataView.setUint8(0, 232);
24
+ dataView.setUint16(1, i, true);
25
+ n = 3;
26
+ } else {
27
+ dataView.setUint8(0, 233);
28
+ dataView.setInt32(1, i, true);
29
+ n = 5;
30
+ }
31
+ return new Uint8Array(buffer, 0, n);
32
+ }
package/src/index.ts ADDED
@@ -0,0 +1,6 @@
1
+ export type * from "./types.js";
2
+
3
+ export { capitalize, convertCase } from "./casing.js";
4
+ export { encodeInt32 } from "./encoding.js";
5
+ export { unquoteAndUnescape } from "./literals.js";
6
+ export { simpleHash } from "./simple_hash.js";
@@ -0,0 +1,12 @@
1
+ export function unquoteAndUnescape(stringLiteral: string): string {
2
+ const unquoted = stringLiteral.slice(1, -1);
3
+ const parts = unquoted.split("\\\\");
4
+ for (let i = 0; i < parts.length; ++i) {
5
+ const part = parts[i]!.replace(/\\(\r\n|\n|\r)/g, "\\n")
6
+ // Escape unescaped double quotes which can appear in a single-quoted
7
+ // string literal.
8
+ .replace(/(?<=^|[^\\])"/g, '\\"');
9
+ parts[i] = JSON.parse(`"${part}"`);
10
+ }
11
+ return parts.join("\\");
12
+ }
@@ -0,0 +1,12 @@
1
+ /** Returns a uint32 hash of the given string. */
2
+ export function simpleHash(input: string): number {
3
+ // From https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript
4
+ let hash = 0;
5
+ for (let i = 0; i < input.length; i++) {
6
+ const char = input.charCodeAt(i);
7
+ hash = (hash << 5) - hash + char;
8
+ hash |= 0;
9
+ }
10
+ // Signed int32 to unsigned int32.
11
+ return hash >>> 0;
12
+ }