lang-json 1.0.0 → 1.0.2

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 (45) hide show
  1. package/README.md +0 -0
  2. package/babel.config.js +8 -0
  3. package/coverage/clover.xml +6 -0
  4. package/coverage/coverage-final.json +1 -0
  5. package/coverage/lcov-report/base.css +224 -0
  6. package/coverage/lcov-report/block-navigation.js +87 -0
  7. package/coverage/lcov-report/favicon.png +0 -0
  8. package/coverage/lcov-report/index.html +101 -0
  9. package/coverage/lcov-report/prettify.css +1 -0
  10. package/coverage/lcov-report/prettify.js +2 -0
  11. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  12. package/coverage/lcov-report/sorter.js +196 -0
  13. package/dist/esm/src/index.d.ts +18 -0
  14. package/dist/esm/src/index.js +369 -0
  15. package/dist/esm/src/index.js.map +1 -0
  16. package/dist/esm/src/modules/is-this/index.d.ts +136 -0
  17. package/dist/esm/src/modules/is-this/index.js +484 -0
  18. package/dist/esm/src/modules/is-this/index.js.map +1 -0
  19. package/dist/esm/tests/helpers.test.d.ts +1 -0
  20. package/dist/esm/tests/helpers.test.js +284 -0
  21. package/dist/esm/tests/helpers.test.js.map +1 -0
  22. package/dist/esm/tests/index.test.d.ts +1 -0
  23. package/dist/esm/tests/index.test.js +537 -0
  24. package/dist/esm/tests/index.test.js.map +1 -0
  25. package/dist/esm/tests/readme.test.d.ts +1 -0
  26. package/dist/esm/tests/readme.test.js +73 -0
  27. package/dist/esm/tests/readme.test.js.map +1 -0
  28. package/jest.config.ts +212 -0
  29. package/package.json +40 -12
  30. package/src/index.ts +404 -295
  31. package/src/modules/is-this/index.ts +682 -0
  32. package/tests/helpers.test.ts +331 -0
  33. package/tests/index.test.ts +681 -0
  34. package/tests/readme.test.ts +78 -0
  35. package/tsconfig.json +15 -16
  36. package/dist/esm/dump.js +0 -2
  37. package/dist/esm/dump.js.map +0 -1
  38. package/dist/esm/example.d.ts +0 -13
  39. package/dist/esm/example.js +0 -93
  40. package/dist/esm/example.js.map +0 -1
  41. package/dist/esm/index.d.ts +0 -36
  42. package/dist/esm/index.js +0 -326
  43. package/dist/esm/index.js.map +0 -1
  44. package/src/example.ts +0 -116
  45. /package/{dist/esm/dump.d.ts → coverage/lcov.info} +0 -0
@@ -0,0 +1,331 @@
1
+ import LangJSON from "../src/index";
2
+
3
+ describe("LangJSON Helpers", () => {
4
+ const langJson = new LangJSON();
5
+
6
+ // var helper
7
+ test("var", () => {
8
+ const template = "{{#var name}}";
9
+ const result = langJson.applyTemplate(template, { name: "Devansh" });
10
+ expect(result).toBe("Devansh");
11
+ });
12
+
13
+ // manupilating helpers
14
+ test("each", () => {
15
+ const template = { "{{#each items}}": { name: "{{#var item}}" } };
16
+ const result = langJson.applyTemplate(template, {
17
+ items: ["Apple", "Banana", "Grapes"],
18
+ });
19
+ expect(result).toEqual([
20
+ { name: "Apple" },
21
+ { name: "Banana" },
22
+ { name: "Grapes" },
23
+ ]);
24
+ });
25
+
26
+ // manupilating helpers
27
+ test("loop", () => {
28
+ const template = {
29
+ "{{#loop items.length}}": { name: "{{#var items[(var index)]}}" },
30
+ };
31
+ const result = langJson.applyTemplate(template, {
32
+ items: ["Apple", "Banana", "Grapes"],
33
+ });
34
+ expect(result).toEqual([
35
+ { name: "Apple" },
36
+ { name: "Banana" },
37
+ { name: "Grapes" },
38
+ ]);
39
+ });
40
+
41
+ // String Helpers
42
+ test("uppercase", () => {
43
+ const template = "{{#uppercase 'hello'}}";
44
+ const result = langJson.applyTemplate(template, {});
45
+ expect(result).toBe("HELLO");
46
+ });
47
+
48
+ test("lowercase", () => {
49
+ const template = "{{#lowercase 'HELLO'}}";
50
+ const result = langJson.applyTemplate(template, {});
51
+ expect(result).toBe("hello");
52
+ });
53
+
54
+ test("capitalize", () => {
55
+ const template = "{{#capitalize 'hello'}}";
56
+ const result = langJson.applyTemplate(template, {});
57
+ expect(result).toBe("Hello");
58
+ });
59
+
60
+ test("trim", () => {
61
+ const template = "{{#trim ' hello '}}";
62
+ const result = langJson.applyTemplate(template, {});
63
+ expect(result).toBe("hello");
64
+ });
65
+
66
+ test("concat", () => {
67
+ const template = "{{#concat 'Hello' ' ' 'World'}}";
68
+ const result = langJson.applyTemplate(template, {});
69
+ expect(result).toBe("Hello World");
70
+ });
71
+
72
+ test("replace", () => {
73
+ const template = "{{#replace 'hello world' 'world' 'jest'}}";
74
+ const result = langJson.applyTemplate(template, {});
75
+ expect(result).toBe("hello jest");
76
+ });
77
+
78
+ test("split", () => {
79
+ const template = "{{#split 'a,b,c' ','}}";
80
+ const result = langJson.applyTemplate(template, {});
81
+ expect(result).toEqual(["a", "b", "c"]);
82
+ });
83
+
84
+ test("join", () => {
85
+ const template = "{{#join (split 'a,b,c' ',') '-'}}";
86
+ const result = langJson.applyTemplate(template, {});
87
+ expect(result).toBe("a-b-c");
88
+ });
89
+
90
+ test("contains", () => {
91
+ const template = "{{#contains 'a-nice-string' '-'}}";
92
+ const result = langJson.applyTemplate(template, {});
93
+ expect(result).toBe(true);
94
+ });
95
+
96
+ test("length", () => {
97
+ const template = "{{#length 'a-nice-string'}}";
98
+ const result = langJson.applyTemplate(template, {});
99
+ expect(result).toBe(13);
100
+ });
101
+
102
+ test("startsWith", () => {
103
+ const template = "{{#startsWith 'Hello, World' 'Hello'}}";
104
+ const result = langJson.applyTemplate(template, {});
105
+ expect(result).toBe(true);
106
+ });
107
+
108
+ test("endsWith", () => {
109
+ const template = "{{#endsWith 'Hello, World' 'World'}}";
110
+ const result = langJson.applyTemplate(template, {});
111
+ expect(result).toBe(true);
112
+ });
113
+
114
+ test("reverseString", () => {
115
+ const template = "{{#reverseString 'jest'}}";
116
+ const result = langJson.applyTemplate(template, {});
117
+ expect(result).toBe("tsej");
118
+ });
119
+
120
+ test("repeat", () => {
121
+ const template = "{{#repeat 'jest ' 3}}";
122
+ const result = langJson.applyTemplate(template, {});
123
+ expect(result).toBe("jest jest jest ");
124
+ });
125
+
126
+ // Mathematical Helpers
127
+ test("add", () => {
128
+ const template = "{{#add 1 2}}";
129
+ const result = langJson.applyTemplate(template, {});
130
+ expect(result).toBe(3);
131
+ });
132
+
133
+ test("subtract", () => {
134
+ const template = "{{#subtract 5 3}}";
135
+ const result = langJson.applyTemplate(template, {});
136
+ expect(result).toBe(2);
137
+ });
138
+
139
+ test("multiply", () => {
140
+ const template = "{{#multiply 2 3}}";
141
+ const result = langJson.applyTemplate(template, {});
142
+ expect(result).toBe(6);
143
+ });
144
+
145
+ test("divide", () => {
146
+ const template = "{{#divide 6 3}}";
147
+ const result = langJson.applyTemplate(template, {});
148
+ expect(result).toBe(2);
149
+ });
150
+
151
+ test("modulo", () => {
152
+ const template = "{{#modulo 5 2}}";
153
+ const result = langJson.applyTemplate(template, {});
154
+ expect(result).toBe(1);
155
+ });
156
+
157
+ test("max", () => {
158
+ const template = "{{#max 1 2 3 4}}";
159
+ const result = langJson.applyTemplate(template, {});
160
+ expect(result).toBe(4);
161
+ });
162
+
163
+ test("min", () => {
164
+ const template = "{{#min 1 2 3 4}}";
165
+ const result = langJson.applyTemplate(template, {});
166
+ expect(result).toBe(1);
167
+ });
168
+
169
+ test("round", () => {
170
+ const template = "{{#round 4.7}}";
171
+ const result = langJson.applyTemplate(template, {});
172
+ expect(result).toBe(5);
173
+ });
174
+
175
+ test("floor", () => {
176
+ const template = "{{#floor 4.7}}";
177
+ const result = langJson.applyTemplate(template, {});
178
+ expect(result).toBe(4);
179
+ });
180
+
181
+ test("ceil", () => {
182
+ const template = "{{#ceil 4.1}}";
183
+ const result = langJson.applyTemplate(template, {});
184
+ expect(result).toBe(5);
185
+ });
186
+
187
+ // Logical Helpers
188
+ test("if", () => {
189
+ const template = "{{#if true 'yes' 'no'}}";
190
+ const result = langJson.applyTemplate(template, {});
191
+ expect(result).toBe("yes");
192
+ });
193
+
194
+ test("and", () => {
195
+ const template = "{{#and true true}}";
196
+ const result = langJson.applyTemplate(template, {});
197
+ expect(result).toBe(true);
198
+ });
199
+
200
+ test("or", () => {
201
+ const template = "{{#or false true}}";
202
+ const result = langJson.applyTemplate(template, {});
203
+ expect(result).toBe(true);
204
+ });
205
+
206
+ test("not", () => {
207
+ const template = "{{#not false}}";
208
+ const result = langJson.applyTemplate(template, {});
209
+ expect(result).toBe(true);
210
+ });
211
+
212
+ // Date Helpers
213
+ test("getCurrentDate", () => {
214
+ const template = "{{#getCurrentDate}}";
215
+ const result = langJson.applyTemplate(template, {});
216
+ const currentDate = new Date().toISOString().split("T")[0];
217
+ expect(result).toBe(currentDate);
218
+ });
219
+
220
+ test("getCurrentTime", () => {
221
+ const template = "{{#getCurrentTime}}";
222
+ const result = langJson.applyTemplate(template, {});
223
+ const currentTime = new Date().toLocaleTimeString();
224
+ expect(result).toBe(currentTime);
225
+ });
226
+
227
+ // Array Helpers
228
+ test("arrayLength", () => {
229
+ const template = "{{#arrayLength (split '1,2,3' ',')}}";
230
+ const result = langJson.applyTemplate(template, {});
231
+ expect(result).toBe(3);
232
+ });
233
+
234
+ test("arrayIncludes", () => {
235
+ const template = "{{#arrayIncludes (split '1,2,3' ',') '2'}}";
236
+ const result = langJson.applyTemplate(template, {});
237
+ expect(result).toBe(true);
238
+ });
239
+
240
+ test("arrayJoin", () => {
241
+ const template = "{{#arrayJoin (split '1,2,3' ',') '-'}}";
242
+ const result = langJson.applyTemplate(template, {});
243
+ expect(result).toBe("1-2-3");
244
+ });
245
+
246
+ test("uniqueArray", () => {
247
+ const template = "{{#uniqueArray (split '1,1,2,3' ',')}}";
248
+ const result = langJson.applyTemplate(template, {});
249
+ expect(result).toEqual(["1", "2", "3"]);
250
+ });
251
+
252
+ // Object Helpers
253
+ test("objectKeys", () => {
254
+ const template = "{{#objectKeys data}}";
255
+ const result = langJson.applyTemplate(template, {
256
+ data: { a: 1, b: 2 },
257
+ });
258
+ expect(result).toEqual(["a", "b"]);
259
+ });
260
+
261
+ test("objectValues", () => {
262
+ const template = "{{#objectValues data}}";
263
+ const result = langJson.applyTemplate(template, {
264
+ data: { a: 1, b: 2 },
265
+ });
266
+ expect(result).toEqual([1, 2]);
267
+ });
268
+
269
+ test("mergeObjects", () => {
270
+ const template = "{{#mergeObjects data data2}}";
271
+ const result = langJson.applyTemplate(template, {
272
+ data: { a: 1, b: 2 },
273
+ data2: { c: 3, d: 4 },
274
+ });
275
+ expect(result).toEqual({ a: 1, b: 2, c: 3, d: 4 });
276
+ });
277
+
278
+ // Date Helpers
279
+ test("getCurrentDate", () => {
280
+ const template = "{{#getCurrentDate}}";
281
+ const result = langJson.applyTemplate(template, {});
282
+ const currentDate = new Date().toISOString().split("T")[0];
283
+ expect(result).toBe(currentDate);
284
+ });
285
+
286
+ test("getCurrentTime", () => {
287
+ const template = "{{#getCurrentTime}}";
288
+ const result = langJson.applyTemplate(template, {});
289
+ const currentTime = new Date().toLocaleTimeString();
290
+ expect(result).toBe(currentTime);
291
+ });
292
+
293
+ // Miscellaneous Helpers
294
+ test("jsonStringify", () => {
295
+ const template = "{{#jsonStringify data}}";
296
+ const result = langJson.applyTemplate(template, {
297
+ data: { a: 1, b: 2 },
298
+ });
299
+ expect(result).toBe('{"a":1,"b":2}');
300
+ });
301
+
302
+ test("deepEqual", () => {
303
+ const template = "{{#deepEqual data data2}}";
304
+ const result = langJson.applyTemplate(template, {
305
+ data: { a: 1 },
306
+ data2: { a: 1 },
307
+ });
308
+ expect(result).toBe(true);
309
+ });
310
+
311
+ test("delay", async () => {
312
+ const template = "{{#delay 100}}";
313
+ const start = Date.now();
314
+ await langJson.applyTemplate(template, {});
315
+ const end = Date.now();
316
+ expect(end - start).toBeGreaterThanOrEqual(100);
317
+ });
318
+
319
+ // Additional Helpers
320
+ test("camelToSnake", () => {
321
+ const template = "{{#camelToSnake 'camelCase'}}";
322
+ const result = langJson.applyTemplate(template, {});
323
+ expect(result).toBe("camel_case");
324
+ });
325
+
326
+ test("snakeToCamel", () => {
327
+ const template = "{{#snakeToCamel 'snake_case'}}";
328
+ const result = langJson.applyTemplate(template, {});
329
+ expect(result).toBe("snakeCase");
330
+ });
331
+ });