@prosopo/datasets-fs 0.2.13 → 0.2.15
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/cli/cli.js +0 -1
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/cliCommand.d.ts +1 -1
- package/dist/cli/cliCommand.d.ts.map +1 -1
- package/dist/cli/cliCommand.js +0 -8
- package/dist/cli/cliCommand.js.map +1 -1
- package/dist/cli/cliCommandComposite.d.ts +1 -1
- package/dist/cli/cliCommandComposite.d.ts.map +1 -1
- package/dist/cli/cliCommandComposite.js +0 -2
- package/dist/cli/cliCommandComposite.js.map +1 -1
- package/dist/cli.js +2 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/flatten.d.ts +1 -1
- package/dist/commands/flatten.d.ts.map +1 -1
- package/dist/commands/flatten.js +4 -14
- package/dist/commands/flatten.js.map +1 -1
- package/dist/commands/generate.d.ts +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +2 -13
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/generateV1.d.ts +1 -1
- package/dist/commands/generateV1.d.ts.map +1 -1
- package/dist/commands/generateV1.js +7 -28
- package/dist/commands/generateV1.js.map +1 -1
- package/dist/commands/generateV2.d.ts +1 -1
- package/dist/commands/generateV2.d.ts.map +1 -1
- package/dist/commands/generateV2.js +13 -31
- package/dist/commands/generateV2.js.map +1 -1
- package/dist/commands/get.d.ts +1 -1
- package/dist/commands/get.d.ts.map +1 -1
- package/dist/commands/get.js +2 -4
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/labels.d.ts +1 -1
- package/dist/commands/labels.d.ts.map +1 -1
- package/dist/commands/labels.js +1 -1
- package/dist/commands/labels.js.map +1 -1
- package/dist/commands/relocate.d.ts +1 -1
- package/dist/commands/relocate.d.ts.map +1 -1
- package/dist/commands/relocate.js +3 -5
- package/dist/commands/relocate.js.map +1 -1
- package/dist/commands/resize.d.ts +1 -1
- package/dist/commands/resize.d.ts.map +1 -1
- package/dist/commands/resize.js +5 -17
- package/dist/commands/resize.js.map +1 -1
- package/dist/dummy.js +0 -1
- package/dist/dummy.js.map +1 -1
- package/dist/index.js +0 -13
- package/dist/index.js.map +1 -1
- package/dist/tests/lodash.test.d.ts +2 -0
- package/dist/tests/lodash.test.d.ts.map +1 -0
- package/dist/tests/lodash.test.js +26 -0
- package/dist/tests/lodash.test.js.map +1 -0
- package/dist/tests/mocked.test.js +1 -30
- package/dist/tests/mocked.test.js.map +1 -1
- package/dist/tests/utils.js +0 -19
- package/dist/tests/utils.js.map +1 -1
- package/dist/utils/input.d.ts +1 -1
- package/dist/utils/input.d.ts.map +1 -1
- package/dist/utils/input.js +1 -2
- package/dist/utils/input.js.map +1 -1
- package/dist/utils/inputOutput.d.ts +1 -1
- package/dist/utils/inputOutput.d.ts.map +1 -1
- package/dist/utils/inputOutput.js.map +1 -1
- package/dist/utils/output.d.ts +6 -6
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +5 -8
- package/dist/utils/output.js.map +1 -1
- package/package.json +4 -5
- package/src/cli/cliCommand.ts +1 -1
- package/src/cli/cliCommandComposite.ts +1 -1
- package/src/cli.ts +2 -2
- package/src/commands/flatten.ts +4 -3
- package/src/commands/generate.ts +2 -2
- package/src/commands/generateV1.ts +4 -3
- package/src/commands/generateV2.ts +4 -3
- package/src/commands/get.ts +2 -2
- package/src/commands/labels.ts +2 -2
- package/src/commands/relocate.ts +3 -2
- package/src/commands/resize.ts +3 -3
- package/src/tests/lodash.test.ts +40 -0
- package/src/tests/mocked.test.ts +1 -1
- package/src/utils/input.ts +1 -1
- package/src/utils/inputOutput.ts +1 -1
- package/src/utils/output.ts +6 -6
- package/tsconfig.tsbuildinfo +1 -1
package/dist/cli/cli.js
CHANGED
|
@@ -36,7 +36,6 @@ export class Cli extends Loggable {
|
|
|
36
36
|
});
|
|
37
37
|
});
|
|
38
38
|
if (!__classPrivateFieldGet(this, _Cli_commands, "f").find((c) => c.getCommandName() === '$0')) {
|
|
39
|
-
// no default command
|
|
40
39
|
y = y.command('$0', 'default command', (y) => y, (argv) => {
|
|
41
40
|
throw new Error(`no command specified`);
|
|
42
41
|
});
|
package/dist/cli/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,KAAe,MAAM,OAAO,CAAA;AAEnC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;AAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;AAE1D,MAAM,OAAO,GAAI,SAAQ,QAAQ;IAG7B,YAAY,QAAyB;QACjC,KAAK,EAAE,CAAA;QAHX,gCAA0B;QAItB,uBAAA,IAAI,iBAAa,QAAQ,MAAA,CAAA;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAEO,MAAM;QACV,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC/B,MAAM,CAAC,WAAW,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YACxC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;YAC3B,WAAW,EAAE,eAAe;SAC/B,CAAC;aACD,UAAU,CAAC,CAAC,IAAS,EAAE,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC1C,CAAC,EAAE,IAAI,CAAC,CAAA;QACZ,uBAAA,IAAI,qBAAU,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;gBACV,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE;gBACjC,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE;gBAClC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;gBAC7B,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;oBACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;oBACzD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBACtC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC5B,CAAC;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,uBAAA,IAAI,qBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,KAAe,MAAM,OAAO,CAAA;AAEnC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;AAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;AAE1D,MAAM,OAAO,GAAI,SAAQ,QAAQ;IAG7B,YAAY,QAAyB;QACjC,KAAK,EAAE,CAAA;QAHX,gCAA0B;QAItB,uBAAA,IAAI,iBAAa,QAAQ,MAAA,CAAA;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAEO,MAAM;QACV,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC/B,MAAM,CAAC,WAAW,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YACxC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;YAC3B,WAAW,EAAE,eAAe;SAC/B,CAAC;aACD,UAAU,CAAC,CAAC,IAAS,EAAE,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC1C,CAAC,EAAE,IAAI,CAAC,CAAA;QACZ,uBAAA,IAAI,qBAAU,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;gBACV,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE;gBACjC,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE;gBAClC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;gBAC7B,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;oBACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;oBACzD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBACtC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC5B,CAAC;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,uBAAA,IAAI,qBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,EAAE;YAE1D,CAAC,GAAG,CAAC,CAAC,OAAO,CACT,IAAI,EACJ,iBAAiB,EACjB,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,EACd,CAAC,IAAS,EAAE,EAAE;gBACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;YAC3C,CAAC,CACJ,CAAA;SACJ;QACD,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAA;QAC5F,OAAO,CAAC,CAAA;IACZ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAClC,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;CACJ"}
|
package/dist/cli/cliCommand.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliCommand.d.ts","sourceRoot":"","sources":["../../src/cli/cliCommand.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"cliCommand.d.ts","sourceRoot":"","sources":["../../src/cli/cliCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAG/B,8BAAsB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAE,SAAQ,QAAQ;IAE9D,UAAU,IAAI;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACzB;aAKe,YAAY,IAAI,CAAC;IAIpB,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAQzC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAKvB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAKrB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAQ3B,cAAc;aAIL,cAAc,IAAI,MAAM;CAC3C;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA"}
|
package/dist/cli/cliCommand.js
CHANGED
|
@@ -1,32 +1,24 @@
|
|
|
1
1
|
import { Loggable } from '@prosopo/common';
|
|
2
2
|
import { kebabCase } from '@prosopo/util';
|
|
3
3
|
export class CliCommand extends Loggable {
|
|
4
|
-
// get the options for the CLI
|
|
5
4
|
getOptions() {
|
|
6
5
|
return {};
|
|
7
6
|
}
|
|
8
|
-
// parse args using the schema
|
|
9
|
-
// use this when you have an args object but not sure if it's in the right format / contains the correct fields, e.g. args from cmdline
|
|
10
7
|
async parse(args) {
|
|
11
8
|
const argsSchema = this.getArgSchema();
|
|
12
9
|
const parsed = await argsSchema.parse(args);
|
|
13
10
|
this.logger.debug('parsed args:', parsed);
|
|
14
11
|
return parsed;
|
|
15
12
|
}
|
|
16
|
-
// run any checks before the main run function. This function should have no side effects, i.e. not write to disk. It's purely for conducting checks / setting up
|
|
17
13
|
async _check(args) {
|
|
18
14
|
this.logger.debug('runChecks');
|
|
19
15
|
}
|
|
20
|
-
// the main run function. This should be the function that does the work
|
|
21
16
|
async _run(args) {
|
|
22
17
|
this.logger.debug('run');
|
|
23
18
|
}
|
|
24
|
-
// exec is a public facing function that should be called by the CLI. It will run the preRun, run, and postRun functions in order
|
|
25
19
|
async exec(args) {
|
|
26
20
|
this.logger.debug('exec');
|
|
27
|
-
// run any checks
|
|
28
21
|
await this._check(args);
|
|
29
|
-
// then run the command
|
|
30
22
|
await this._run(args);
|
|
31
23
|
}
|
|
32
24
|
getCommandName() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliCommand.js","sourceRoot":"","sources":["../../src/cli/cliCommand.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cliCommand.js","sourceRoot":"","sources":["../../src/cli/cliCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,MAAM,OAAgB,UAAmC,SAAQ,QAAQ;IAE9D,UAAU;QAGb,OAAO,EAAE,CAAA;IACb,CAAC;IAOM,KAAK,CAAC,KAAK,CAAC,IAAa;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACtC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;QACzC,OAAO,MAAM,CAAA;IACjB,CAAC;IAGM,KAAK,CAAC,MAAM,CAAC,IAAgB;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAClC,CAAC;IAGM,KAAK,CAAC,IAAI,CAAC,IAAgB;QAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAGM,KAAK,CAAC,IAAI,CAAC,IAAgB;QAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEzB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAEvB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAEM,cAAc;QACjB,OAAO,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;CAGJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
1
2
|
import { CliCommand, CliCommandAny } from './cliCommand.js';
|
|
2
3
|
import { Options } from 'yargs';
|
|
3
|
-
import { z } from 'zod';
|
|
4
4
|
export declare abstract class CliCommandComposite<T extends z.ZodTypeAny> extends CliCommand<T> {
|
|
5
5
|
#private;
|
|
6
6
|
getCommands(): CliCommandAny[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliCommandComposite.d.ts","sourceRoot":"","sources":["../../src/cli/cliCommandComposite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"cliCommandComposite.d.ts","sourceRoot":"","sources":["../../src/cli/cliCommandComposite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,8BAAsB,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;;IAG5E,WAAW;gBAIN,QAAQ,EAAE,aAAa,EAAE;IAMrB,UAAU,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;IAOxC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAM3D"}
|
|
@@ -8,11 +8,9 @@ export class CliCommandComposite extends CliCommand {
|
|
|
8
8
|
constructor(commands) {
|
|
9
9
|
super();
|
|
10
10
|
_CliCommandComposite_commands.set(this, []);
|
|
11
|
-
// take a copy of the array to avoid leakage
|
|
12
11
|
__classPrivateFieldSet(this, _CliCommandComposite_commands, [...commands], "f");
|
|
13
12
|
}
|
|
14
13
|
getOptions() {
|
|
15
|
-
// merge options in turn from each command. Command order matters, latter commands will overwrite earlier ones
|
|
16
14
|
return __classPrivateFieldGet(this, _CliCommandComposite_commands, "f").reduce((prev, command) => {
|
|
17
15
|
return { ...prev, ...command.getOptions() };
|
|
18
16
|
}, {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliCommandComposite.js","sourceRoot":"","sources":["../../src/cli/cliCommandComposite.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"cliCommandComposite.js","sourceRoot":"","sources":["../../src/cli/cliCommandComposite.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAA;AAG3D,MAAM,OAAgB,mBAA4C,SAAQ,UAAa;IAG5E,WAAW;QACd,OAAO,uBAAA,IAAI,qCAAU,CAAA;IACzB,CAAC;IAED,YAAY,QAAyB;QACjC,KAAK,EAAE,CAAA;QAPX,wCAA6B,EAAE,EAAA;QAS3B,uBAAA,IAAI,iCAAa,CAAC,GAAG,QAAQ,CAAC,MAAA,CAAA;IAClC,CAAC;IAEe,UAAU;QAEtB,OAAO,uBAAA,IAAI,qCAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC3C,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,EAAE,CAAA;QAC/C,CAAC,EAAE,EAAE,CAAC,CAAA;IACV,CAAC;IAEe,IAAI,CAAC,IAAiB;QAClC,OAAO,uBAAA,IAAI,qCAAU,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACjD,MAAM,IAAI,CAAA;YACV,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACzB,CAAC;IAEe,MAAM,CAAC,IAAiB;QACpC,OAAO,uBAAA,IAAI,qCAAU,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACjD,MAAM,IAAI,CAAA;YACV,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACzB,CAAC;CACJ"}
|
package/dist/cli.js
CHANGED
|
@@ -6,7 +6,7 @@ import { Get } from './commands/get.js';
|
|
|
6
6
|
import { Labels } from './commands/labels.js';
|
|
7
7
|
import { Relocate } from './commands/relocate.js';
|
|
8
8
|
import { Resize } from './commands/resize.js';
|
|
9
|
-
import
|
|
9
|
+
import { isMain } from '@prosopo/util';
|
|
10
10
|
const main = async () => {
|
|
11
11
|
const commands = [
|
|
12
12
|
new Flatten(),
|
|
@@ -21,8 +21,7 @@ const main = async () => {
|
|
|
21
21
|
cli.logger.setLogLevel('debug');
|
|
22
22
|
await cli.exec();
|
|
23
23
|
};
|
|
24
|
-
|
|
25
|
-
if (esMain(import.meta)) {
|
|
24
|
+
if (isMain(import.meta.url)) {
|
|
26
25
|
main()
|
|
27
26
|
.then(() => {
|
|
28
27
|
process.exit(0);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACpB,MAAM,QAAQ,GAAoB;QAC9B,IAAI,OAAO,EAAE;QACb,IAAI,UAAU,EAAE;QAChB,IAAI,UAAU,EAAE;QAChB,IAAI,GAAG,EAAE;QACT,IAAI,MAAM,EAAE;QACZ,IAAI,QAAQ,EAAE;QACd,IAAI,MAAM,EAAE;KACf,CAAA;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC7B,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IAC/B,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;AACpB,CAAC,CAAA;AAGD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACzB,IAAI,EAAE;SACD,IAAI,CAAC,GAAG,EAAE;QACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;CACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../src/commands/flatten.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../src/commands/flatten.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,EAAkD,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAQ/G,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;EAErB,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,UAAU,CAAA;AAC9C,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAE1C,qBAAa,OAAQ,SAAQ,qBAAqB,CAAC,cAAc,CAAC;IAC9C,YAAY;;;;;;;;;;;;;;;;IAIZ,cAAc,IAAI,MAAM;IAIxB,UAAU;;;;;;;;;;;;;;IAeJ,IAAI,CAAC,IAAI,EAAE,IAAI;CAgFxC"}
|
package/dist/commands/flatten.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
1
2
|
import { CaptchaItemTypes, DataSchema } from '@prosopo/types';
|
|
2
3
|
import { InputOutputArgsSchema as InputOutputArgsSchema, InputOutputCliCommand } from '../utils/inputOutput.js';
|
|
3
|
-
import { at
|
|
4
|
+
import { at } from '@prosopo/util';
|
|
4
5
|
import { blake2b } from '@noble/hashes/blake2b';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
6
|
+
import { lodash } from '@prosopo/util/lodash';
|
|
7
|
+
import { u8aToHex } from '@polkadot/util/u8a';
|
|
7
8
|
import cliProgress from 'cli-progress';
|
|
8
9
|
import fs from 'fs';
|
|
9
10
|
export const ArgsSchema = InputOutputArgsSchema.extend({
|
|
@@ -35,7 +36,6 @@ export class Flatten extends InputOutputCliCommand {
|
|
|
35
36
|
await super._run(args);
|
|
36
37
|
const dataDir = args.input;
|
|
37
38
|
const outDir = args.output;
|
|
38
|
-
// find the labels (these should be subdirectories of the data directory)
|
|
39
39
|
this.logger.info('reading data');
|
|
40
40
|
const labels = fs
|
|
41
41
|
.readdirSync(dataDir, { withFileTypes: true })
|
|
@@ -43,24 +43,17 @@ export class Flatten extends InputOutputCliCommand {
|
|
|
43
43
|
.map((dirent) => dirent.name)
|
|
44
44
|
.sort();
|
|
45
45
|
const imagesByLabel = labels.map((label) => fs.readdirSync(`${dataDir}/${label}`));
|
|
46
|
-
// create the output directory
|
|
47
46
|
const imageDir = `${outDir}/images`;
|
|
48
47
|
fs.mkdirSync(imageDir, { recursive: true });
|
|
49
48
|
const bar = new cliProgress.SingleBar({}, cliProgress.Presets.shades_classic);
|
|
50
|
-
// for each label
|
|
51
49
|
const items = [];
|
|
52
50
|
bar.start(imagesByLabel.reduce((acc, images) => acc + images.length, 0), 0);
|
|
53
51
|
labels.forEach((label, i) => {
|
|
54
52
|
const images = at(imagesByLabel, i);
|
|
55
|
-
// for each image
|
|
56
53
|
for (const image of images) {
|
|
57
54
|
bar.increment();
|
|
58
|
-
// this.logger.log(`flattening ${label}/${image}`)
|
|
59
|
-
// copy the image to the output directory
|
|
60
55
|
const extension = image.split('.').pop();
|
|
61
|
-
// read file to bytes
|
|
62
56
|
const content = fs.readFileSync(`${dataDir}/${label}/${image}`);
|
|
63
|
-
// hash based on the content of the image
|
|
64
57
|
const hash = blake2b(content);
|
|
65
58
|
const hex = u8aToHex(hash);
|
|
66
59
|
const name = `${hex}.${extension}`;
|
|
@@ -78,7 +71,6 @@ export class Flatten extends InputOutputCliCommand {
|
|
|
78
71
|
}
|
|
79
72
|
fs.copyFileSync(`${dataDir}/${label}/${image}`, `${imageDir}/${name}`);
|
|
80
73
|
const filePath = fs.realpathSync(`${imageDir}/${name}`);
|
|
81
|
-
// add the image to the map file
|
|
82
74
|
const entry = {
|
|
83
75
|
data: filePath,
|
|
84
76
|
type: CaptchaItemTypes.Image,
|
|
@@ -92,10 +84,8 @@ export class Flatten extends InputOutputCliCommand {
|
|
|
92
84
|
const data = {
|
|
93
85
|
items,
|
|
94
86
|
};
|
|
95
|
-
// verify data
|
|
96
87
|
this.logger.info('verifying data');
|
|
97
88
|
DataSchema.parse(data);
|
|
98
|
-
// write map file
|
|
99
89
|
this.logger.info('writing data');
|
|
100
90
|
fs.writeFileSync(`${outDir}/data.json`, JSON.stringify(data, null, 4));
|
|
101
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../src/commands/flatten.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAQ,UAAU,EAAgB,MAAM,gBAAgB,CAAA;AACjF,OAAO,EAAE,qBAAqB,IAAI,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../src/commands/flatten.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="yargs" />
|
|
2
|
+
import * as z from 'zod';
|
|
2
3
|
import { Item, LabelledItem } from '@prosopo/types';
|
|
3
4
|
import { OutputCliCommand } from '../utils/output.js';
|
|
4
|
-
import { z } from 'zod';
|
|
5
5
|
export declare const ArgsSchema: z.ZodObject<{
|
|
6
6
|
output: z.ZodString;
|
|
7
7
|
labels: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":";AAAA,OAAO,EAAc,IAAI,EAAsB,YAAY,EAAyB,MAAM,gBAAgB,CAAA;AAC1G,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAc,IAAI,EAAsB,YAAY,EAAyB,MAAM,gBAAgB,CAAA;AAC1G,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAKvE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUrB,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,UAAU,CAAA;AAC9C,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAE1C,8BAAsB,QAAQ,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAChE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4CJ,MAAM,CAAC,IAAI,EAAE,IAAI;IAoBvC,QAAQ,EAAE,YAAY,EAAE,CAAK;IAC7B,UAAU,EAAE,IAAI,EAAE,CAAK;IACvB,MAAM,EAAE,MAAM,EAAE,CAAK;IACrB,eAAe,SAAK;IACpB,iBAAiB,SAAK;IACtB,aAAa,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAAA;KAAE,CAAK;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAK;IACtB,UAAU,SAAK;IAEf,OAAO,CAAC,QAAQ;IA4BhB,OAAO,CAAC,UAAU;IAeI,IAAI,CAAC,IAAI,EAAE,IAAI;CAWxC;AAED,eAAO,MAAM,eAAe,aACd,YAAY,EAAE,cACZ,IAAI,EAAE,WACT;IACL,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,yBAAyB,CAAC,EAAE,OAAO,CAAA;CACtC,SAMJ,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
1
2
|
import { DataSchema, LabelledDataSchema, LabelsContainerSchema } from '@prosopo/types';
|
|
2
3
|
import { OutputArgsSchema, OutputCliCommand } from '../utils/output.js';
|
|
3
4
|
import { ProsopoEnvError } from '@prosopo/common';
|
|
4
|
-
import { lodash, setSeedGlobal } from '@prosopo/util';
|
|
5
|
-
import { z } from 'zod';
|
|
5
|
+
import { lodash, setSeedGlobal } from '@prosopo/util/lodash';
|
|
6
6
|
import fs from 'fs';
|
|
7
7
|
export const ArgsSchema = OutputArgsSchema.extend({
|
|
8
8
|
labels: z.string().optional(),
|
|
@@ -70,7 +70,6 @@ export class Generate extends OutputCliCommand {
|
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
async _check(args) {
|
|
73
|
-
// if specified, check files exist
|
|
74
73
|
const labelledMapFile = args.labelled;
|
|
75
74
|
if (labelledMapFile && !fs.existsSync(labelledMapFile)) {
|
|
76
75
|
throw new ProsopoEnvError(new Error(`labelled map file does not exist: ${labelledMapFile}`), 'FS.FILE_NOT_FOUND');
|
|
@@ -85,19 +84,16 @@ export class Generate extends OutputCliCommand {
|
|
|
85
84
|
loadData(args) {
|
|
86
85
|
const allowDuplicatesLabelled = args.allowDuplicatesLabelled || args.allowDuplicates || false;
|
|
87
86
|
const allowDuplicatesUnlabelled = args.allowDuplicatesUnlabelled || args.allowDuplicates || false;
|
|
88
|
-
// load the map to get the labelled and unlabelled data
|
|
89
87
|
this.labelled = this.labelledMapFile
|
|
90
88
|
? LabelledDataSchema.parse(JSON.parse(fs.readFileSync(this.labelledMapFile, 'utf8'))).items
|
|
91
89
|
: [];
|
|
92
90
|
this.unlabelled = this.unlabelledMapFile
|
|
93
91
|
? DataSchema.parse(JSON.parse(fs.readFileSync(this.unlabelledMapFile, 'utf8'))).items
|
|
94
92
|
: [];
|
|
95
|
-
// check for duplicates
|
|
96
93
|
checkDuplicates(this.labelled, this.unlabelled, {
|
|
97
94
|
allowDuplicatesLabelled,
|
|
98
95
|
allowDuplicatesUnlabelled,
|
|
99
96
|
});
|
|
100
|
-
// split the labelled data by label
|
|
101
97
|
this.labelToImages = {};
|
|
102
98
|
for (const entry of this.labelled) {
|
|
103
99
|
const arr = this.labelToImages[entry.label] || [];
|
|
@@ -107,30 +103,23 @@ export class Generate extends OutputCliCommand {
|
|
|
107
103
|
this.targets = Object.keys(this.labelToImages);
|
|
108
104
|
}
|
|
109
105
|
loadLabels(args) {
|
|
110
|
-
// load the labels from file
|
|
111
|
-
// these are the labels that unlabelled data will be assigned to
|
|
112
|
-
// note that these can be different to the labels in the map file as the labelled data is independent of the unlabelled data in terms of labels
|
|
113
106
|
this.labels = [];
|
|
114
107
|
if (args.labels && fs.existsSync(args.labels)) {
|
|
115
108
|
this.labels.push(...[...LabelsContainerSchema.parse(JSON.parse(fs.readFileSync(args.labels, 'utf8'))).labels]);
|
|
116
109
|
}
|
|
117
110
|
else {
|
|
118
|
-
// else default to the labels in the labelled data
|
|
119
111
|
this.labels.push(...[...this.targets]);
|
|
120
112
|
}
|
|
121
113
|
}
|
|
122
114
|
async _run(args) {
|
|
123
115
|
await super._run(args);
|
|
124
|
-
// set the seed
|
|
125
116
|
setSeedGlobal(args.seed || 0);
|
|
126
|
-
// get lodash (with seeded rng)
|
|
127
117
|
const _ = lodash();
|
|
128
118
|
this.loadData(args);
|
|
129
119
|
this.loadLabels(args);
|
|
130
120
|
}
|
|
131
121
|
}
|
|
132
122
|
export const checkDuplicates = (labelled, unlabelled, options) => {
|
|
133
|
-
// check for duplicates
|
|
134
123
|
const all = new Set();
|
|
135
124
|
if (!options.allowDuplicatesLabelled)
|
|
136
125
|
addAllUnique(all, labelled, 'labelled');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,kBAAkB,EAAgB,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAC1G,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateV1.d.ts","sourceRoot":"","sources":["../../src/commands/generateV1.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"generateV1.d.ts","sourceRoot":"","sources":["../../src/commands/generateV1.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,EAAE,QAAQ,EAAoC,MAAM,eAAe,CAAA;AAS1E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKrB,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,UAAU,CAAA;AAC9C,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAE1C,qBAAa,UAAW,SAAQ,QAAQ,CAAC,cAAc,CAAC;IACpC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIZ,cAAc,IAAI,MAAM;IAIxB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqB1B,OAAO,CAAC,cAAc;IA0FtB,OAAO,CAAC,gBAAgB;IA+CF,IAAI,CAAC,IAAI,EAAE,IAAI;CAkCxC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
1
2
|
import { CaptchaTypes, CaptchasContainerSchema } from '@prosopo/types';
|
|
2
3
|
import { Generate, ArgsSchema as GenerateArgsSchema } from './generate.js';
|
|
3
4
|
import { ProsopoEnvError } from '@prosopo/common';
|
|
4
|
-
import { at, get
|
|
5
|
-
import { blake2AsHex } from '@polkadot/util-crypto';
|
|
6
|
-
import {
|
|
5
|
+
import { at, get } from '@prosopo/util';
|
|
6
|
+
import { blake2AsHex } from '@polkadot/util-crypto/blake2';
|
|
7
|
+
import { lodash } from '@prosopo/util/lodash';
|
|
7
8
|
import bcrypt from 'bcrypt';
|
|
8
9
|
import cliProgress from 'cli-progress';
|
|
9
10
|
import fs from 'fs';
|
|
@@ -42,20 +43,15 @@ export class GenerateV1 extends Generate {
|
|
|
42
43
|
}
|
|
43
44
|
generateSolved(solved, size, minCorrect, maxCorrect, bar) {
|
|
44
45
|
const _ = lodash();
|
|
45
|
-
// generate n solved captchas
|
|
46
46
|
const solvedCaptchas = [];
|
|
47
47
|
for (let i = 0; i < solved; i++) {
|
|
48
|
-
// update the current value in your application..
|
|
49
48
|
bar.increment();
|
|
50
49
|
if (this.targets.length <= 1) {
|
|
51
50
|
throw new ProsopoEnvError(new Error(`not enough different labels in labelled data`), 'DATASET.NOT_ENOUGH_LABELS');
|
|
52
51
|
}
|
|
53
|
-
// uniformly sample targets
|
|
54
52
|
const target = at(this.targets, i % this.targets.length);
|
|
55
53
|
const notTargets = this.targets.filter((t) => t !== target);
|
|
56
|
-
// how many correct items should be in the captcha?
|
|
57
54
|
const nCorrect = _.random(minCorrect, maxCorrect);
|
|
58
|
-
// how many incorrect items should be in the captcha?
|
|
59
55
|
const nIncorrect = size - nCorrect;
|
|
60
56
|
const targetItems = get(this.labelToImages, target);
|
|
61
57
|
const notTargetItems = notTargets.map((notTarget) => get(this.labelToImages, notTarget)).flat();
|
|
@@ -65,9 +61,7 @@ export class GenerateV1 extends Generate {
|
|
|
65
61
|
if (notTargetItems.length < nIncorrect) {
|
|
66
62
|
throw new ProsopoEnvError(new Error(`not enough non-matching images for target (${target})`), 'DATASET.NOT_ENOUGH_IMAGES');
|
|
67
63
|
}
|
|
68
|
-
// get the correct items
|
|
69
64
|
const correctItems = _.sampleSize(targetItems, nCorrect);
|
|
70
|
-
// get the incorrect items
|
|
71
65
|
const incorrectItems = _.sampleSize(notTargetItems, nIncorrect);
|
|
72
66
|
let items = [...correctItems, ...incorrectItems];
|
|
73
67
|
let indices = [...Array(items.length).keys()];
|
|
@@ -80,20 +74,18 @@ export class GenerateV1 extends Generate {
|
|
|
80
74
|
type: item.type,
|
|
81
75
|
};
|
|
82
76
|
});
|
|
83
|
-
// the first n indices are the correct items
|
|
84
77
|
const solution = indices
|
|
85
78
|
.map((index, i) => {
|
|
86
79
|
return {
|
|
87
80
|
pre: index,
|
|
88
|
-
post: i,
|
|
81
|
+
post: i,
|
|
89
82
|
};
|
|
90
83
|
})
|
|
91
|
-
.filter((item) => item.pre < correctItems.length)
|
|
84
|
+
.filter((item) => item.pre < correctItems.length)
|
|
92
85
|
.map((item) => {
|
|
93
|
-
return item.post;
|
|
86
|
+
return item.post;
|
|
94
87
|
});
|
|
95
88
|
const salt = blake2AsHex(bcrypt.genSaltSync(this.saltRounds));
|
|
96
|
-
// create the captcha
|
|
97
89
|
const captcha = {
|
|
98
90
|
salt,
|
|
99
91
|
target,
|
|
@@ -106,25 +98,18 @@ export class GenerateV1 extends Generate {
|
|
|
106
98
|
}
|
|
107
99
|
generateUnsolved(unsolved, size, bar) {
|
|
108
100
|
const _ = lodash();
|
|
109
|
-
// this.logger.info(`Generating ${unsolved} unsolved captchas...`)
|
|
110
|
-
// create a new progress bar instance and use shades_classic theme
|
|
111
|
-
// generate n unsolved captchas
|
|
112
101
|
const unsolvedCaptchas = [];
|
|
113
102
|
for (let i = 0; i < unsolved; i++) {
|
|
114
103
|
bar.increment();
|
|
115
104
|
if (this.unlabelled.length <= size) {
|
|
116
105
|
throw new ProsopoEnvError(new Error(`unlabelled map file does not contain enough data`), 'DATASET.NOT_ENOUGH_IMAGES');
|
|
117
106
|
}
|
|
118
|
-
// pick a random label to be the target
|
|
119
|
-
// note that these are potentially different to the labelled data labels
|
|
120
107
|
if (this.labels.length <= 0) {
|
|
121
108
|
throw new ProsopoEnvError(new Error(`no labels found for unlabelled data`), 'DATASET.NOT_ENOUGH_LABELS');
|
|
122
109
|
}
|
|
123
110
|
const index = _.random(0, this.labels.length - 1);
|
|
124
111
|
const target = at(this.labels, index);
|
|
125
|
-
// randomly pick images from the unlabelled data
|
|
126
112
|
const itemSet = _.sampleSize(this.unlabelled, size);
|
|
127
|
-
// shuffle the items
|
|
128
113
|
let items = [...itemSet];
|
|
129
114
|
let indices = [...Array(items.length).keys()];
|
|
130
115
|
indices = _.shuffle(indices);
|
|
@@ -137,7 +122,6 @@ export class GenerateV1 extends Generate {
|
|
|
137
122
|
};
|
|
138
123
|
});
|
|
139
124
|
const salt = blake2AsHex(bcrypt.genSaltSync(this.saltRounds));
|
|
140
|
-
// create the captcha
|
|
141
125
|
const captcha = {
|
|
142
126
|
salt,
|
|
143
127
|
target,
|
|
@@ -150,26 +134,21 @@ export class GenerateV1 extends Generate {
|
|
|
150
134
|
async _run(args) {
|
|
151
135
|
await super._run(args);
|
|
152
136
|
const outFile = args.output;
|
|
153
|
-
// get lodash (with seeded rng)
|
|
154
137
|
const _ = lodash();
|
|
155
138
|
const size = args.size || 9;
|
|
156
139
|
const minCorrect = args.minCorrect || 1;
|
|
157
140
|
const maxCorrect = args.maxCorrect || size - 1;
|
|
158
141
|
const solved = args.solved || 0;
|
|
159
142
|
const unsolved = args.unsolved || 0;
|
|
160
|
-
// create a new progress bar instance and use shades_classic theme
|
|
161
143
|
const bar = new cliProgress.SingleBar({}, cliProgress.Presets.shades_classic);
|
|
162
|
-
// this.logger.info(`Generating ${solved} solved captchas...`)
|
|
163
144
|
bar.start(solved + unsolved, 0);
|
|
164
145
|
const solvedCaptchas = this.generateSolved(solved, size, minCorrect, maxCorrect, bar);
|
|
165
146
|
const unsolvedCaptchas = this.generateUnsolved(unsolved, size, bar);
|
|
166
147
|
bar.stop();
|
|
167
|
-
// write to file
|
|
168
148
|
const output = {
|
|
169
149
|
captchas: [...solvedCaptchas, ...unsolvedCaptchas],
|
|
170
150
|
format: CaptchaTypes.SelectAll,
|
|
171
151
|
};
|
|
172
|
-
// verify the output
|
|
173
152
|
CaptchasContainerSchema.parse(output);
|
|
174
153
|
fs.mkdirSync(args.output.split('/').slice(0, -1).join('/'), { recursive: true });
|
|
175
154
|
fs.writeFileSync(outFile, JSON.stringify(output, null, 4));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateV1.js","sourceRoot":"","sources":["../../src/commands/generateV1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,uBAAuB,EAAqB,MAAM,gBAAgB,CAAA;AACrH,OAAO,EAAE,QAAQ,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"generateV1.js","sourceRoot":"","sources":["../../src/commands/generateV1.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateV2.d.ts","sourceRoot":"","sources":["../../src/commands/generateV2.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"generateV2.d.ts","sourceRoot":"","sources":["../../src/commands/generateV2.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,EAAE,QAAQ,EAAoC,MAAM,eAAe,CAAA;AAS1E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMrB,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,UAAU,CAAA;AAC9C,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAE1C,qBAAa,UAAW,SAAQ,QAAQ,CAAC,cAAc,CAAC;;IAmBpC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIZ,cAAc,IAAI,MAAM;IAIxB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyB1B,OAAO,CAAC,WAAW;IAiDG,IAAI,CAAC,IAAI,EAAE,IAAI;CAiHxC"}
|