jostraca 0.1.3 → 0.1.5
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/jostraca.d.ts +5 -1
- package/dist/jostraca.js +34 -2
- package/dist/jostraca.js.map +1 -1
- package/package.json +2 -2
- package/src/jostraca.ts +44 -1
package/dist/jostraca.d.ts
CHANGED
|
@@ -8,10 +8,14 @@ declare function Jostraca(): {
|
|
|
8
8
|
};
|
|
9
9
|
declare const Code: Component;
|
|
10
10
|
declare const File: Component;
|
|
11
|
+
declare const Copy: Component;
|
|
11
12
|
declare const Project: Component;
|
|
12
13
|
declare const Folder: Component;
|
|
13
14
|
declare function cmp(component: Function): Component;
|
|
14
15
|
declare function each(subject: any, apply?: any): any;
|
|
15
16
|
declare function select(key: any, map: Record<string, Function>): any;
|
|
17
|
+
declare function get(root: any, path: string | string[]): any;
|
|
18
|
+
declare function camelify(input: any[] | string): string;
|
|
19
|
+
declare function snakeify(input: any[] | string): string;
|
|
16
20
|
export type { JostracaOptions, Component, };
|
|
17
|
-
export { Jostraca, cmp, each, select, Project, Code, File, Folder, };
|
|
21
|
+
export { Jostraca, cmp, each, select, get, camelify, snakeify, Project, Code, File, Folder, Copy, };
|
package/dist/jostraca.js
CHANGED
|
@@ -24,11 +24,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
return result;
|
|
25
25
|
};
|
|
26
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.Folder = exports.File = exports.Code = exports.Project = void 0;
|
|
27
|
+
exports.Copy = exports.Folder = exports.File = exports.Code = exports.Project = void 0;
|
|
28
28
|
exports.Jostraca = Jostraca;
|
|
29
29
|
exports.cmp = cmp;
|
|
30
30
|
exports.each = each;
|
|
31
31
|
exports.select = select;
|
|
32
|
+
exports.get = get;
|
|
33
|
+
exports.camelify = camelify;
|
|
34
|
+
exports.snakeify = snakeify;
|
|
32
35
|
const Fs = __importStar(require("node:fs"));
|
|
33
36
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
34
37
|
const GLOBAL = global;
|
|
@@ -37,6 +40,7 @@ function Jostraca() {
|
|
|
37
40
|
function generate(opts, root) {
|
|
38
41
|
const fs = opts.fs || Fs;
|
|
39
42
|
GLOBAL.jostraca.run({
|
|
43
|
+
fs,
|
|
40
44
|
content: null,
|
|
41
45
|
}, () => {
|
|
42
46
|
root();
|
|
@@ -114,7 +118,7 @@ function Jostraca() {
|
|
|
114
118
|
},
|
|
115
119
|
},
|
|
116
120
|
none: {
|
|
117
|
-
before(_node,
|
|
121
|
+
before(_node, _ctx) {
|
|
118
122
|
},
|
|
119
123
|
after(_node, _ctx) {
|
|
120
124
|
},
|
|
@@ -138,6 +142,13 @@ const File = cmp(function File(props, children) {
|
|
|
138
142
|
// Code('// FILE END: ' + props.name + '\n')
|
|
139
143
|
});
|
|
140
144
|
exports.File = File;
|
|
145
|
+
const Copy = cmp(function Copy(props, children) {
|
|
146
|
+
props.ctx$.node.kind = 'file';
|
|
147
|
+
props.ctx$.node.name = props.name;
|
|
148
|
+
const content = props.ctx$.fs.readFileSync(props.from).toString();
|
|
149
|
+
Code(content);
|
|
150
|
+
});
|
|
151
|
+
exports.Copy = Copy;
|
|
141
152
|
const Project = cmp(function Project(props, children) {
|
|
142
153
|
props.ctx$.node.kind = 'project';
|
|
143
154
|
props.ctx$.node.name = props.name;
|
|
@@ -200,4 +211,25 @@ function select(key, map) {
|
|
|
200
211
|
const fn = map && map[key];
|
|
201
212
|
return fn ? fn() : undefined;
|
|
202
213
|
}
|
|
214
|
+
function get(root, path) {
|
|
215
|
+
path = 'string' === typeof path ? path.split('.') : path;
|
|
216
|
+
let node = root;
|
|
217
|
+
for (let i = 0; i < path.length && null != node; i++) {
|
|
218
|
+
node = node[path[i]];
|
|
219
|
+
}
|
|
220
|
+
return node;
|
|
221
|
+
}
|
|
222
|
+
function camelify(input) {
|
|
223
|
+
let parts = 'string' == typeof input ? input.split('-') : input.map(n => '' + n);
|
|
224
|
+
return parts
|
|
225
|
+
.map((p) => ('' === p ? '' : (p[0].toUpperCase() + p.substring(1))))
|
|
226
|
+
.join('');
|
|
227
|
+
}
|
|
228
|
+
function snakeify(input) {
|
|
229
|
+
let parts = 'string' == typeof input ? input.split(/([A-Z])/) : input.map(n => '' + n);
|
|
230
|
+
return parts
|
|
231
|
+
.filter((p) => '' !== p)
|
|
232
|
+
.reduce((a, n, i) => ((0 === i % 2 ? a.push(n.toLowerCase()) : a[(i / 2) | 0] += n), a), [])
|
|
233
|
+
.join('-');
|
|
234
|
+
}
|
|
203
235
|
//# sourceMappingURL=jostraca.js.map
|
package/dist/jostraca.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jostraca.js","sourceRoot":"","sources":["../src/jostraca.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"jostraca.js","sourceRoot":"","sources":["../src/jostraca.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jostraca",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"main": "dist/jostraca.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/jostraca.d.ts",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
],
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@hapi/code": "^9.0.3",
|
|
37
|
-
"@types/node": "22.
|
|
37
|
+
"@types/node": "22.2.0",
|
|
38
38
|
"esbuild": "^0.23.0",
|
|
39
39
|
"memfs": "^4.11.1",
|
|
40
40
|
"typescript": "^5.5.4"
|
package/src/jostraca.ts
CHANGED
|
@@ -34,6 +34,7 @@ function Jostraca() {
|
|
|
34
34
|
function generate(opts: JostracaOptions, root: Function) {
|
|
35
35
|
const fs = opts.fs || Fs
|
|
36
36
|
GLOBAL.jostraca.run({
|
|
37
|
+
fs,
|
|
37
38
|
content: null,
|
|
38
39
|
}, () => {
|
|
39
40
|
root()
|
|
@@ -143,7 +144,7 @@ function Jostraca() {
|
|
|
143
144
|
|
|
144
145
|
|
|
145
146
|
none: {
|
|
146
|
-
before(_node: Node,
|
|
147
|
+
before(_node: Node, _ctx: any) {
|
|
147
148
|
},
|
|
148
149
|
|
|
149
150
|
after(_node: Node, _ctx: any) {
|
|
@@ -178,6 +179,16 @@ const File = cmp(function File(props: any, children: any) {
|
|
|
178
179
|
})
|
|
179
180
|
|
|
180
181
|
|
|
182
|
+
const Copy = cmp(function Copy(props: any, children: any) {
|
|
183
|
+
props.ctx$.node.kind = 'file'
|
|
184
|
+
props.ctx$.node.name = props.name
|
|
185
|
+
|
|
186
|
+
const content = props.ctx$.fs.readFileSync(props.from).toString()
|
|
187
|
+
Code(content)
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
181
192
|
const Project: Component = cmp(function Project(props: any, children: any) {
|
|
182
193
|
props.ctx$.node.kind = 'project'
|
|
183
194
|
props.ctx$.node.name = props.name
|
|
@@ -258,6 +269,34 @@ function select(key: any, map: Record<string, Function>) {
|
|
|
258
269
|
|
|
259
270
|
|
|
260
271
|
|
|
272
|
+
function get(root: any, path: string | string[]): any {
|
|
273
|
+
path = 'string' === typeof path ? path.split('.') : path
|
|
274
|
+
let node = root
|
|
275
|
+
for (let i = 0; i < path.length && null != node; i++) {
|
|
276
|
+
node = node[path[i]]
|
|
277
|
+
}
|
|
278
|
+
return node
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
function camelify(input: any[] | string) {
|
|
283
|
+
let parts = 'string' == typeof input ? input.split('-') : input.map(n => '' + n)
|
|
284
|
+
return parts
|
|
285
|
+
.map((p: string) => ('' === p ? '' : (p[0].toUpperCase() + p.substring(1))))
|
|
286
|
+
.join('')
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
function snakeify(input: any[] | string) {
|
|
291
|
+
let parts = 'string' == typeof input ? input.split(/([A-Z])/) : input.map(n => '' + n)
|
|
292
|
+
return parts
|
|
293
|
+
.filter((p: string) => '' !== p)
|
|
294
|
+
.reduce((a: any[], n: string, i: number) =>
|
|
295
|
+
((0 === i % 2 ? a.push(n.toLowerCase()) : a[(i / 2) | 0] += n), a), [])
|
|
296
|
+
.join('-')
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
|
|
261
300
|
|
|
262
301
|
export type {
|
|
263
302
|
JostracaOptions,
|
|
@@ -271,9 +310,13 @@ export {
|
|
|
271
310
|
|
|
272
311
|
each,
|
|
273
312
|
select,
|
|
313
|
+
get,
|
|
314
|
+
camelify,
|
|
315
|
+
snakeify,
|
|
274
316
|
|
|
275
317
|
Project,
|
|
276
318
|
Code,
|
|
277
319
|
File,
|
|
278
320
|
Folder,
|
|
321
|
+
Copy,
|
|
279
322
|
}
|