jostraca 0.1.4 → 0.1.6
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 +3 -2
- package/dist/jostraca.js +33 -12
- package/dist/jostraca.js.map +1 -1
- package/package.json +2 -2
- package/src/jostraca.ts +48 -13
package/dist/jostraca.d.ts
CHANGED
|
@@ -8,13 +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
|
-
declare function each(subject
|
|
15
|
+
declare function each(subject?: any, apply?: any): any;
|
|
15
16
|
declare function select(key: any, map: Record<string, Function>): any;
|
|
16
17
|
declare function get(root: any, path: string | string[]): any;
|
|
17
18
|
declare function camelify(input: any[] | string): string;
|
|
18
19
|
declare function snakeify(input: any[] | string): string;
|
|
19
20
|
export type { JostracaOptions, Component, };
|
|
20
|
-
export { Jostraca, cmp, each, select, get, camelify, snakeify, Project, Code, File, Folder, };
|
|
21
|
+
export { Jostraca, cmp, each, select, get, camelify, snakeify, Project, Code, File, Folder, Copy, };
|
package/dist/jostraca.js
CHANGED
|
@@ -24,7 +24,7 @@ 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;
|
|
@@ -40,6 +40,7 @@ function Jostraca() {
|
|
|
40
40
|
function generate(opts, root) {
|
|
41
41
|
const fs = opts.fs || Fs;
|
|
42
42
|
GLOBAL.jostraca.run({
|
|
43
|
+
fs,
|
|
43
44
|
content: null,
|
|
44
45
|
}, () => {
|
|
45
46
|
root();
|
|
@@ -117,7 +118,7 @@ function Jostraca() {
|
|
|
117
118
|
},
|
|
118
119
|
},
|
|
119
120
|
none: {
|
|
120
|
-
before(_node,
|
|
121
|
+
before(_node, _ctx) {
|
|
121
122
|
},
|
|
122
123
|
after(_node, _ctx) {
|
|
123
124
|
},
|
|
@@ -141,6 +142,13 @@ const File = cmp(function File(props, children) {
|
|
|
141
142
|
// Code('// FILE END: ' + props.name + '\n')
|
|
142
143
|
});
|
|
143
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;
|
|
144
152
|
const Project = cmp(function Project(props, children) {
|
|
145
153
|
props.ctx$.node.kind = 'project';
|
|
146
154
|
props.ctx$.node.name = props.name;
|
|
@@ -180,24 +188,37 @@ function cmp(component) {
|
|
|
180
188
|
}
|
|
181
189
|
function each(subject, apply) {
|
|
182
190
|
if (null == apply) {
|
|
191
|
+
let out = [];
|
|
183
192
|
if (Array.isArray(subject)) {
|
|
184
193
|
for (let fn of subject) {
|
|
185
|
-
fn();
|
|
194
|
+
out.push('function' === typeof fn ? fn() : fn);
|
|
186
195
|
}
|
|
196
|
+
return out.sort();
|
|
197
|
+
}
|
|
198
|
+
else if (null == subject || 'object' !== typeof subject) {
|
|
199
|
+
return [];
|
|
187
200
|
}
|
|
188
201
|
}
|
|
189
|
-
else {
|
|
190
|
-
|
|
191
|
-
|
|
202
|
+
else if (Array.isArray(subject)) {
|
|
203
|
+
return subject.map(apply);
|
|
204
|
+
}
|
|
205
|
+
if (null == subject || 'object' !== typeof subject) {
|
|
206
|
+
return [];
|
|
207
|
+
}
|
|
208
|
+
const entries = Object.entries(subject).map((n, _) => (_ = typeof n[1],
|
|
209
|
+
(null != n[1] && 'object' === _) ? (n[1].key$ = n[0]) :
|
|
210
|
+
(n[1] = { name: n[0], key$: n[0], val$: n[1] }), n));
|
|
211
|
+
// console.log('ENTRIES', entries)
|
|
212
|
+
if (1 < entries.length) {
|
|
213
|
+
if (entries[0] && entries[0][1] && 'string' === typeof entries[0][1].name) {
|
|
214
|
+
entries.sort((a, b) => a[1].name < b[1].name ? -1 : b[1].name < a[1].name ? 1 : 0);
|
|
192
215
|
}
|
|
193
|
-
else {
|
|
194
|
-
|
|
195
|
-
if (entries[0] && entries[0][1] && 'string' === typeof entries[0][1].name) {
|
|
196
|
-
entries.sort((a, b) => a.name < b.name ? 1 : b.name < a.name ? -1 : 0);
|
|
197
|
-
}
|
|
198
|
-
return entries.map((n, ...args) => apply(n[1], [0], ...args));
|
|
216
|
+
else if (entries[0] && entries[0][1] && 'string' === typeof entries[0][1].key$) {
|
|
217
|
+
entries.sort((a, b) => a[1].key$ < b[1].key$ ? -1 : b[1].key$ < a[1].key$ ? 1 : 0);
|
|
199
218
|
}
|
|
200
219
|
}
|
|
220
|
+
apply = 'function' === typeof apply ? apply : (x) => x;
|
|
221
|
+
return entries.map((n, ...args) => apply(n[1], n[0], ...args));
|
|
201
222
|
}
|
|
202
223
|
function select(key, map) {
|
|
203
224
|
const fn = map && map[key];
|
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.6",
|
|
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.3.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
|
|
@@ -227,30 +238,53 @@ function cmp(component: Function): Component {
|
|
|
227
238
|
}
|
|
228
239
|
|
|
229
240
|
|
|
230
|
-
function each(subject
|
|
241
|
+
function each(subject?: any, apply?: any) {
|
|
231
242
|
if (null == apply) {
|
|
243
|
+
let out = []
|
|
232
244
|
if (Array.isArray(subject)) {
|
|
233
245
|
for (let fn of subject) {
|
|
234
|
-
fn()
|
|
246
|
+
out.push('function' === typeof fn ? fn() : fn)
|
|
235
247
|
}
|
|
248
|
+
return out.sort()
|
|
249
|
+
}
|
|
250
|
+
else if (null == subject || 'object' !== typeof subject) {
|
|
251
|
+
return []
|
|
236
252
|
}
|
|
237
253
|
}
|
|
238
|
-
else {
|
|
239
|
-
|
|
240
|
-
|
|
254
|
+
else if (Array.isArray(subject)) {
|
|
255
|
+
return subject.map(apply)
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
if (null == subject || 'object' !== typeof subject) {
|
|
259
|
+
return []
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
const entries: any = Object.entries(subject).map((n: any[], _: any) =>
|
|
263
|
+
(_ = typeof n[1],
|
|
264
|
+
(null != n[1] && 'object' === _) ? (n[1].key$ = n[0]) :
|
|
265
|
+
(n[1] = { name: n[0], key$: n[0], val$: n[1] }), n))
|
|
266
|
+
|
|
267
|
+
// console.log('ENTRIES', entries)
|
|
268
|
+
|
|
269
|
+
if (1 < entries.length) {
|
|
270
|
+
if (entries[0] && entries[0][1] && 'string' === typeof entries[0][1].name) {
|
|
271
|
+
entries.sort((a: any, b: any) =>
|
|
272
|
+
a[1].name < b[1].name ? -1 : b[1].name < a[1].name ? 1 : 0)
|
|
241
273
|
}
|
|
242
|
-
else {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
entries.sort((a: any, b: any) => a.name < b.name ? 1 : b.name < a.name ? -1 : 0)
|
|
246
|
-
}
|
|
247
|
-
return entries.map((n: any, ...args: any[]) =>
|
|
248
|
-
apply(n[1], [0], ...args))
|
|
274
|
+
else if (entries[0] && entries[0][1] && 'string' === typeof entries[0][1].key$) {
|
|
275
|
+
entries.sort((a: any, b: any) =>
|
|
276
|
+
a[1].key$ < b[1].key$ ? -1 : b[1].key$ < a[1].key$ ? 1 : 0)
|
|
249
277
|
}
|
|
250
278
|
}
|
|
279
|
+
|
|
280
|
+
apply = 'function' === typeof apply ? apply : (x: any) => x
|
|
281
|
+
|
|
282
|
+
return entries.map((n: any, ...args: any[]) =>
|
|
283
|
+
apply(n[1], n[0], ...args))
|
|
251
284
|
}
|
|
252
285
|
|
|
253
286
|
|
|
287
|
+
|
|
254
288
|
function select(key: any, map: Record<string, Function>) {
|
|
255
289
|
const fn = map && map[key]
|
|
256
290
|
return fn ? fn() : undefined
|
|
@@ -307,4 +341,5 @@ export {
|
|
|
307
341
|
Code,
|
|
308
342
|
File,
|
|
309
343
|
Folder,
|
|
344
|
+
Copy,
|
|
310
345
|
}
|