@snowplow/snowtype 0.1.1 → 0.2.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/index.js +35 -10
- package/package.json +14 -8
- package/dist/api/ConsoleAPI.js +0 -60
- package/dist/api/fetchIgluCentralSchema.js +0 -11
- package/dist/api/index.js +0 -18
- package/dist/command-utils/index.js +0 -121
- package/dist/commands/actions/constants.js +0 -53
- package/dist/commands/actions/dispatch.js +0 -30
- package/dist/commands/actions/generate.js +0 -59
- package/dist/commands/actions/index.js +0 -11
- package/dist/commands/actions/init.js +0 -153
- package/dist/commands/actions/patch.js +0 -45
- package/dist/commands/actions/types.js +0 -19
- package/dist/commands/actions/update.js +0 -76
- package/dist/commands/actions/utils/index.js +0 -213
- package/dist/commands/actions/utils/ui.js +0 -110
- package/dist/commands/index.js +0 -92
- package/dist/commands/logger/index.js +0 -43
- package/dist/config/index.js +0 -5
- package/dist/config/schema.js +0 -52
- package/dist/errors/index.js +0 -82
- package/dist/utils/index.js +0 -24
- package/dist/version.js +0 -4
package/dist/commands/index.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.main = void 0;
|
|
27
|
-
const process = __importStar(require("process"));
|
|
28
|
-
const extra_typings_1 = require("@commander-js/extra-typings");
|
|
29
|
-
const actions_1 = require("./actions");
|
|
30
|
-
const utils_1 = require("./actions/utils");
|
|
31
|
-
const version_1 = require("../version");
|
|
32
|
-
async function main() {
|
|
33
|
-
await import("dotenv/config");
|
|
34
|
-
const program = new extra_typings_1.Command();
|
|
35
|
-
program.exitOverride();
|
|
36
|
-
program
|
|
37
|
-
.version(version_1.PKG_VERSION, undefined, "Snowtype CLI version number")
|
|
38
|
-
.name("snowtype")
|
|
39
|
-
.description("The Snowtype CLI is a tool which aims to speed up tracking implementations, provide type safety and inline documentation for developers and ultimately reduce the number of erroneous events.")
|
|
40
|
-
.showHelpAfterError()
|
|
41
|
-
.configureHelp({ showGlobalOptions: true })
|
|
42
|
-
.option("-k, --apiKey <string>", "Snowplow Console API key")
|
|
43
|
-
.option("-v, --verbose", "Enable verbose logging");
|
|
44
|
-
program
|
|
45
|
-
.command("init")
|
|
46
|
-
.description("Initialize the setup of Snowtype code generation in a project. Creates the `snowtype.config.json` file.")
|
|
47
|
-
.option("-i, --organizationId <string>", "organization ID")
|
|
48
|
-
.option("-t, --tracker <string>", "tracker to use")
|
|
49
|
-
.option("-l, --language <string>", "language to use")
|
|
50
|
-
.option("-o, --outpath <string>", "output path")
|
|
51
|
-
.action(actions_1.initAction);
|
|
52
|
-
program
|
|
53
|
-
.command("update")
|
|
54
|
-
.description("Checks for latest version updates in Data Structures and Tracking Scenarios.")
|
|
55
|
-
.option("-y, --yes", "updates all to latest without asking", false)
|
|
56
|
-
.action(actions_1.updateAction);
|
|
57
|
-
// generate
|
|
58
|
-
// - Does the codegen based on snowtype.config.json
|
|
59
|
-
program
|
|
60
|
-
.command("generate")
|
|
61
|
-
.description("Generates tracking code based on configuration on the `snowtype.config.json` file.")
|
|
62
|
-
.action(actions_1.generateAction);
|
|
63
|
-
// patch
|
|
64
|
-
// - options to specify TS ID, DS URI, IgluCentral URI
|
|
65
|
-
// - This will add an entry to the corresponding array in snowtype.config.json
|
|
66
|
-
program
|
|
67
|
-
.command("patch")
|
|
68
|
-
.description("Adds new Data Structures and Tracking Scenarios in the `snowtype.config.json` file.")
|
|
69
|
-
.option("-t, --trackingScenarioIds [value...]", "tracking scenario ID")
|
|
70
|
-
.option("-d, --dataStructures [value...]", "data structure URI")
|
|
71
|
-
.option("-i, --igluCentralSchemas [value...]", "iglu central URI")
|
|
72
|
-
.option("-y, --yes", "updates all to latest without asking", false)
|
|
73
|
-
.action(actions_1.patchAction);
|
|
74
|
-
program.addHelpText("before", (0, utils_1.renderHelp)()).addHelpText("after", `\n`);
|
|
75
|
-
await program.parseAsync(process.argv).catch((err) => {
|
|
76
|
-
handleCommanderError(err);
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
exports.main = main;
|
|
80
|
-
function handleCommanderError(err) {
|
|
81
|
-
if (err instanceof extra_typings_1.CommanderError) {
|
|
82
|
-
const ignoreCodes = [
|
|
83
|
-
'commander.help',
|
|
84
|
-
'commander.version',
|
|
85
|
-
'commander.helpDisplayed'
|
|
86
|
-
];
|
|
87
|
-
if (ignoreCodes.indexOf(err.code) > -1) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
throw err;
|
|
92
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createLogger = void 0;
|
|
4
|
-
const utils_1 = require("../actions/utils");
|
|
5
|
-
function createLogger() {
|
|
6
|
-
const logging = {
|
|
7
|
-
withVerbosity: (verbose) => {
|
|
8
|
-
const logger = {
|
|
9
|
-
success: (msg) => {
|
|
10
|
-
console.log((0, utils_1.renderSuccess)(msg));
|
|
11
|
-
return undefined;
|
|
12
|
-
},
|
|
13
|
-
warn: (msg) => {
|
|
14
|
-
console.log((0, utils_1.renderWarn)(msg));
|
|
15
|
-
return undefined;
|
|
16
|
-
},
|
|
17
|
-
log: (msg) => {
|
|
18
|
-
console.log((0, utils_1.renderLog)(msg));
|
|
19
|
-
return undefined;
|
|
20
|
-
},
|
|
21
|
-
diff: (current, next) => {
|
|
22
|
-
console.log((0, utils_1.renderDiff)(current, next));
|
|
23
|
-
},
|
|
24
|
-
debug: (msg) => {
|
|
25
|
-
if (verbose === true) {
|
|
26
|
-
console.log((0, utils_1.renderDebug)(JSON.stringify(msg)));
|
|
27
|
-
}
|
|
28
|
-
return undefined;
|
|
29
|
-
},
|
|
30
|
-
error: (err) => {
|
|
31
|
-
console.log((0, utils_1.renderErrorMessage)(err.message));
|
|
32
|
-
if (verbose === true) {
|
|
33
|
-
console.log(err);
|
|
34
|
-
}
|
|
35
|
-
return undefined;
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
return logger;
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
return logging;
|
|
42
|
-
}
|
|
43
|
-
exports.createLogger = createLogger;
|
package/dist/config/index.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateConfig = void 0;
|
|
4
|
-
var schema_1 = require("./schema");
|
|
5
|
-
Object.defineProperty(exports, "validateConfig", { enumerable: true, get: function () { return schema_1.validateConfig; } });
|
package/dist/config/schema.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.validateConfig = void 0;
|
|
7
|
-
const joi_1 = __importDefault(require("joi"));
|
|
8
|
-
const errors_1 = require("../errors");
|
|
9
|
-
const IGLU_URL_REGEX = new RegExp("^iglu:[a-zA-Z0-9-_.]+/[a-zA-Z0-9-_]+/[a-zA-Z0-9-_]+/[0-9]+-[0-9]+-[0-9]+$");
|
|
10
|
-
/** Joi schema for performing validation on snowtype.config.json files. */
|
|
11
|
-
const ConfigSchema = joi_1.default.object()
|
|
12
|
-
.required()
|
|
13
|
-
.keys({
|
|
14
|
-
tracker: joi_1.default.string()
|
|
15
|
-
.required()
|
|
16
|
-
.valid("@snowplow/browser-tracker", "@snowplow/javascript-tracker", "@snowplow/node-tracker", "snowplow-android-tracker", "snowplow-ios-tracker", "snowplow-golang-tracker"),
|
|
17
|
-
language: joi_1.default.string()
|
|
18
|
-
.required()
|
|
19
|
-
.valid("typescript", "kotlin", "swift", "javascript", "go"),
|
|
20
|
-
outpath: joi_1.default.string().required(),
|
|
21
|
-
organizationId: joi_1.default.string()
|
|
22
|
-
.when("dataStructures", {
|
|
23
|
-
is: joi_1.default.array().min(1),
|
|
24
|
-
then: joi_1.default.required(),
|
|
25
|
-
otherwise: joi_1.default.optional(),
|
|
26
|
-
})
|
|
27
|
-
.when("trackingScenarioIds", {
|
|
28
|
-
is: joi_1.default.array().min(1),
|
|
29
|
-
then: joi_1.default.required(),
|
|
30
|
-
otherwise: joi_1.default.optional(),
|
|
31
|
-
}),
|
|
32
|
-
igluCentralSchemas: joi_1.default.array()
|
|
33
|
-
.optional()
|
|
34
|
-
.items(joi_1.default.string().regex(IGLU_URL_REGEX)),
|
|
35
|
-
dataStructures: joi_1.default.array()
|
|
36
|
-
.optional()
|
|
37
|
-
.items(joi_1.default.string().regex(IGLU_URL_REGEX)),
|
|
38
|
-
trackingScenarioIds: joi_1.default.array().optional().items(joi_1.default.string()),
|
|
39
|
-
});
|
|
40
|
-
const validateConfig = (rawConfig) => {
|
|
41
|
-
// Validate the provided configuration file using our Joi schema.
|
|
42
|
-
const result = ConfigSchema.validate(rawConfig, {
|
|
43
|
-
abortEarly: false,
|
|
44
|
-
convert: false,
|
|
45
|
-
});
|
|
46
|
-
if (result.error) {
|
|
47
|
-
throw new errors_1.SnowtypeConfigInvalidError(result.error.annotate());
|
|
48
|
-
}
|
|
49
|
-
// We can safely type cast the config, now that is has been validated.
|
|
50
|
-
return rawConfig;
|
|
51
|
-
};
|
|
52
|
-
exports.validateConfig = validateConfig;
|
package/dist/errors/index.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SnowtypeMissingLockError = exports.SnowtypeWriteLockError = exports.SnowtypeAuthError = exports.SnowtypeMissingOptionsError = exports.SnowtypeOptionError = exports.SnowtypeInternalError = exports.SnowtypeConfigInvalidError = exports.SnowtypeConfigMissingError = exports.SnowtypeConfigExistsError = exports.SnowtypeError = void 0;
|
|
4
|
-
const ERROR_CODES = {
|
|
5
|
-
AuthError: 'Authentication failed. Check if your API key and organization ID are correct.',
|
|
6
|
-
ConfigAlreadyExists: `Snowtype config file already exists.`,
|
|
7
|
-
ConfigNotExists: `Snowtype config file does not exist in current directory. Start with running 'init'.`,
|
|
8
|
-
ConfigInvalid: `Snowtype config exists but it is invalid.`,
|
|
9
|
-
InternalError: 'An internal error occured.',
|
|
10
|
-
InvalidOption: 'Invalid option provided.',
|
|
11
|
-
MissingOptions: 'Action called with no options.',
|
|
12
|
-
WriteLockFile: 'Failed writing lock file.',
|
|
13
|
-
MissingLockFile: 'Missing lockfile. You might need to run `snowtype generate` first.'
|
|
14
|
-
};
|
|
15
|
-
const BUG_PROMPT = 'Please report a bug.';
|
|
16
|
-
class SnowtypeError extends Error {
|
|
17
|
-
code;
|
|
18
|
-
constructor(code, message = '') {
|
|
19
|
-
const errMessage = ERROR_CODES[code].concat(message);
|
|
20
|
-
super(errMessage);
|
|
21
|
-
// hide this constructor calls from the stack
|
|
22
|
-
Error.captureStackTrace(this, this.constructor);
|
|
23
|
-
this.name = this.constructor.name;
|
|
24
|
-
this.code = code;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.SnowtypeError = SnowtypeError;
|
|
28
|
-
class SnowtypeConfigExistsError extends SnowtypeError {
|
|
29
|
-
constructor() {
|
|
30
|
-
super('ConfigAlreadyExists');
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
exports.SnowtypeConfigExistsError = SnowtypeConfigExistsError;
|
|
34
|
-
class SnowtypeConfigMissingError extends SnowtypeError {
|
|
35
|
-
constructor() {
|
|
36
|
-
super('ConfigNotExists');
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.SnowtypeConfigMissingError = SnowtypeConfigMissingError;
|
|
40
|
-
class SnowtypeConfigInvalidError extends SnowtypeError {
|
|
41
|
-
constructor(message) {
|
|
42
|
-
super('ConfigInvalid', message);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.SnowtypeConfigInvalidError = SnowtypeConfigInvalidError;
|
|
46
|
-
class SnowtypeInternalError extends SnowtypeError {
|
|
47
|
-
constructor(message) {
|
|
48
|
-
super('InternalError', message.concat(BUG_PROMPT));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
exports.SnowtypeInternalError = SnowtypeInternalError;
|
|
52
|
-
class SnowtypeOptionError extends SnowtypeError {
|
|
53
|
-
constructor(option, value) {
|
|
54
|
-
const msg = `Value ${value} is an invalid ${option}.`;
|
|
55
|
-
super('InvalidOption', msg);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
exports.SnowtypeOptionError = SnowtypeOptionError;
|
|
59
|
-
class SnowtypeMissingOptionsError extends SnowtypeError {
|
|
60
|
-
constructor() {
|
|
61
|
-
super('MissingOptions');
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
exports.SnowtypeMissingOptionsError = SnowtypeMissingOptionsError;
|
|
65
|
-
class SnowtypeAuthError extends SnowtypeError {
|
|
66
|
-
constructor() {
|
|
67
|
-
super('AuthError');
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.SnowtypeAuthError = SnowtypeAuthError;
|
|
71
|
-
class SnowtypeWriteLockError extends SnowtypeError {
|
|
72
|
-
constructor() {
|
|
73
|
-
super('WriteLockFile');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
exports.SnowtypeWriteLockError = SnowtypeWriteLockError;
|
|
77
|
-
class SnowtypeMissingLockError extends SnowtypeError {
|
|
78
|
-
constructor() {
|
|
79
|
-
super('MissingLockFile');
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
exports.SnowtypeMissingLockError = SnowtypeMissingLockError;
|
package/dist/utils/index.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.replaceIgluSchemaPart = exports.splitIgluSchemaUrlParts = exports.hashSHA256 = void 0;
|
|
4
|
-
const js_sha256_1 = require("js-sha256");
|
|
5
|
-
function hashSHA256(content) {
|
|
6
|
-
const hash = js_sha256_1.sha256.create();
|
|
7
|
-
hash.update(content);
|
|
8
|
-
const hashHex = hash.hex();
|
|
9
|
-
return hashHex;
|
|
10
|
-
}
|
|
11
|
-
exports.hashSHA256 = hashSHA256;
|
|
12
|
-
function splitIgluSchemaUrlParts(schema) {
|
|
13
|
-
/* Remove iglu: prefix to allow for it to be either included or not */
|
|
14
|
-
const schemaFormat = schema.replace("iglu:", "");
|
|
15
|
-
const [vendor, name, format, version] = schemaFormat.split("/");
|
|
16
|
-
return { vendor, name, format, version };
|
|
17
|
-
}
|
|
18
|
-
exports.splitIgluSchemaUrlParts = splitIgluSchemaUrlParts;
|
|
19
|
-
function replaceIgluSchemaPart(schema, { vendor, name, format, version }) {
|
|
20
|
-
const schemaFormat = schema.replace("iglu:", "");
|
|
21
|
-
const [initialVendor, initialName, initialFormat, initialVersion] = schemaFormat.split("/");
|
|
22
|
-
return `iglu:${vendor || initialVendor}/${name || initialName}/${format || initialFormat}/${version || initialVersion}`;
|
|
23
|
-
}
|
|
24
|
-
exports.replaceIgluSchemaPart = replaceIgluSchemaPart;
|
package/dist/version.js
DELETED