@git.zone/cli 2.13.15 → 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 -2
- package/dist_ts/mod_format/formatters/smartconfig.formatter.js +46 -39
- package/dist_ts/mod_format/index.d.ts +4 -1
- package/dist_ts/mod_format/index.js +221 -75
- 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 +55 -39
- package/ts/mod_format/index.ts +279 -90
- 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,35 +1,43 @@
|
|
|
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";
|
|
17
19
|
/**
|
|
18
20
|
* Rename npmextra.json or smartconfig.json to .smartconfig.json
|
|
19
21
|
* before any formatter tries to read config.
|
|
20
22
|
*/
|
|
21
|
-
async function migrateConfigFile() {
|
|
22
|
-
const target =
|
|
23
|
+
async function migrateConfigFile(allowWrite) {
|
|
24
|
+
const target = ".smartconfig.json";
|
|
23
25
|
const targetExists = await plugins.smartfs.file(target).exists();
|
|
24
26
|
if (targetExists)
|
|
25
27
|
return;
|
|
26
|
-
for (const oldName of [
|
|
28
|
+
for (const oldName of ["smartconfig.json", "npmextra.json"]) {
|
|
27
29
|
const exists = await plugins.smartfs.file(oldName).exists();
|
|
28
30
|
if (exists) {
|
|
29
|
-
|
|
30
|
-
|
|
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);
|
|
31
39
|
await plugins.smartfs.file(oldName).delete();
|
|
32
|
-
logger.log(
|
|
40
|
+
logger.log("info", `Migrated ${oldName} to ${target}`);
|
|
33
41
|
return;
|
|
34
42
|
}
|
|
35
43
|
}
|
|
@@ -48,101 +56,173 @@ const formatterMap = {
|
|
|
48
56
|
copy: CopyFormatter,
|
|
49
57
|
};
|
|
50
58
|
// Formatters that don't require projectType to be set
|
|
51
|
-
const formattersNotRequiringProjectType = [
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
await
|
|
59
|
-
|
|
60
|
-
const context = new FormatContext();
|
|
61
|
-
const planner = new FormatPlanner();
|
|
62
|
-
const smartconfigInstance = new plugins.smartconfig.Smartconfig();
|
|
63
|
-
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 {
|
|
64
68
|
interactive: true,
|
|
65
69
|
showDiffs: false,
|
|
66
70
|
autoApprove: false,
|
|
71
|
+
showStats: true,
|
|
67
72
|
modules: {
|
|
68
73
|
skip: [],
|
|
69
74
|
only: [],
|
|
75
|
+
...(rawFormatConfig.modules || {}),
|
|
70
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,
|
|
71
106
|
});
|
|
72
|
-
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);
|
|
73
156
|
const autoApprove = options.yes ?? formatConfig.autoApprove;
|
|
74
157
|
try {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
.encoding('utf8')
|
|
93
|
-
.read()))
|
|
94
|
-
: 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
|
+
}
|
|
95
175
|
// Display plan
|
|
96
176
|
await planner.displayPlan(plan, options.detailed);
|
|
97
177
|
// Save plan if requested
|
|
98
178
|
if (options.savePlan) {
|
|
99
179
|
await plugins.smartfs
|
|
100
180
|
.file(options.savePlan)
|
|
101
|
-
.encoding(
|
|
181
|
+
.encoding("utf8")
|
|
102
182
|
.write(JSON.stringify(plan, null, 2));
|
|
103
|
-
logger.log(
|
|
183
|
+
logger.log("info", `Plan saved to ${options.savePlan}`);
|
|
104
184
|
}
|
|
105
|
-
if (options.planOnly) {
|
|
185
|
+
if (options.planOnly || treatAsPlan) {
|
|
106
186
|
return;
|
|
107
187
|
}
|
|
108
188
|
// Show diffs if explicitly requested or before interactive write confirmation
|
|
109
189
|
const showDiffs = options.diff || (shouldWrite && interactive && !autoApprove);
|
|
110
190
|
if (showDiffs) {
|
|
111
|
-
logger.log(
|
|
112
|
-
console.log(
|
|
191
|
+
logger.log("info", "Showing file diffs:");
|
|
192
|
+
console.log("");
|
|
113
193
|
for (const formatter of activeFormatters) {
|
|
114
194
|
const checkResult = await formatter.check();
|
|
115
195
|
if (checkResult.hasDiff) {
|
|
116
|
-
logger.log(
|
|
196
|
+
logger.log("info", `[${formatter.name}]`);
|
|
117
197
|
formatter.displayAllDiffs(checkResult);
|
|
118
|
-
console.log(
|
|
198
|
+
console.log("");
|
|
119
199
|
}
|
|
120
200
|
}
|
|
121
201
|
}
|
|
122
202
|
// Dry-run mode (default behavior)
|
|
123
203
|
if (!shouldWrite) {
|
|
124
|
-
logger.log(
|
|
204
|
+
logger.log("info", "Dry-run mode - use --write (-w) to apply changes");
|
|
125
205
|
return;
|
|
126
206
|
}
|
|
127
207
|
// Interactive confirmation
|
|
128
208
|
if (interactive && !autoApprove) {
|
|
129
209
|
const interactInstance = new plugins.smartinteract.SmartInteract();
|
|
130
210
|
const response = await interactInstance.askQuestion({
|
|
131
|
-
type:
|
|
132
|
-
name:
|
|
133
|
-
message:
|
|
211
|
+
type: "confirm",
|
|
212
|
+
name: "proceed",
|
|
213
|
+
message: "Proceed with formatting?",
|
|
134
214
|
default: true,
|
|
135
215
|
});
|
|
136
216
|
if (!response.value) {
|
|
137
|
-
logger.log(
|
|
217
|
+
logger.log("info", "Format operation cancelled by user");
|
|
138
218
|
return;
|
|
139
219
|
}
|
|
140
220
|
}
|
|
141
221
|
// Execute phase
|
|
142
|
-
logger.log(
|
|
222
|
+
logger.log("info", "Executing format operations...");
|
|
143
223
|
await planner.executePlan(plan, activeFormatters, context);
|
|
144
224
|
context.getFormatStats().finish();
|
|
145
|
-
const showStats =
|
|
225
|
+
const showStats = formatConfig.showStats ?? true;
|
|
146
226
|
if (showStats) {
|
|
147
227
|
context.getFormatStats().displayStats();
|
|
148
228
|
}
|
|
@@ -150,10 +230,11 @@ export let run = async (options = {}) => {
|
|
|
150
230
|
const statsPath = `.nogit/format-stats-${Date.now()}.json`;
|
|
151
231
|
await context.getFormatStats().saveReport(statsPath);
|
|
152
232
|
}
|
|
153
|
-
logger.log(
|
|
233
|
+
logger.log("success", "Format operations completed successfully!");
|
|
154
234
|
}
|
|
155
235
|
catch (error) {
|
|
156
|
-
|
|
236
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
237
|
+
logger.log("error", `Format operation failed: ${errorMessage}`);
|
|
157
238
|
throw error;
|
|
158
239
|
}
|
|
159
240
|
};
|
|
@@ -163,7 +244,7 @@ export let run = async (options = {}) => {
|
|
|
163
244
|
export const runFormatter = async (formatterName, options = {}) => {
|
|
164
245
|
const requireProjectType = !formattersNotRequiringProjectType.includes(formatterName);
|
|
165
246
|
const project = await Project.fromCwd({ requireProjectType });
|
|
166
|
-
const context = new FormatContext();
|
|
247
|
+
const context = new FormatContext({ interactive: true, jsonOutput: false });
|
|
167
248
|
const FormatterClass = formatterMap[formatterName];
|
|
168
249
|
if (!FormatterClass) {
|
|
169
250
|
throw new Error(`Unknown formatter: ${formatterName}`);
|
|
@@ -181,7 +262,72 @@ export const runFormatter = async (formatterName, options = {}) => {
|
|
|
181
262
|
await formatter.applyChange(change);
|
|
182
263
|
}
|
|
183
264
|
if (!options.silent) {
|
|
184
|
-
logger.log(
|
|
265
|
+
logger.log("success", `Formatter '${formatterName}' completed`);
|
|
185
266
|
}
|
|
186
267
|
};
|
|
187
|
-
|
|
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
|