@git.zone/cli 2.13.13 → 2.14.0
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_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/gitzone.cli.js +46 -35
- package/dist_ts/helpers.climode.d.ts +22 -0
- package/dist_ts/helpers.climode.js +158 -0
- package/dist_ts/helpers.smartconfig.d.ts +11 -0
- package/dist_ts/helpers.smartconfig.js +139 -0
- package/dist_ts/mod_commit/index.d.ts +2 -0
- package/dist_ts/mod_commit/index.js +204 -92
- package/dist_ts/mod_config/index.d.ts +7 -2
- package/dist_ts/mod_config/index.js +390 -176
- package/dist_ts/mod_format/classes.formatcontext.d.ts +11 -2
- package/dist_ts/mod_format/classes.formatcontext.js +14 -4
- package/dist_ts/mod_format/formatters/packagejson.formatter.js +1 -67
- package/dist_ts/mod_format/formatters/smartconfig.formatter.d.ts +2 -7
- package/dist_ts/mod_format/formatters/smartconfig.formatter.js +57 -93
- package/dist_ts/mod_format/index.d.ts +4 -1
- package/dist_ts/mod_format/index.js +235 -67
- package/dist_ts/mod_format/mod.plugins.d.ts +1 -2
- package/dist_ts/mod_format/mod.plugins.js +2 -3
- package/dist_ts/mod_services/index.d.ts +2 -0
- package/dist_ts/mod_services/index.js +366 -168
- package/dist_ts/mod_standard/index.d.ts +3 -1
- package/dist_ts/mod_standard/index.js +159 -59
- package/package.json +1 -1
- package/readme.hints.md +25 -32
- package/readme.md +87 -65
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/gitzone.cli.ts +50 -38
- package/ts/helpers.climode.ts +212 -0
- package/ts/helpers.smartconfig.ts +192 -0
- package/ts/mod_commit/index.ts +325 -98
- package/ts/mod_config/index.ts +490 -182
- package/ts/mod_format/classes.formatcontext.ts +20 -3
- package/ts/mod_format/formatters/packagejson.formatter.ts +0 -91
- package/ts/mod_format/formatters/smartconfig.formatter.ts +67 -94
- package/ts/mod_format/index.ts +294 -81
- package/ts/mod_format/mod.plugins.ts +0 -2
- package/ts/mod_services/index.ts +550 -183
- package/ts/mod_standard/index.ts +191 -58
|
@@ -1,19 +1,47 @@
|
|
|
1
|
-
import * as plugins from
|
|
2
|
-
import { Project } from
|
|
3
|
-
import { FormatContext } from
|
|
4
|
-
import { FormatPlanner } from
|
|
5
|
-
import { BaseFormatter } from
|
|
6
|
-
import { logger, setVerboseMode } from
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
1
|
+
import * as plugins from "./mod.plugins.js";
|
|
2
|
+
import { Project } from "../classes.project.js";
|
|
3
|
+
import { FormatContext } from "./classes.formatcontext.js";
|
|
4
|
+
import { FormatPlanner } from "./classes.formatplanner.js";
|
|
5
|
+
import { BaseFormatter } from "./classes.baseformatter.js";
|
|
6
|
+
import { logger, setVerboseMode } from "../gitzone.logging.js";
|
|
7
|
+
import { getCliMode, printJson, runWithSuppressedOutput, } from "../helpers.climode.js";
|
|
8
|
+
import { getCliConfigValue } from "../helpers.smartconfig.js";
|
|
9
|
+
import { CleanupFormatter } from "./formatters/cleanup.formatter.js";
|
|
10
|
+
import { SmartconfigFormatter } from "./formatters/smartconfig.formatter.js";
|
|
11
|
+
import { LicenseFormatter } from "./formatters/license.formatter.js";
|
|
12
|
+
import { PackageJsonFormatter } from "./formatters/packagejson.formatter.js";
|
|
13
|
+
import { TemplatesFormatter } from "./formatters/templates.formatter.js";
|
|
14
|
+
import { GitignoreFormatter } from "./formatters/gitignore.formatter.js";
|
|
15
|
+
import { TsconfigFormatter } from "./formatters/tsconfig.formatter.js";
|
|
16
|
+
import { PrettierFormatter } from "./formatters/prettier.formatter.js";
|
|
17
|
+
import { ReadmeFormatter } from "./formatters/readme.formatter.js";
|
|
18
|
+
import { CopyFormatter } from "./formatters/copy.formatter.js";
|
|
19
|
+
/**
|
|
20
|
+
* Rename npmextra.json or smartconfig.json to .smartconfig.json
|
|
21
|
+
* before any formatter tries to read config.
|
|
22
|
+
*/
|
|
23
|
+
async function migrateConfigFile(allowWrite) {
|
|
24
|
+
const target = ".smartconfig.json";
|
|
25
|
+
const targetExists = await plugins.smartfs.file(target).exists();
|
|
26
|
+
if (targetExists)
|
|
27
|
+
return;
|
|
28
|
+
for (const oldName of ["smartconfig.json", "npmextra.json"]) {
|
|
29
|
+
const exists = await plugins.smartfs.file(oldName).exists();
|
|
30
|
+
if (exists) {
|
|
31
|
+
if (!allowWrite) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const content = (await plugins.smartfs
|
|
35
|
+
.file(oldName)
|
|
36
|
+
.encoding("utf8")
|
|
37
|
+
.read());
|
|
38
|
+
await plugins.smartfs.file(`./${target}`).encoding("utf8").write(content);
|
|
39
|
+
await plugins.smartfs.file(oldName).delete();
|
|
40
|
+
logger.log("info", `Migrated ${oldName} to ${target}`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
17
45
|
// Shared formatter class map used by both run() and runFormatter()
|
|
18
46
|
const formatterMap = {
|
|
19
47
|
cleanup: CleanupFormatter,
|
|
@@ -28,99 +56,173 @@ const formatterMap = {
|
|
|
28
56
|
copy: CopyFormatter,
|
|
29
57
|
};
|
|
30
58
|
// Formatters that don't require projectType to be set
|
|
31
|
-
const formattersNotRequiringProjectType = [
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
const smartconfigInstance = new plugins.smartconfig.Smartconfig();
|
|
41
|
-
const formatConfig = smartconfigInstance.dataFor('@git.zone/cli.format', {
|
|
59
|
+
const formattersNotRequiringProjectType = [
|
|
60
|
+
"smartconfig",
|
|
61
|
+
"prettier",
|
|
62
|
+
"cleanup",
|
|
63
|
+
"packagejson",
|
|
64
|
+
];
|
|
65
|
+
const getFormatConfig = async () => {
|
|
66
|
+
const rawFormatConfig = await getCliConfigValue("format", {});
|
|
67
|
+
return {
|
|
42
68
|
interactive: true,
|
|
43
69
|
showDiffs: false,
|
|
44
70
|
autoApprove: false,
|
|
71
|
+
showStats: true,
|
|
45
72
|
modules: {
|
|
46
73
|
skip: [],
|
|
47
74
|
only: [],
|
|
75
|
+
...(rawFormatConfig.modules || {}),
|
|
48
76
|
},
|
|
77
|
+
...rawFormatConfig,
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
const createActiveFormatters = async (options) => {
|
|
81
|
+
const project = await Project.fromCwd({ requireProjectType: false });
|
|
82
|
+
const context = new FormatContext(options);
|
|
83
|
+
const planner = new FormatPlanner();
|
|
84
|
+
const formatConfig = await getFormatConfig();
|
|
85
|
+
const formatters = Object.entries(formatterMap).map(([, FormatterClass]) => new FormatterClass(context, project));
|
|
86
|
+
const activeFormatters = formatters.filter((formatter) => {
|
|
87
|
+
if (formatConfig.modules.only.length > 0) {
|
|
88
|
+
return formatConfig.modules.only.includes(formatter.name);
|
|
89
|
+
}
|
|
90
|
+
if (formatConfig.modules.skip.includes(formatter.name)) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
return true;
|
|
94
|
+
});
|
|
95
|
+
return {
|
|
96
|
+
context,
|
|
97
|
+
planner,
|
|
98
|
+
formatConfig,
|
|
99
|
+
activeFormatters,
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
const buildFormatPlan = async (options) => {
|
|
103
|
+
const { context, planner, formatConfig, activeFormatters } = await createActiveFormatters({
|
|
104
|
+
interactive: options.interactive,
|
|
105
|
+
jsonOutput: options.jsonOutput,
|
|
49
106
|
});
|
|
50
|
-
const
|
|
107
|
+
const plan = options.fromPlan
|
|
108
|
+
? JSON.parse((await plugins.smartfs
|
|
109
|
+
.file(options.fromPlan)
|
|
110
|
+
.encoding("utf8")
|
|
111
|
+
.read()))
|
|
112
|
+
: await planner.planFormat(activeFormatters);
|
|
113
|
+
return {
|
|
114
|
+
context,
|
|
115
|
+
planner,
|
|
116
|
+
formatConfig,
|
|
117
|
+
activeFormatters,
|
|
118
|
+
plan,
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
const serializePlan = (plan) => {
|
|
122
|
+
return {
|
|
123
|
+
summary: plan.summary,
|
|
124
|
+
warnings: plan.warnings,
|
|
125
|
+
changes: plan.changes.map((change) => ({
|
|
126
|
+
type: change.type,
|
|
127
|
+
path: change.path,
|
|
128
|
+
module: change.module,
|
|
129
|
+
description: change.description,
|
|
130
|
+
})),
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
export let run = async (options = {}) => {
|
|
134
|
+
const mode = await getCliMode(options);
|
|
135
|
+
const subcommand = options?._?.[1];
|
|
136
|
+
if (mode.help || subcommand === "help") {
|
|
137
|
+
showHelp(mode);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (options.verbose) {
|
|
141
|
+
setVerboseMode(true);
|
|
142
|
+
}
|
|
143
|
+
const shouldWrite = options.write ?? options.dryRun === false;
|
|
144
|
+
const treatAsPlan = subcommand === "plan";
|
|
145
|
+
if (mode.json && shouldWrite) {
|
|
146
|
+
printJson({
|
|
147
|
+
ok: false,
|
|
148
|
+
error: "JSON output is only supported for read-only format planning. Use `gitzone format plan --json` or omit `--json` when applying changes.",
|
|
149
|
+
});
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
// Migrate config file before anything reads it
|
|
153
|
+
await migrateConfigFile(shouldWrite);
|
|
154
|
+
const formatConfig = await getFormatConfig();
|
|
155
|
+
const interactive = options.interactive ?? (mode.interactive && formatConfig.interactive);
|
|
51
156
|
const autoApprove = options.yes ?? formatConfig.autoApprove;
|
|
52
157
|
try {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
.encoding('utf8')
|
|
71
|
-
.read()))
|
|
72
|
-
: await planner.planFormat(activeFormatters);
|
|
158
|
+
const planBuilder = async () => {
|
|
159
|
+
return await buildFormatPlan({
|
|
160
|
+
fromPlan: options.fromPlan,
|
|
161
|
+
interactive,
|
|
162
|
+
jsonOutput: mode.json,
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
if (!mode.json) {
|
|
166
|
+
logger.log("info", "Analyzing project for format operations...");
|
|
167
|
+
}
|
|
168
|
+
const { context, planner, activeFormatters, plan } = mode.json
|
|
169
|
+
? await runWithSuppressedOutput(planBuilder)
|
|
170
|
+
: await planBuilder();
|
|
171
|
+
if (mode.json) {
|
|
172
|
+
printJson(serializePlan(plan));
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
73
175
|
// Display plan
|
|
74
176
|
await planner.displayPlan(plan, options.detailed);
|
|
75
177
|
// Save plan if requested
|
|
76
178
|
if (options.savePlan) {
|
|
77
179
|
await plugins.smartfs
|
|
78
180
|
.file(options.savePlan)
|
|
79
|
-
.encoding(
|
|
181
|
+
.encoding("utf8")
|
|
80
182
|
.write(JSON.stringify(plan, null, 2));
|
|
81
|
-
logger.log(
|
|
183
|
+
logger.log("info", `Plan saved to ${options.savePlan}`);
|
|
82
184
|
}
|
|
83
|
-
if (options.planOnly) {
|
|
185
|
+
if (options.planOnly || treatAsPlan) {
|
|
84
186
|
return;
|
|
85
187
|
}
|
|
86
188
|
// Show diffs if explicitly requested or before interactive write confirmation
|
|
87
189
|
const showDiffs = options.diff || (shouldWrite && interactive && !autoApprove);
|
|
88
190
|
if (showDiffs) {
|
|
89
|
-
logger.log(
|
|
90
|
-
console.log(
|
|
191
|
+
logger.log("info", "Showing file diffs:");
|
|
192
|
+
console.log("");
|
|
91
193
|
for (const formatter of activeFormatters) {
|
|
92
194
|
const checkResult = await formatter.check();
|
|
93
195
|
if (checkResult.hasDiff) {
|
|
94
|
-
logger.log(
|
|
196
|
+
logger.log("info", `[${formatter.name}]`);
|
|
95
197
|
formatter.displayAllDiffs(checkResult);
|
|
96
|
-
console.log(
|
|
198
|
+
console.log("");
|
|
97
199
|
}
|
|
98
200
|
}
|
|
99
201
|
}
|
|
100
202
|
// Dry-run mode (default behavior)
|
|
101
203
|
if (!shouldWrite) {
|
|
102
|
-
logger.log(
|
|
204
|
+
logger.log("info", "Dry-run mode - use --write (-w) to apply changes");
|
|
103
205
|
return;
|
|
104
206
|
}
|
|
105
207
|
// Interactive confirmation
|
|
106
208
|
if (interactive && !autoApprove) {
|
|
107
209
|
const interactInstance = new plugins.smartinteract.SmartInteract();
|
|
108
210
|
const response = await interactInstance.askQuestion({
|
|
109
|
-
type:
|
|
110
|
-
name:
|
|
111
|
-
message:
|
|
211
|
+
type: "confirm",
|
|
212
|
+
name: "proceed",
|
|
213
|
+
message: "Proceed with formatting?",
|
|
112
214
|
default: true,
|
|
113
215
|
});
|
|
114
216
|
if (!response.value) {
|
|
115
|
-
logger.log(
|
|
217
|
+
logger.log("info", "Format operation cancelled by user");
|
|
116
218
|
return;
|
|
117
219
|
}
|
|
118
220
|
}
|
|
119
221
|
// Execute phase
|
|
120
|
-
logger.log(
|
|
222
|
+
logger.log("info", "Executing format operations...");
|
|
121
223
|
await planner.executePlan(plan, activeFormatters, context);
|
|
122
224
|
context.getFormatStats().finish();
|
|
123
|
-
const showStats =
|
|
225
|
+
const showStats = formatConfig.showStats ?? true;
|
|
124
226
|
if (showStats) {
|
|
125
227
|
context.getFormatStats().displayStats();
|
|
126
228
|
}
|
|
@@ -128,10 +230,11 @@ export let run = async (options = {}) => {
|
|
|
128
230
|
const statsPath = `.nogit/format-stats-${Date.now()}.json`;
|
|
129
231
|
await context.getFormatStats().saveReport(statsPath);
|
|
130
232
|
}
|
|
131
|
-
logger.log(
|
|
233
|
+
logger.log("success", "Format operations completed successfully!");
|
|
132
234
|
}
|
|
133
235
|
catch (error) {
|
|
134
|
-
|
|
236
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
237
|
+
logger.log("error", `Format operation failed: ${errorMessage}`);
|
|
135
238
|
throw error;
|
|
136
239
|
}
|
|
137
240
|
};
|
|
@@ -141,7 +244,7 @@ export let run = async (options = {}) => {
|
|
|
141
244
|
export const runFormatter = async (formatterName, options = {}) => {
|
|
142
245
|
const requireProjectType = !formattersNotRequiringProjectType.includes(formatterName);
|
|
143
246
|
const project = await Project.fromCwd({ requireProjectType });
|
|
144
|
-
const context = new FormatContext();
|
|
247
|
+
const context = new FormatContext({ interactive: true, jsonOutput: false });
|
|
145
248
|
const FormatterClass = formatterMap[formatterName];
|
|
146
249
|
if (!FormatterClass) {
|
|
147
250
|
throw new Error(`Unknown formatter: ${formatterName}`);
|
|
@@ -159,7 +262,72 @@ export const runFormatter = async (formatterName, options = {}) => {
|
|
|
159
262
|
await formatter.applyChange(change);
|
|
160
263
|
}
|
|
161
264
|
if (!options.silent) {
|
|
162
|
-
logger.log(
|
|
265
|
+
logger.log("success", `Formatter '${formatterName}' completed`);
|
|
163
266
|
}
|
|
164
267
|
};
|
|
165
|
-
|
|
268
|
+
export function showHelp(mode) {
|
|
269
|
+
if (mode?.json) {
|
|
270
|
+
printJson({
|
|
271
|
+
command: "format",
|
|
272
|
+
usage: "gitzone format [plan] [options]",
|
|
273
|
+
description: "Plans formatting changes by default and applies them only with --write.",
|
|
274
|
+
flags: [
|
|
275
|
+
{ flag: "--write, -w", description: "Apply planned changes" },
|
|
276
|
+
{
|
|
277
|
+
flag: "--yes",
|
|
278
|
+
description: "Skip the interactive confirmation before writing",
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
flag: "--plan-only",
|
|
282
|
+
description: "Show the plan without applying changes",
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
flag: "--save-plan <file>",
|
|
286
|
+
description: "Write the format plan to a file",
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
flag: "--from-plan <file>",
|
|
290
|
+
description: "Load a previously saved plan",
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
flag: "--detailed",
|
|
294
|
+
description: "Show detailed diffs and save stats",
|
|
295
|
+
},
|
|
296
|
+
{ flag: "--verbose", description: "Enable verbose logging" },
|
|
297
|
+
{
|
|
298
|
+
flag: "--diff",
|
|
299
|
+
description: "Show per-file diffs before applying changes",
|
|
300
|
+
},
|
|
301
|
+
{ flag: "--json", description: "Emit a read-only format plan as JSON" },
|
|
302
|
+
],
|
|
303
|
+
examples: [
|
|
304
|
+
"gitzone format",
|
|
305
|
+
"gitzone format plan --json",
|
|
306
|
+
"gitzone format --write --yes",
|
|
307
|
+
],
|
|
308
|
+
});
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
console.log("");
|
|
312
|
+
console.log("Usage: gitzone format [plan] [options]");
|
|
313
|
+
console.log("");
|
|
314
|
+
console.log("Plans formatting changes by default and applies them only with --write.");
|
|
315
|
+
console.log("");
|
|
316
|
+
console.log("Flags:");
|
|
317
|
+
console.log(" --write, -w Apply planned changes");
|
|
318
|
+
console.log(" --yes Skip the interactive confirmation before writing");
|
|
319
|
+
console.log(" --plan-only Show the plan without applying changes");
|
|
320
|
+
console.log(" --save-plan <file> Write the format plan to a file");
|
|
321
|
+
console.log(" --from-plan <file> Load a previously saved plan");
|
|
322
|
+
console.log(" --detailed Show detailed diffs and save stats");
|
|
323
|
+
console.log(" --verbose Enable verbose logging");
|
|
324
|
+
console.log(" --diff Show per-file diffs before applying changes");
|
|
325
|
+
console.log(" --json Emit a read-only format plan as JSON");
|
|
326
|
+
console.log("");
|
|
327
|
+
console.log("Examples:");
|
|
328
|
+
console.log(" gitzone format");
|
|
329
|
+
console.log(" gitzone format plan --json");
|
|
330
|
+
console.log(" gitzone format --write --yes");
|
|
331
|
+
console.log("");
|
|
332
|
+
}
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfZm9ybWF0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0QsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsdUJBQXVCLEdBQ3hCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8s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
|
|
@@ -4,8 +4,7 @@ import * as smartfile from '@push.rocks/smartfile';
|
|
|
4
4
|
import * as smartinteract from '@push.rocks/smartinteract';
|
|
5
5
|
import * as smartlegal from '@push.rocks/smartlegal';
|
|
6
6
|
import * as smartobject from '@push.rocks/smartobject';
|
|
7
|
-
import * as smartnpm from '@push.rocks/smartnpm';
|
|
8
7
|
import * as smartconfig from '@push.rocks/smartconfig';
|
|
9
8
|
import * as smartdiff from '@push.rocks/smartdiff';
|
|
10
9
|
import * as smartscaf from '@push.rocks/smartscaf';
|
|
11
|
-
export { path, smartfile, smartinteract, smartlegal, smartobject,
|
|
10
|
+
export { path, smartfile, smartinteract, smartlegal, smartobject, smartconfig, smartdiff, smartscaf, };
|
|
@@ -4,9 +4,8 @@ import * as smartfile from '@push.rocks/smartfile';
|
|
|
4
4
|
import * as smartinteract from '@push.rocks/smartinteract';
|
|
5
5
|
import * as smartlegal from '@push.rocks/smartlegal';
|
|
6
6
|
import * as smartobject from '@push.rocks/smartobject';
|
|
7
|
-
import * as smartnpm from '@push.rocks/smartnpm';
|
|
8
7
|
import * as smartconfig from '@push.rocks/smartconfig';
|
|
9
8
|
import * as smartdiff from '@push.rocks/smartdiff';
|
|
10
9
|
import * as smartscaf from '@push.rocks/smartscaf';
|
|
11
|
-
export { path, smartfile, smartinteract, smartlegal, smartobject,
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
export { path, smartfile, smartinteract, smartlegal, smartobject, smartconfig, smartdiff, smartscaf, };
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfZm9ybWF0L21vZC5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBRTlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxLQUFLLGFBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsT0FBTyxFQUNMLElBQUksRUFDSixTQUFTLEVBQ1QsYUFBYSxFQUNiLFVBQVUsRUFDVixXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEdBQ1YsQ0FBQyJ9
|