@shopify/cli-kit 3.6.1 → 3.8.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/CHANGELOG.md +26 -0
- package/dist/analytics.d.ts +11 -1
- package/dist/analytics.js +33 -23
- package/dist/analytics.js.map +1 -1
- package/dist/api/common.d.ts +1 -1
- package/dist/api/common.js +1 -1
- package/dist/api/common.js.map +1 -1
- package/dist/api/graphql/extension_specifications.js.map +1 -1
- package/dist/api/graphql/functions/app_function_set.d.ts +9 -23
- package/dist/api/graphql/functions/app_function_set.js +18 -27
- package/dist/api/graphql/functions/app_function_set.js.map +1 -1
- package/dist/api/graphql/functions/upload_url_generate.d.ts +12 -0
- package/dist/api/graphql/functions/upload_url_generate.js +11 -0
- package/dist/api/graphql/functions/upload_url_generate.js.map +1 -0
- package/dist/api/graphql/get_urls.d.ts +10 -0
- package/dist/api/graphql/get_urls.js +10 -0
- package/dist/api/graphql/get_urls.js.map +1 -0
- package/dist/api/graphql/index.d.ts +19 -14
- package/dist/api/graphql/index.js +19 -14
- package/dist/api/graphql/index.js.map +1 -1
- package/dist/api/graphql/update_urls.d.ts +2 -2
- package/dist/api/graphql/update_urls.js +2 -2
- package/dist/api/graphql/update_urls.js.map +1 -1
- package/dist/constants.d.ts +3 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/content-tokens.d.ts +44 -0
- package/dist/content-tokens.js +103 -0
- package/dist/content-tokens.js.map +1 -0
- package/dist/environment/local.d.ts +19 -2
- package/dist/environment/local.js +45 -5
- package/dist/environment/local.js.map +1 -1
- package/dist/environment/utilities.d.ts +4 -0
- package/dist/environment/utilities.js +9 -0
- package/dist/environment/utilities.js.map +1 -1
- package/dist/error.d.ts +4 -4
- package/dist/error.js +16 -4
- package/dist/error.js.map +1 -1
- package/dist/file.d.ts +9 -1
- package/dist/file.js +15 -2
- package/dist/file.js.map +1 -1
- package/dist/github.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +180 -12
- package/dist/metadata.js +39 -6
- package/dist/metadata.js.map +1 -1
- package/dist/monorail.d.ts +48 -1
- package/dist/monorail.js +2 -1
- package/dist/monorail.js.map +1 -1
- package/dist/node/archiver.js +1 -0
- package/dist/node/archiver.js.map +1 -1
- package/dist/node/base-command.d.ts +11 -1
- package/dist/node/base-command.js +19 -4
- package/dist/node/base-command.js.map +1 -1
- package/dist/node/cli.js +2 -2
- package/dist/node/cli.js.map +1 -1
- package/dist/node/dot-env.d.ts +9 -0
- package/dist/node/dot-env.js +31 -0
- package/dist/node/dot-env.js.map +1 -1
- package/dist/node/error-handler.d.ts +14 -2
- package/dist/node/error-handler.js +58 -13
- package/dist/node/error-handler.js.map +1 -1
- package/dist/node/hooks/prerun.js +1 -1
- package/dist/node/hooks/prerun.js.map +1 -1
- package/dist/node/node-package-manager.d.ts +12 -17
- package/dist/node/node-package-manager.js +23 -14
- package/dist/node/node-package-manager.js.map +1 -1
- package/dist/node/ruby.js +14 -7
- package/dist/node/ruby.js.map +1 -1
- package/dist/output.d.ts +22 -43
- package/dist/output.js +31 -91
- package/dist/output.js.map +1 -1
- package/dist/path.d.ts +1 -0
- package/dist/plugins/tunnel.d.ts +40 -0
- package/dist/plugins/tunnel.js +11 -0
- package/dist/plugins/tunnel.js.map +1 -0
- package/dist/plugins.d.ts +11 -13
- package/dist/plugins.js +0 -1
- package/dist/plugins.js.map +1 -1
- package/dist/session/authorize.js +1 -1
- package/dist/session/authorize.js.map +1 -1
- package/dist/session/exchange.js +1 -2
- package/dist/session/exchange.js.map +1 -1
- package/dist/session/redirect-listener.js +6 -5
- package/dist/session/redirect-listener.js.map +1 -1
- package/dist/session.js +1 -1
- package/dist/session.js.map +1 -1
- package/dist/store.d.ts +4 -2
- package/dist/store.js +3 -4
- package/dist/store.js.map +1 -1
- package/dist/string.d.ts +1 -0
- package/dist/string.js +3 -0
- package/dist/string.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/typing/deep-required.d.ts +12 -0
- package/dist/typing/deep-required.js +2 -0
- package/dist/typing/deep-required.js.map +1 -0
- package/dist/typing/pick-by-prefix.d.ts +12 -0
- package/dist/typing/pick-by-prefix.js +2 -0
- package/dist/typing/pick-by-prefix.js.map +1 -0
- package/dist/ui/executor.d.ts +7 -0
- package/dist/ui/executor.js +60 -0
- package/dist/ui/executor.js.map +1 -0
- package/dist/ui/inquirer/autocomplete.d.ts +11 -0
- package/dist/ui/inquirer/autocomplete.js +95 -0
- package/dist/ui/inquirer/autocomplete.js.map +1 -0
- package/dist/ui/inquirer/input.d.ts +16 -0
- package/dist/ui/inquirer/input.js +46 -0
- package/dist/ui/inquirer/input.js.map +1 -0
- package/dist/ui/inquirer/password.d.ts +7 -0
- package/dist/ui/inquirer/password.js +8 -0
- package/dist/ui/inquirer/password.js.map +1 -0
- package/dist/ui/inquirer/select.d.ts +14 -0
- package/dist/ui/inquirer/select.js +27 -0
- package/dist/ui/inquirer/select.js.map +1 -0
- package/dist/ui.d.ts +7 -23
- package/dist/ui.js +13 -60
- package/dist/ui.js.map +1 -1
- package/dist/version.d.ts +1 -0
- package/package.json +15 -5
- package/dist/api/graphql/functions/module_upload_url_generate.d.ts +0 -18
- package/dist/api/graphql/functions/module_upload_url_generate.js +0 -17
- package/dist/api/graphql/functions/module_upload_url_generate.js.map +0 -1
- package/dist/ui/autocomplete.d.ts +0 -7
- package/dist/ui/autocomplete.js +0 -43
- package/dist/ui/autocomplete.js.map +0 -1
- package/dist/ui/input.d.ts +0 -7
- package/dist/ui/input.js +0 -48
- package/dist/ui/input.js.map +0 -1
- package/dist/ui/select.d.ts +0 -6
- package/dist/ui/select.js +0 -30
- package/dist/ui/select.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA","sourcesContent":["export {default as constants} from './constants.js'\nexport * as abort from './abort.js'\nexport * as analytics from './analytics.js'\nexport * as api from './api.js'\nexport * as array from './array.js'\nexport * as cli from './cli.js'\nexport * as environment from './environment.js'\nexport * as error from './error.js'\nexport * as fastify from 'fastify'\nexport * as file from './file.js'\nexport * as git from './git.js'\nexport * as github from './github.js'\nexport * as haiku from './haiku.js'\nexport * as http from './http.js'\nexport * as id from './id.js'\nexport * as npm from './npm.js'\nexport * as os from './os.js'\nexport * as output from './output.js'\nexport * as path from './path.js'\nexport * as plugins from './plugins.js'\nexport * as port from './port.js'\nexport * as schema from './schema.js'\nexport * as semver from './semver.js'\nexport * as session from './session.js'\nexport * as store from './store.js'\nexport * as string from './string.js'\nexport * as system from './system.js'\nexport * as template from './template.js'\nexport * as toml from './toml.js'\nexport * as ui from './ui.js'\nexport * as version from './version.js'\nexport * as vscode from './vscode.js'\nexport * as yaml from './yaml.js'\nexport * as outputMocker from './testing/output.js'\nexport * as metadata from './metadata.js'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA","sourcesContent":["export {default as constants} from './constants.js'\nexport * as abort from './abort.js'\nexport * as analytics from './analytics.js'\nexport * as api from './api.js'\nexport * as array from './array.js'\nexport * as cli from './cli.js'\nexport * as environment from './environment.js'\nexport * as error from './error.js'\nexport * as fastify from 'fastify'\nexport * as file from './file.js'\nexport * as git from './git.js'\nexport * as github from './github.js'\nexport * as haiku from './haiku.js'\nexport * as http from './http.js'\nexport * as id from './id.js'\nexport * as npm from './npm.js'\nexport * as os from './os.js'\nexport * as output from './output.js'\nexport * as path from './path.js'\nexport * as plugins from './plugins.js'\nexport * as port from './port.js'\nexport * as schema from './schema.js'\nexport * as semver from './semver.js'\nexport * as session from './session.js'\nexport * as store from './store.js'\nexport * as string from './string.js'\nexport * as system from './system.js'\nexport * as template from './template.js'\nexport * as toml from './toml.js'\nexport * as ui from './ui.js'\nexport * as version from './version.js'\nexport * as vscode from './vscode.js'\nexport * as yaml from './yaml.js'\nexport * as outputMocker from './testing/output.js'\nexport * as metadata from './metadata.js'\nexport * as monorail from './monorail.js'\n"]}
|
package/dist/metadata.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { AnyJson } from './json.js';
|
|
2
|
+
import { PickByPrefix } from './typing/pick-by-prefix.js';
|
|
3
|
+
declare type ProvideMetadata<T> = () => Partial<T> | Promise<Partial<T>>;
|
|
4
|
+
declare type MetadataErrorHandling = 'auto' | 'mute-and-report' | 'bubble';
|
|
2
5
|
export interface RuntimeMetadataManager<TPublic extends AnyJson, TSensitive extends AnyJson> {
|
|
3
6
|
/** Add some public metadata -- this should not contain any PII */
|
|
4
|
-
addPublic: (
|
|
7
|
+
addPublic: (getData: ProvideMetadata<TPublic>, onError?: MetadataErrorHandling) => Promise<void>;
|
|
5
8
|
/** Add some potentially sensitive metadata -- this may include PII, but unnecessary data should never be tracked (this is a good fit for command args for instance) */
|
|
6
|
-
addSensitive: (
|
|
9
|
+
addSensitive: (getData: ProvideMetadata<TSensitive>, onError?: MetadataErrorHandling) => Promise<void>;
|
|
7
10
|
/** Get a snapshot of the tracked public data */
|
|
8
11
|
getAllPublic: () => Partial<TPublic>;
|
|
9
12
|
/** Get a snapshot of the tracked sensitive data */
|
|
@@ -20,32 +23,197 @@ export declare type SensitiveSchema<T> = T extends RuntimeMetadataManager<infer
|
|
|
20
23
|
export declare function createRuntimeMetadataContainer<TPublic extends AnyJson, TSensitive extends AnyJson = {
|
|
21
24
|
[key: string]: never;
|
|
22
25
|
}>(): RuntimeMetadataManager<TPublic, TSensitive>;
|
|
23
|
-
declare const coreData: RuntimeMetadataManager<{
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
declare const coreData: RuntimeMetadataManager<PickByPrefix<import("./typing/deep-required.js").DeepRequired<{
|
|
27
|
+
partner_id?: (number | null) | undefined;
|
|
28
|
+
command: string;
|
|
29
|
+
project_type?: (string | null) | undefined;
|
|
30
|
+
time_start: number;
|
|
31
|
+
time_end: number;
|
|
32
|
+
total_time: number;
|
|
33
|
+
success: boolean;
|
|
34
|
+
api_key?: (string | null) | undefined;
|
|
35
|
+
cli_version: string;
|
|
36
|
+
uname: string;
|
|
37
|
+
ruby_version: string;
|
|
38
|
+
node_version: string;
|
|
39
|
+
is_employee: boolean;
|
|
40
|
+
cmd_all_alias_used?: (string | null) | undefined;
|
|
41
|
+
cmd_all_launcher?: (string | null) | undefined;
|
|
42
|
+
cmd_all_path_override?: (boolean | null) | undefined;
|
|
43
|
+
cmd_all_path_override_hash?: (string | null) | undefined;
|
|
44
|
+
cmd_all_plugin?: (string | null) | undefined;
|
|
45
|
+
cmd_all_topic?: (string | null) | undefined;
|
|
46
|
+
cmd_all_verbose?: (boolean | null) | undefined;
|
|
47
|
+
cmd_extensions_binary_from_source?: (boolean | null) | undefined;
|
|
48
|
+
cmd_scaffold_required_auth?: (boolean | null) | undefined;
|
|
49
|
+
cmd_scaffold_template_custom?: (boolean | null) | undefined;
|
|
50
|
+
cmd_scaffold_template_flavor?: (string | null) | undefined;
|
|
51
|
+
cmd_scaffold_type?: (string | null) | undefined;
|
|
52
|
+
cmd_scaffold_type_category?: (string | null) | undefined;
|
|
53
|
+
cmd_scaffold_type_gated?: (boolean | null) | undefined;
|
|
54
|
+
cmd_scaffold_type_owner?: (string | null) | undefined;
|
|
55
|
+
cmd_scaffold_used_prompts_for_type?: (boolean | null) | undefined;
|
|
56
|
+
app_extensions_any?: (boolean | null) | undefined;
|
|
57
|
+
app_extensions_breakdown?: (string | null) | undefined;
|
|
58
|
+
app_extensions_count?: (number | null) | undefined;
|
|
59
|
+
app_extensions_custom_layout?: (boolean | null) | undefined;
|
|
60
|
+
app_extensions_function_any?: (boolean | null) | undefined;
|
|
61
|
+
app_extensions_function_count?: (number | null) | undefined;
|
|
62
|
+
app_extensions_function_custom_layout?: (boolean | null) | undefined;
|
|
63
|
+
app_extensions_theme_any?: (boolean | null) | undefined;
|
|
64
|
+
app_extensions_theme_count?: (number | null) | undefined;
|
|
65
|
+
app_extensions_theme_custom_layout?: (boolean | null) | undefined;
|
|
66
|
+
app_extensions_ui_any?: (boolean | null) | undefined;
|
|
67
|
+
app_extensions_ui_count?: (number | null) | undefined;
|
|
68
|
+
app_extensions_ui_custom_layout?: (boolean | null) | undefined;
|
|
69
|
+
app_name_hash?: (string | null) | undefined;
|
|
70
|
+
app_path_hash?: (string | null) | undefined;
|
|
71
|
+
app_scopes?: (string | null) | undefined;
|
|
72
|
+
app_web_backend_any?: (boolean | null) | undefined;
|
|
73
|
+
app_web_backend_count?: (number | null) | undefined;
|
|
74
|
+
app_web_custom_layout?: (boolean | null) | undefined;
|
|
75
|
+
app_web_frontend_any?: (boolean | null) | undefined;
|
|
76
|
+
app_web_frontend_count?: (number | null) | undefined;
|
|
77
|
+
env_ci?: (boolean | null) | undefined;
|
|
78
|
+
env_ci_platform?: (string | null) | undefined;
|
|
79
|
+
env_plugin_installed_any_custom?: (boolean | null) | undefined;
|
|
80
|
+
env_plugin_installed_shopify?: (string | null) | undefined;
|
|
81
|
+
env_shell?: (string | null) | undefined;
|
|
82
|
+
env_web_ide?: (string | null) | undefined;
|
|
83
|
+
}>, "cmd_all_", never>, {
|
|
26
84
|
commandStartOptions: {
|
|
27
85
|
startTime: number;
|
|
28
86
|
startCommand: string;
|
|
29
87
|
startArgs: string[];
|
|
30
88
|
};
|
|
31
89
|
}>;
|
|
32
|
-
export declare const getAllPublic: () => Partial<{
|
|
33
|
-
|
|
34
|
-
|
|
90
|
+
export declare const getAllPublic: () => Partial<PickByPrefix<import("./typing/deep-required.js").DeepRequired<{
|
|
91
|
+
partner_id?: (number | null) | undefined;
|
|
92
|
+
command: string;
|
|
93
|
+
project_type?: (string | null) | undefined;
|
|
94
|
+
time_start: number;
|
|
95
|
+
time_end: number;
|
|
96
|
+
total_time: number;
|
|
97
|
+
success: boolean;
|
|
98
|
+
api_key?: (string | null) | undefined;
|
|
99
|
+
cli_version: string;
|
|
100
|
+
uname: string;
|
|
101
|
+
ruby_version: string;
|
|
102
|
+
node_version: string;
|
|
103
|
+
is_employee: boolean;
|
|
104
|
+
cmd_all_alias_used?: (string | null) | undefined;
|
|
105
|
+
cmd_all_launcher?: (string | null) | undefined;
|
|
106
|
+
cmd_all_path_override?: (boolean | null) | undefined;
|
|
107
|
+
cmd_all_path_override_hash?: (string | null) | undefined;
|
|
108
|
+
cmd_all_plugin?: (string | null) | undefined;
|
|
109
|
+
cmd_all_topic?: (string | null) | undefined;
|
|
110
|
+
cmd_all_verbose?: (boolean | null) | undefined;
|
|
111
|
+
cmd_extensions_binary_from_source?: (boolean | null) | undefined;
|
|
112
|
+
cmd_scaffold_required_auth?: (boolean | null) | undefined;
|
|
113
|
+
cmd_scaffold_template_custom?: (boolean | null) | undefined;
|
|
114
|
+
cmd_scaffold_template_flavor?: (string | null) | undefined;
|
|
115
|
+
cmd_scaffold_type?: (string | null) | undefined;
|
|
116
|
+
cmd_scaffold_type_category?: (string | null) | undefined;
|
|
117
|
+
cmd_scaffold_type_gated?: (boolean | null) | undefined;
|
|
118
|
+
cmd_scaffold_type_owner?: (string | null) | undefined;
|
|
119
|
+
cmd_scaffold_used_prompts_for_type?: (boolean | null) | undefined;
|
|
120
|
+
app_extensions_any?: (boolean | null) | undefined;
|
|
121
|
+
app_extensions_breakdown?: (string | null) | undefined;
|
|
122
|
+
app_extensions_count?: (number | null) | undefined;
|
|
123
|
+
app_extensions_custom_layout?: (boolean | null) | undefined;
|
|
124
|
+
app_extensions_function_any?: (boolean | null) | undefined;
|
|
125
|
+
app_extensions_function_count?: (number | null) | undefined;
|
|
126
|
+
app_extensions_function_custom_layout?: (boolean | null) | undefined;
|
|
127
|
+
app_extensions_theme_any?: (boolean | null) | undefined;
|
|
128
|
+
app_extensions_theme_count?: (number | null) | undefined;
|
|
129
|
+
app_extensions_theme_custom_layout?: (boolean | null) | undefined;
|
|
130
|
+
app_extensions_ui_any?: (boolean | null) | undefined;
|
|
131
|
+
app_extensions_ui_count?: (number | null) | undefined;
|
|
132
|
+
app_extensions_ui_custom_layout?: (boolean | null) | undefined;
|
|
133
|
+
app_name_hash?: (string | null) | undefined;
|
|
134
|
+
app_path_hash?: (string | null) | undefined;
|
|
135
|
+
app_scopes?: (string | null) | undefined;
|
|
136
|
+
app_web_backend_any?: (boolean | null) | undefined;
|
|
137
|
+
app_web_backend_count?: (number | null) | undefined;
|
|
138
|
+
app_web_custom_layout?: (boolean | null) | undefined;
|
|
139
|
+
app_web_frontend_any?: (boolean | null) | undefined;
|
|
140
|
+
app_web_frontend_count?: (number | null) | undefined;
|
|
141
|
+
env_ci?: (boolean | null) | undefined;
|
|
142
|
+
env_ci_platform?: (string | null) | undefined;
|
|
143
|
+
env_plugin_installed_any_custom?: (boolean | null) | undefined;
|
|
144
|
+
env_plugin_installed_shopify?: (string | null) | undefined;
|
|
145
|
+
env_shell?: (string | null) | undefined;
|
|
146
|
+
env_web_ide?: (string | null) | undefined;
|
|
147
|
+
}>, "cmd_all_", never>>, getAllSensitive: () => Partial<{
|
|
35
148
|
commandStartOptions: {
|
|
36
149
|
startTime: number;
|
|
37
150
|
startCommand: string;
|
|
38
151
|
startArgs: string[];
|
|
39
152
|
};
|
|
40
|
-
}>, addPublic: (
|
|
41
|
-
|
|
42
|
-
|
|
153
|
+
}>, addPublic: (getData: ProvideMetadata<PickByPrefix<import("./typing/deep-required.js").DeepRequired<{
|
|
154
|
+
partner_id?: (number | null) | undefined;
|
|
155
|
+
command: string;
|
|
156
|
+
project_type?: (string | null) | undefined;
|
|
157
|
+
time_start: number;
|
|
158
|
+
time_end: number;
|
|
159
|
+
total_time: number;
|
|
160
|
+
success: boolean;
|
|
161
|
+
api_key?: (string | null) | undefined;
|
|
162
|
+
cli_version: string;
|
|
163
|
+
uname: string;
|
|
164
|
+
ruby_version: string;
|
|
165
|
+
node_version: string;
|
|
166
|
+
is_employee: boolean;
|
|
167
|
+
cmd_all_alias_used?: (string | null) | undefined;
|
|
168
|
+
cmd_all_launcher?: (string | null) | undefined;
|
|
169
|
+
cmd_all_path_override?: (boolean | null) | undefined;
|
|
170
|
+
cmd_all_path_override_hash?: (string | null) | undefined;
|
|
171
|
+
cmd_all_plugin?: (string | null) | undefined;
|
|
172
|
+
cmd_all_topic?: (string | null) | undefined;
|
|
173
|
+
cmd_all_verbose?: (boolean | null) | undefined;
|
|
174
|
+
cmd_extensions_binary_from_source?: (boolean | null) | undefined;
|
|
175
|
+
cmd_scaffold_required_auth?: (boolean | null) | undefined;
|
|
176
|
+
cmd_scaffold_template_custom?: (boolean | null) | undefined;
|
|
177
|
+
cmd_scaffold_template_flavor?: (string | null) | undefined;
|
|
178
|
+
cmd_scaffold_type?: (string | null) | undefined;
|
|
179
|
+
cmd_scaffold_type_category?: (string | null) | undefined;
|
|
180
|
+
cmd_scaffold_type_gated?: (boolean | null) | undefined;
|
|
181
|
+
cmd_scaffold_type_owner?: (string | null) | undefined;
|
|
182
|
+
cmd_scaffold_used_prompts_for_type?: (boolean | null) | undefined;
|
|
183
|
+
app_extensions_any?: (boolean | null) | undefined;
|
|
184
|
+
app_extensions_breakdown?: (string | null) | undefined;
|
|
185
|
+
app_extensions_count?: (number | null) | undefined;
|
|
186
|
+
app_extensions_custom_layout?: (boolean | null) | undefined;
|
|
187
|
+
app_extensions_function_any?: (boolean | null) | undefined;
|
|
188
|
+
app_extensions_function_count?: (number | null) | undefined;
|
|
189
|
+
app_extensions_function_custom_layout?: (boolean | null) | undefined;
|
|
190
|
+
app_extensions_theme_any?: (boolean | null) | undefined;
|
|
191
|
+
app_extensions_theme_count?: (number | null) | undefined;
|
|
192
|
+
app_extensions_theme_custom_layout?: (boolean | null) | undefined;
|
|
193
|
+
app_extensions_ui_any?: (boolean | null) | undefined;
|
|
194
|
+
app_extensions_ui_count?: (number | null) | undefined;
|
|
195
|
+
app_extensions_ui_custom_layout?: (boolean | null) | undefined;
|
|
196
|
+
app_name_hash?: (string | null) | undefined;
|
|
197
|
+
app_path_hash?: (string | null) | undefined;
|
|
198
|
+
app_scopes?: (string | null) | undefined;
|
|
199
|
+
app_web_backend_any?: (boolean | null) | undefined;
|
|
200
|
+
app_web_backend_count?: (number | null) | undefined;
|
|
201
|
+
app_web_custom_layout?: (boolean | null) | undefined;
|
|
202
|
+
app_web_frontend_any?: (boolean | null) | undefined;
|
|
203
|
+
app_web_frontend_count?: (number | null) | undefined;
|
|
204
|
+
env_ci?: (boolean | null) | undefined;
|
|
205
|
+
env_ci_platform?: (string | null) | undefined;
|
|
206
|
+
env_plugin_installed_any_custom?: (boolean | null) | undefined;
|
|
207
|
+
env_plugin_installed_shopify?: (string | null) | undefined;
|
|
208
|
+
env_shell?: (string | null) | undefined;
|
|
209
|
+
env_web_ide?: (string | null) | undefined;
|
|
210
|
+
}>, "cmd_all_", never>>, onError?: MetadataErrorHandling) => Promise<void>, addSensitive: (getData: ProvideMetadata<{
|
|
43
211
|
commandStartOptions: {
|
|
44
212
|
startTime: number;
|
|
45
213
|
startCommand: string;
|
|
46
214
|
startArgs: string[];
|
|
47
215
|
};
|
|
48
|
-
}
|
|
216
|
+
}>, onError?: MetadataErrorHandling) => Promise<void>;
|
|
49
217
|
export declare type Public = PublicSchema<typeof coreData>;
|
|
50
218
|
export declare type Sensitive = SensitiveSchema<typeof coreData>;
|
|
51
219
|
export {};
|
package/dist/metadata.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
import { isUnitTest } from './environment/local.js';
|
|
2
|
+
import { sendErrorToBugsnag } from './node/error-handler.js';
|
|
3
|
+
function getMetadataErrorHandlingStrategy() {
|
|
4
|
+
if (isUnitTest()) {
|
|
5
|
+
return 'bubble';
|
|
6
|
+
}
|
|
7
|
+
return 'mute-and-report';
|
|
8
|
+
}
|
|
1
9
|
/**
|
|
2
10
|
* Creates a container for metadata collected at runtime.
|
|
3
11
|
*
|
|
@@ -9,19 +17,44 @@ export function createRuntimeMetadataContainer() {
|
|
|
9
17
|
sensitive: {},
|
|
10
18
|
public: {},
|
|
11
19
|
};
|
|
20
|
+
const addPublic = (data) => {
|
|
21
|
+
Object.assign(raw.public, data);
|
|
22
|
+
};
|
|
23
|
+
const addSensitive = (data) => {
|
|
24
|
+
Object.assign(raw.sensitive, data);
|
|
25
|
+
};
|
|
26
|
+
const addMetadata = async (addFn, getFn, onError) => {
|
|
27
|
+
const errorHandling = onError === 'auto' ? getMetadataErrorHandlingStrategy() : onError;
|
|
28
|
+
const getAndSet = async () => {
|
|
29
|
+
const data = await getFn();
|
|
30
|
+
addFn(data);
|
|
31
|
+
};
|
|
32
|
+
if (errorHandling === 'bubble') {
|
|
33
|
+
await getAndSet();
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
try {
|
|
37
|
+
await getAndSet();
|
|
38
|
+
// eslint-disable-next-line no-catch-all/no-catch-all, @typescript-eslint/no-explicit-any
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
await sendErrorToBugsnag(error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
12
45
|
return {
|
|
13
|
-
addPublic: (data) => {
|
|
14
|
-
Object.assign(raw.public, data);
|
|
15
|
-
},
|
|
16
|
-
addSensitive: (data) => {
|
|
17
|
-
Object.assign(raw.sensitive, data);
|
|
18
|
-
},
|
|
19
46
|
getAllPublic: () => {
|
|
20
47
|
return { ...raw.public };
|
|
21
48
|
},
|
|
22
49
|
getAllSensitive: () => {
|
|
23
50
|
return { ...raw.sensitive };
|
|
24
51
|
},
|
|
52
|
+
addPublic: async (getData, onError = 'auto') => {
|
|
53
|
+
return addMetadata(addPublic, getData, onError);
|
|
54
|
+
},
|
|
55
|
+
addSensitive: async (getData, onError = 'auto') => {
|
|
56
|
+
return addMetadata(addSensitive, getData, onError);
|
|
57
|
+
},
|
|
25
58
|
};
|
|
26
59
|
}
|
|
27
60
|
const coreData = createRuntimeMetadataContainer();
|
package/dist/metadata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAA;AAGjD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAA;AAa1D,SAAS,gCAAgC;IACvC,IAAI,UAAU,EAAE,EAAE;QAChB,OAAO,QAAQ,CAAA;KAChB;IACD,OAAO,iBAAiB,CAAA;AAC1B,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B;IAI5C,MAAM,GAAG,GAA+D;QACtE,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,EAAE;KACX,CAAA;IACD,MAAM,SAAS,GAAG,CAAC,IAAsB,EAAE,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC,CAAA;IACD,MAAM,YAAY,GAAG,CAAC,IAAyB,EAAE,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,KAAK,EACvB,KAAiC,EACjC,KAAyB,EACzB,OAA8B,EAC9B,EAAE;QACF,MAAM,aAAa,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;QACvF,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;YAC3B,MAAM,IAAI,GAAG,MAAM,KAAK,EAAE,CAAA;YAC1B,KAAK,CAAC,IAAI,CAAC,CAAA;QACb,CAAC,CAAA;QAED,IAAI,aAAa,KAAK,QAAQ,EAAE;YAC9B,MAAM,SAAS,EAAE,CAAA;SAClB;aAAM;YACL,IAAI;gBACF,MAAM,SAAS,EAAE,CAAA;gBACjB,yFAAyF;aAC1F;YAAC,OAAO,KAAU,EAAE;gBACnB,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAA;aAChC;SACF;IACH,CAAC,CAAA;IAED,OAAO;QACL,YAAY,EAAE,GAAG,EAAE;YACjB,OAAO,EAAC,GAAG,GAAG,CAAC,MAAM,EAAC,CAAA;QACxB,CAAC;QACD,eAAe,EAAE,GAAG,EAAE;YACpB,OAAO,EAAC,GAAG,GAAG,CAAC,SAAS,EAAC,CAAA;QAC3B,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,OAAiC,EAAE,UAAiC,MAAM,EAAE,EAAE;YAC9F,OAAO,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACjD,CAAC;QACD,YAAY,EAAE,KAAK,EAAE,OAAoC,EAAE,UAAiC,MAAM,EAAE,EAAE;YACpG,OAAO,WAAW,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACpD,CAAC;KACF,CAAA;AACH,CAAC;AAKD,MAAM,QAAQ,GAAG,8BAA8B,EAS5C,CAAA;AAEH,MAAM,CAAC,MAAM,EAAC,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAC,GAAG,QAAQ,CAAA","sourcesContent":["import {isUnitTest} from './environment/local.js'\nimport {AnyJson} from './json.js'\nimport {MonorailEventPublic} from './monorail.js'\nimport {sendErrorToBugsnag} from './node/error-handler.js'\nimport {PickByPrefix} from './typing/pick-by-prefix.js'\n\ntype ProvideMetadata<T> = () => Partial<T> | Promise<Partial<T>>\n\ntype MetadataErrorHandling =\n // Mute & report errors in production, throw them whilst testing\n | 'auto'\n // Errors are not reported to the user and do not stop execution, but they are reported to Bugsnag\n | 'mute-and-report'\n // Errors are not caught and will bubble out as normal\n | 'bubble'\n\nfunction getMetadataErrorHandlingStrategy(): 'mute-and-report' | 'bubble' {\n if (isUnitTest()) {\n return 'bubble'\n }\n return 'mute-and-report'\n}\n\nexport interface RuntimeMetadataManager<TPublic extends AnyJson, TSensitive extends AnyJson> {\n /** Add some public metadata -- this should not contain any PII */\n addPublic: (getData: ProvideMetadata<TPublic>, onError?: MetadataErrorHandling) => Promise<void>\n /** Add some potentially sensitive metadata -- this may include PII, but unnecessary data should never be tracked (this is a good fit for command args for instance) */\n addSensitive: (getData: ProvideMetadata<TSensitive>, onError?: MetadataErrorHandling) => Promise<void>\n /** Get a snapshot of the tracked public data */\n getAllPublic: () => Partial<TPublic>\n /** Get a snapshot of the tracked sensitive data */\n getAllSensitive: () => Partial<TSensitive>\n}\n\nexport type PublicSchema<T> = T extends RuntimeMetadataManager<infer TPublic, infer _TSensitive> ? TPublic : never\nexport type SensitiveSchema<T> = T extends RuntimeMetadataManager<infer _TPublic, infer TSensitive> ? TSensitive : never\n\n/**\n * Creates a container for metadata collected at runtime.\n *\n * The container provides async-safe functions for extracting the gathered metadata, and for setting it.\n *\n */\nexport function createRuntimeMetadataContainer<\n TPublic extends AnyJson,\n TSensitive extends AnyJson = {[key: string]: never},\n>(): RuntimeMetadataManager<TPublic, TSensitive> {\n const raw: {sensitive: Partial<TSensitive>; public: Partial<TPublic>} = {\n sensitive: {},\n public: {},\n }\n const addPublic = (data: Partial<TPublic>) => {\n Object.assign(raw.public, data)\n }\n const addSensitive = (data: Partial<TSensitive>) => {\n Object.assign(raw.sensitive, data)\n }\n\n const addMetadata = async <T>(\n addFn: (data: Partial<T>) => void,\n getFn: ProvideMetadata<T>,\n onError: MetadataErrorHandling,\n ) => {\n const errorHandling = onError === 'auto' ? getMetadataErrorHandlingStrategy() : onError\n const getAndSet = async () => {\n const data = await getFn()\n addFn(data)\n }\n\n if (errorHandling === 'bubble') {\n await getAndSet()\n } else {\n try {\n await getAndSet()\n // eslint-disable-next-line no-catch-all/no-catch-all, @typescript-eslint/no-explicit-any\n } catch (error: any) {\n await sendErrorToBugsnag(error)\n }\n }\n }\n\n return {\n getAllPublic: () => {\n return {...raw.public}\n },\n getAllSensitive: () => {\n return {...raw.sensitive}\n },\n addPublic: async (getData: ProvideMetadata<TPublic>, onError: MetadataErrorHandling = 'auto') => {\n return addMetadata(addPublic, getData, onError)\n },\n addSensitive: async (getData: ProvideMetadata<TSensitive>, onError: MetadataErrorHandling = 'auto') => {\n return addMetadata(addSensitive, getData, onError)\n },\n }\n}\n\n// We want to track anything that ends up getting sent to monorail as `cmd_all_*`\ntype CmdFieldsFromMonorail = PickByPrefix<MonorailEventPublic, 'cmd_all_'>\n\nconst coreData = createRuntimeMetadataContainer<\n CmdFieldsFromMonorail,\n {\n commandStartOptions: {\n startTime: number\n startCommand: string\n startArgs: string[]\n }\n }\n>()\n\nexport const {getAllPublic, getAllSensitive, addPublic, addSensitive} = coreData\n\nexport type Public = PublicSchema<typeof coreData>\nexport type Sensitive = SensitiveSchema<typeof coreData>\n"]}
|
package/dist/monorail.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { JsonMap } from './json.js';
|
|
2
|
+
import { DeepRequired } from './typing/deep-required.js';
|
|
2
3
|
declare type Optional<T> = T | null;
|
|
4
|
+
export declare const MONORAIL_COMMAND_TOPIC: "app_cli3_command/1.1";
|
|
3
5
|
export interface Schemas {
|
|
4
|
-
|
|
6
|
+
[MONORAIL_COMMAND_TOPIC]: {
|
|
5
7
|
sensitive: {
|
|
6
8
|
args: string;
|
|
7
9
|
error_message?: Optional<string>;
|
|
@@ -21,6 +23,49 @@ export interface Schemas {
|
|
|
21
23
|
ruby_version: string;
|
|
22
24
|
node_version: string;
|
|
23
25
|
is_employee: boolean;
|
|
26
|
+
cmd_all_alias_used?: Optional<string>;
|
|
27
|
+
cmd_all_launcher?: Optional<string>;
|
|
28
|
+
cmd_all_path_override?: Optional<boolean>;
|
|
29
|
+
cmd_all_path_override_hash?: Optional<string>;
|
|
30
|
+
cmd_all_plugin?: Optional<string>;
|
|
31
|
+
cmd_all_topic?: Optional<string>;
|
|
32
|
+
cmd_all_verbose?: Optional<boolean>;
|
|
33
|
+
cmd_extensions_binary_from_source?: Optional<boolean>;
|
|
34
|
+
cmd_scaffold_required_auth?: Optional<boolean>;
|
|
35
|
+
cmd_scaffold_template_custom?: Optional<boolean>;
|
|
36
|
+
cmd_scaffold_template_flavor?: Optional<string>;
|
|
37
|
+
cmd_scaffold_type?: Optional<string>;
|
|
38
|
+
cmd_scaffold_type_category?: Optional<string>;
|
|
39
|
+
cmd_scaffold_type_gated?: Optional<boolean>;
|
|
40
|
+
cmd_scaffold_type_owner?: Optional<string>;
|
|
41
|
+
cmd_scaffold_used_prompts_for_type?: Optional<boolean>;
|
|
42
|
+
app_extensions_any?: Optional<boolean>;
|
|
43
|
+
app_extensions_breakdown?: Optional<string>;
|
|
44
|
+
app_extensions_count?: Optional<number>;
|
|
45
|
+
app_extensions_custom_layout?: Optional<boolean>;
|
|
46
|
+
app_extensions_function_any?: Optional<boolean>;
|
|
47
|
+
app_extensions_function_count?: Optional<number>;
|
|
48
|
+
app_extensions_function_custom_layout?: Optional<boolean>;
|
|
49
|
+
app_extensions_theme_any?: Optional<boolean>;
|
|
50
|
+
app_extensions_theme_count?: Optional<number>;
|
|
51
|
+
app_extensions_theme_custom_layout?: Optional<boolean>;
|
|
52
|
+
app_extensions_ui_any?: Optional<boolean>;
|
|
53
|
+
app_extensions_ui_count?: Optional<number>;
|
|
54
|
+
app_extensions_ui_custom_layout?: Optional<boolean>;
|
|
55
|
+
app_name_hash?: Optional<string>;
|
|
56
|
+
app_path_hash?: Optional<string>;
|
|
57
|
+
app_scopes?: Optional<string>;
|
|
58
|
+
app_web_backend_any?: Optional<boolean>;
|
|
59
|
+
app_web_backend_count?: Optional<number>;
|
|
60
|
+
app_web_custom_layout?: Optional<boolean>;
|
|
61
|
+
app_web_frontend_any?: Optional<boolean>;
|
|
62
|
+
app_web_frontend_count?: Optional<number>;
|
|
63
|
+
env_ci?: Optional<boolean>;
|
|
64
|
+
env_ci_platform?: Optional<string>;
|
|
65
|
+
env_plugin_installed_any_custom?: Optional<boolean>;
|
|
66
|
+
env_plugin_installed_shopify?: Optional<string>;
|
|
67
|
+
env_shell?: Optional<string>;
|
|
68
|
+
env_web_ide?: Optional<string>;
|
|
24
69
|
};
|
|
25
70
|
};
|
|
26
71
|
[schemaId: string]: {
|
|
@@ -28,6 +73,8 @@ export interface Schemas {
|
|
|
28
73
|
public: JsonMap;
|
|
29
74
|
};
|
|
30
75
|
}
|
|
76
|
+
export declare type MonorailEventPublic = DeepRequired<Schemas[typeof MONORAIL_COMMAND_TOPIC]['public']>;
|
|
77
|
+
export declare type MonorailEventSensitive = Schemas[typeof MONORAIL_COMMAND_TOPIC]['sensitive'];
|
|
31
78
|
declare type MonorailResult = {
|
|
32
79
|
type: 'ok';
|
|
33
80
|
} | {
|
package/dist/monorail.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
1
|
import { fetch } from './http.js';
|
|
3
2
|
import { debug, content, token } from './output.js';
|
|
4
3
|
const url = 'https://monorail-edge.shopifysvc.com/v1/produce';
|
|
4
|
+
// This is the topic name of the main event we log to Monorail, the command tracker
|
|
5
|
+
export const MONORAIL_COMMAND_TOPIC = 'app_cli3_command/1.1';
|
|
5
6
|
export async function publishEvent(schemaId, publicData, sensitiveData) {
|
|
6
7
|
try {
|
|
7
8
|
const currentTime = new Date().getTime();
|
package/dist/monorail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monorail.js","sourceRoot":"","sources":["../src/monorail.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"monorail.js","sourceRoot":"","sources":["../src/monorail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAIjD,MAAM,GAAG,GAAG,iDAAiD,CAAA;AAI7D,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAA+B,CAAA;AAoFrE,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAmB,EACnB,UAA8B,EAC9B,aAAoC;IAEpC,IAAI;QACF,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QACxC,MAAM,OAAO,GAAG,EAAC,GAAG,UAAU,EAAE,GAAG,aAAa,EAAC,CAAA;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAA;QAC3D,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;QAEzC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC,CAAA;QAElE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,KAAK,CAAC,OAAO,CAAA,yBAAyB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC5D,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,CAAA;SACpB;aAAM;YACL,KAAK,CAAC,qCAAqC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;YACjE,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAC,CAAA;SACrD;QACD,qDAAqD;KACtD;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,OAAO,GAAG,kCAAkC,CAAA;QAChD,IAAI,KAAK,YAAY,KAAK,EAAE;YAC1B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;SAC/C;QACD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAC,CAAA;KAChC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAE,EAAE;IAC3C,OAAO;QACL,cAAc,EAAE,iCAAiC;QACjD,qCAAqC,EAAE,WAAW,CAAC,QAAQ,EAAE;QAC7D,kCAAkC,EAAE,WAAW,CAAC,QAAQ,EAAE;KAC3D,CAAA;AACH,CAAC,CAAA","sourcesContent":["import {fetch} from './http.js'\nimport {debug, content, token} from './output.js'\nimport {JsonMap} from './json.js'\nimport {DeepRequired} from './typing/deep-required.js'\n\nconst url = 'https://monorail-edge.shopifysvc.com/v1/produce'\n\ntype Optional<T> = T | null\n\n// This is the topic name of the main event we log to Monorail, the command tracker\nexport const MONORAIL_COMMAND_TOPIC = 'app_cli3_command/1.1' as const\n\nexport interface Schemas {\n [MONORAIL_COMMAND_TOPIC]: {\n sensitive: {args: string; error_message?: Optional<string>; metadata?: Optional<string>}\n public: {\n partner_id?: Optional<number>\n command: string\n project_type?: Optional<string>\n time_start: number\n time_end: number\n total_time: number\n success: boolean\n api_key?: Optional<string>\n cli_version: string\n uname: string\n ruby_version: string\n node_version: string\n is_employee: boolean\n\n // Any and all commands\n cmd_all_alias_used?: Optional<string>\n cmd_all_launcher?: Optional<string>\n cmd_all_path_override?: Optional<boolean>\n cmd_all_path_override_hash?: Optional<string>\n cmd_all_plugin?: Optional<string>\n cmd_all_topic?: Optional<string>\n cmd_all_verbose?: Optional<boolean>\n\n // Any extension related command\n cmd_extensions_binary_from_source?: Optional<boolean>\n\n // Scaffolding related commands\n cmd_scaffold_required_auth?: Optional<boolean>\n cmd_scaffold_template_custom?: Optional<boolean>\n cmd_scaffold_template_flavor?: Optional<string>\n cmd_scaffold_type?: Optional<string>\n cmd_scaffold_type_category?: Optional<string>\n cmd_scaffold_type_gated?: Optional<boolean>\n cmd_scaffold_type_owner?: Optional<string>\n cmd_scaffold_used_prompts_for_type?: Optional<boolean>\n\n // App setup\n app_extensions_any?: Optional<boolean>\n app_extensions_breakdown?: Optional<string>\n app_extensions_count?: Optional<number>\n app_extensions_custom_layout?: Optional<boolean>\n app_extensions_function_any?: Optional<boolean>\n app_extensions_function_count?: Optional<number>\n app_extensions_function_custom_layout?: Optional<boolean>\n app_extensions_theme_any?: Optional<boolean>\n app_extensions_theme_count?: Optional<number>\n app_extensions_theme_custom_layout?: Optional<boolean>\n app_extensions_ui_any?: Optional<boolean>\n app_extensions_ui_count?: Optional<number>\n app_extensions_ui_custom_layout?: Optional<boolean>\n app_name_hash?: Optional<string>\n app_path_hash?: Optional<string>\n app_scopes?: Optional<string>\n app_web_backend_any?: Optional<boolean>\n app_web_backend_count?: Optional<number>\n app_web_custom_layout?: Optional<boolean>\n app_web_frontend_any?: Optional<boolean>\n app_web_frontend_count?: Optional<number>\n\n // Environment\n env_ci?: Optional<boolean>\n env_ci_platform?: Optional<string>\n env_plugin_installed_any_custom?: Optional<boolean>\n env_plugin_installed_shopify?: Optional<string>\n env_shell?: Optional<string>\n env_web_ide?: Optional<string>\n }\n }\n [schemaId: string]: {sensitive: JsonMap; public: JsonMap}\n}\n\n// In reality, we're normally most interested in just this from Schemas, so export it for ease of use.\n// The monorail schema itself has lots of optional values as it must be backwards-compatible. For our schema we want mandatory values instead.\nexport type MonorailEventPublic = DeepRequired<Schemas[typeof MONORAIL_COMMAND_TOPIC]['public']>\nexport type MonorailEventSensitive = Schemas[typeof MONORAIL_COMMAND_TOPIC]['sensitive']\n\ntype MonorailResult = {type: 'ok'} | {type: 'error'; message: string}\n\nexport async function publishEvent<TSchemaId extends keyof Schemas, TPayload extends Schemas[TSchemaId]>(\n schemaId: TSchemaId,\n publicData: TPayload['public'],\n sensitiveData: TPayload['sensitive'],\n): Promise<MonorailResult> {\n try {\n const currentTime = new Date().getTime()\n const payload = {...publicData, ...sensitiveData}\n const body = JSON.stringify({schema_id: schemaId, payload})\n const headers = buildHeaders(currentTime)\n\n const response = await fetch(url, {method: 'POST', body, headers})\n\n if (response.status === 200) {\n debug(content`Analytics event sent: ${token.json(payload)}`)\n return {type: 'ok'}\n } else {\n debug(`Failed to report usage analytics: ${response.statusText}`)\n return {type: 'error', message: response.statusText}\n }\n // eslint-disable-next-line no-catch-all/no-catch-all\n } catch (error) {\n let message = 'Failed to report usage analytics'\n if (error instanceof Error) {\n message = message.concat(`: ${error.message}`)\n }\n debug(message)\n return {type: 'error', message}\n }\n}\n\nconst buildHeaders = (currentTime: number) => {\n return {\n 'Content-Type': 'application/json; charset=utf-8',\n 'X-Monorail-Edge-Event-Created-At-Ms': currentTime.toString(),\n 'X-Monorail-Edge-Event-Sent-At-Ms': currentTime.toString(),\n }\n}\n"]}
|
package/dist/node/archiver.js
CHANGED
|
@@ -27,6 +27,7 @@ export async function zip(inputDirectory, outputZipPath) {
|
|
|
27
27
|
const fileRelativePath = relativePath(inputDirectory, filePath);
|
|
28
28
|
archive.file(filePath, { name: fileRelativePath });
|
|
29
29
|
}
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
30
31
|
archive.finalize();
|
|
31
32
|
});
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.js","sourceRoot":"","sources":["../../src/node/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAC,MAAM,cAAc,CAAA;AAClD,OAAO,EAAC,IAAI,EAAE,QAAQ,IAAI,YAAY,EAAC,MAAM,YAAY,CAAA;AACzD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAA;AACzC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,cAAsB,EAAE,aAAqB;IACrE,KAAK,CAAC,OAAO,CAAA,WAAW,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;IACvF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAC,CAAC,CAAA;IACnH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAE/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;YACjB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK;YACjC,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpB,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;YACjC,MAAM,gBAAgB,GAAG,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;YAC/D,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC,CAAC,CAAA;SACjD;QAED,OAAO,CAAC,QAAQ,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import {debug, content, token} from '../output.js'\nimport {glob, relative as relativePath} from '../path.js'\nimport archiver from 'archiver'\nimport {createWriteStream} from 'node:fs'\n/**\n * It zips a directory normalizing the paths to be forward-slash. Note that unzipping\n * the zip generated by this function from a Windows environment won't work because paths\n * need to be made backward-slash.\n *\n * @param inputDirectory {string} The absolute path to the directory to be zipped.\n * @param outputZipPath {string} The absolute path to the output zip file.\n */\nexport async function zip(inputDirectory: string, outputZipPath: string): Promise<void> {\n debug(content`Zipping ${token.path(inputDirectory)} into ${token.path(outputZipPath)}`)\n const pathsToZip = await glob('**/*', {cwd: inputDirectory, absolute: true, dot: true, followSymbolicLinks: false})\n return new Promise((resolve, reject) => {\n const archive = archiver('zip')\n const output = createWriteStream(outputZipPath)\n\n output.on('close', function () {\n resolve()\n })\n archive.on('error', function (error) {\n reject(error)\n })\n archive.pipe(output)\n\n for (const filePath of pathsToZip) {\n const fileRelativePath = relativePath(inputDirectory, filePath)\n archive.file(filePath, {name: fileRelativePath})\n }\n\n archive.finalize()\n })\n}\n"]}
|
|
1
|
+
{"version":3,"file":"archiver.js","sourceRoot":"","sources":["../../src/node/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAC,MAAM,cAAc,CAAA;AAClD,OAAO,EAAC,IAAI,EAAE,QAAQ,IAAI,YAAY,EAAC,MAAM,YAAY,CAAA;AACzD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAA;AACzC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,cAAsB,EAAE,aAAqB;IACrE,KAAK,CAAC,OAAO,CAAA,WAAW,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;IACvF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAC,CAAC,CAAA;IACnH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAE/C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;YACjB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK;YACjC,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpB,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;YACjC,MAAM,gBAAgB,GAAG,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;YAC/D,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC,CAAC,CAAA;SACjD;QAED,mEAAmE;QACnE,OAAO,CAAC,QAAQ,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import {debug, content, token} from '../output.js'\nimport {glob, relative as relativePath} from '../path.js'\nimport archiver from 'archiver'\nimport {createWriteStream} from 'node:fs'\n/**\n * It zips a directory normalizing the paths to be forward-slash. Note that unzipping\n * the zip generated by this function from a Windows environment won't work because paths\n * need to be made backward-slash.\n *\n * @param inputDirectory {string} The absolute path to the directory to be zipped.\n * @param outputZipPath {string} The absolute path to the output zip file.\n */\nexport async function zip(inputDirectory: string, outputZipPath: string): Promise<void> {\n debug(content`Zipping ${token.path(inputDirectory)} into ${token.path(outputZipPath)}`)\n const pathsToZip = await glob('**/*', {cwd: inputDirectory, absolute: true, dot: true, followSymbolicLinks: false})\n return new Promise((resolve, reject) => {\n const archive = archiver('zip')\n const output = createWriteStream(outputZipPath)\n\n output.on('close', function () {\n resolve()\n })\n archive.on('error', function (error) {\n reject(error)\n })\n archive.pipe(output)\n\n for (const filePath of pathsToZip) {\n const fileRelativePath = relativePath(inputDirectory, filePath)\n archive.file(filePath, {name: fileRelativePath})\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n archive.finalize()\n })\n}\n"]}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
|
-
import { Command } from '@oclif/core';
|
|
1
|
+
import { Command, Interfaces } from '@oclif/core';
|
|
2
2
|
export default abstract class extends Command {
|
|
3
3
|
catch(error: Error & {
|
|
4
4
|
exitCode?: number | undefined;
|
|
5
5
|
}): Promise<void>;
|
|
6
6
|
protected init(): Promise<any>;
|
|
7
|
+
protected parse<TFlags extends {
|
|
8
|
+
path?: string;
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
}, TArgs extends {
|
|
11
|
+
[name: string]: any;
|
|
12
|
+
}>(options?: Interfaces.Input<TFlags> | undefined, argv?: string[] | undefined): Promise<Interfaces.ParserOutput<TFlags, TArgs>>;
|
|
7
13
|
}
|
|
14
|
+
export declare function addFromParsedFlags(flags: {
|
|
15
|
+
path?: string;
|
|
16
|
+
verbose?: boolean;
|
|
17
|
+
}): Promise<void>;
|
|
@@ -1,18 +1,33 @@
|
|
|
1
1
|
import { errorHandler, registerCleanBugsnagErrorsFromWithinPlugins } from './error-handler.js';
|
|
2
|
-
import {
|
|
2
|
+
import { isDevelopment } from '../environment/local.js';
|
|
3
|
+
import { addPublic } from '../metadata.js';
|
|
4
|
+
import { hashString } from '../string.js';
|
|
3
5
|
import { Command } from '@oclif/core';
|
|
4
6
|
// eslint-disable-next-line import/no-anonymous-default-export
|
|
5
7
|
export default class extends Command {
|
|
6
8
|
async catch(error) {
|
|
7
|
-
errorHandler(error, this.config);
|
|
9
|
+
await errorHandler(error, this.config);
|
|
8
10
|
}
|
|
9
11
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
12
|
async init() {
|
|
11
|
-
if (!
|
|
13
|
+
if (!isDevelopment()) {
|
|
12
14
|
// This function runs just prior to `run`
|
|
13
|
-
registerCleanBugsnagErrorsFromWithinPlugins(this.config
|
|
15
|
+
await registerCleanBugsnagErrorsFromWithinPlugins(this.config);
|
|
14
16
|
}
|
|
15
17
|
return super.init();
|
|
16
18
|
}
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
+
async parse(options, argv) {
|
|
21
|
+
const result = await super.parse(options, argv);
|
|
22
|
+
await addFromParsedFlags(result.flags);
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export async function addFromParsedFlags(flags) {
|
|
27
|
+
await addPublic(() => ({
|
|
28
|
+
cmd_all_verbose: flags.verbose,
|
|
29
|
+
cmd_all_path_override: flags.path !== undefined,
|
|
30
|
+
cmd_all_path_override_hash: flags.path === undefined ? undefined : hashString(flags.path),
|
|
31
|
+
}));
|
|
17
32
|
}
|
|
18
33
|
//# sourceMappingURL=base-command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-command.js","sourceRoot":"","sources":["../../src/node/base-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,2CAA2C,EAAC,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"base-command.js","sourceRoot":"","sources":["../../src/node/base-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,2CAA2C,EAAC,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,OAAO,EAAa,MAAM,aAAa,CAAA;AAE/C,8DAA8D;AAC9D,MAAM,CAAC,OAAO,MAAgB,SAAQ,OAAO;IAC3C,KAAK,CAAC,KAAK,CAAC,KAA8C;QACxD,MAAM,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAED,8DAA8D;IACpD,KAAK,CAAC,IAAI;QAClB,IAAI,CAAC,aAAa,EAAE,EAAE;YACpB,yCAAyC;YACzC,MAAM,2CAA2C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAC/D;QACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;IACrB,CAAC;IAED,8DAA8D;IACpD,KAAK,CAAC,KAAK,CACnB,OAA8C,EAC9C,IAA2B;QAE3B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAgB,OAAO,EAAE,IAAI,CAAC,CAAA;QAC9D,MAAM,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtC,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAyC;IAChF,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACrB,eAAe,EAAE,KAAK,CAAC,OAAO;QAC9B,qBAAqB,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS;QAC/C,0BAA0B,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;KAC1F,CAAC,CAAC,CAAA;AACL,CAAC","sourcesContent":["import {errorHandler, registerCleanBugsnagErrorsFromWithinPlugins} from './error-handler.js'\nimport {isDevelopment} from '../environment/local.js'\nimport {addPublic} from '../metadata.js'\nimport {hashString} from '../string.js'\nimport {Command, Interfaces} from '@oclif/core'\n\n// eslint-disable-next-line import/no-anonymous-default-export\nexport default abstract class extends Command {\n async catch(error: Error & {exitCode?: number | undefined}) {\n await errorHandler(error, this.config)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n protected async init(): Promise<any> {\n if (!isDevelopment()) {\n // This function runs just prior to `run`\n await registerCleanBugsnagErrorsFromWithinPlugins(this.config)\n }\n return super.init()\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n protected async parse<TFlags extends {path?: string; verbose?: boolean}, TArgs extends {[name: string]: any}>(\n options?: Interfaces.Input<TFlags> | undefined,\n argv?: string[] | undefined,\n ): Promise<Interfaces.ParserOutput<TFlags, TArgs>> {\n const result = await super.parse<TFlags, TArgs>(options, argv)\n await addFromParsedFlags(result.flags)\n return result\n }\n}\n\nexport async function addFromParsedFlags(flags: {path?: string; verbose?: boolean}) {\n await addPublic(() => ({\n cmd_all_verbose: flags.verbose,\n cmd_all_path_override: flags.path !== undefined,\n cmd_all_path_override_hash: flags.path === undefined ? undefined : hashString(flags.path),\n }))\n}\n"]}
|
package/dist/node/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// CLI
|
|
2
2
|
import { findUpAndReadPackageJson } from './node-package-manager.js';
|
|
3
3
|
import { errorHandler } from './error-handler.js';
|
|
4
|
-
import {
|
|
4
|
+
import { isDevelopment } from '../environment/local.js';
|
|
5
5
|
import constants, { bugsnagApiKey } from '../constants.js';
|
|
6
6
|
import { moduleDirectory } from '../path.js';
|
|
7
7
|
import { run, settings, flush } from '@oclif/core';
|
|
@@ -12,7 +12,7 @@ import Bugsnag from '@bugsnag/js';
|
|
|
12
12
|
* @param module {RunCLIOptions} Options.
|
|
13
13
|
*/
|
|
14
14
|
export async function runCLI(options) {
|
|
15
|
-
if (
|
|
15
|
+
if (isDevelopment()) {
|
|
16
16
|
settings.debug = true;
|
|
17
17
|
}
|
|
18
18
|
else {
|
package/dist/node/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/node/cli.ts"],"names":[],"mappings":"AAAA,MAAM;AACN,OAAO,EAAC,wBAAwB,EAAC,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/node/cli.ts"],"names":[],"mappings":"AAAA,MAAM;AACN,OAAO,EAAC,wBAAwB,EAAC,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAA;AACrD,OAAO,SAAS,EAAE,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAChD,OAAO,OAAO,MAAM,aAAa,CAAA;AAOjC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,IAAI,aAAa,EAAE,EAAE;QACnB,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;KACtB;SAAM;QACL,OAAO,CAAC,KAAK,CAAC;YACZ,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC7C,iBAAiB,EAAE,KAAK;YACxB,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAA;KACH;IAED,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAsB;IACvD,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IACtF,8DAA8D;IAC9D,MAAM,WAAW,GAAI,WAAW,CAAC,OAAe,CAAC,IAAc,CAAA;IAC/D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IACvE,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;QACpB,MAAM,SAAS,GACb,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,yBAAyB,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACtG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;KAC1C;IACD,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;AACvB,CAAC;AAED,eAAe,MAAM,CAAA","sourcesContent":["// CLI\nimport {findUpAndReadPackageJson} from './node-package-manager.js'\nimport {errorHandler} from './error-handler.js'\nimport {isDevelopment} from '../environment/local.js'\nimport constants, {bugsnagApiKey} from '../constants.js'\nimport {moduleDirectory} from '../path.js'\nimport {run, settings, flush} from '@oclif/core'\nimport Bugsnag from '@bugsnag/js'\n\ninterface RunCLIOptions {\n /** The value of import.meta.url of the CLI executable module */\n moduleURL: string\n}\n\n/**\n * A function that abstracts away setting up the environment and running\n * a CLI\n * @param module {RunCLIOptions} Options.\n */\nexport async function runCLI(options: RunCLIOptions) {\n if (isDevelopment()) {\n settings.debug = true\n } else {\n Bugsnag.start({\n appType: 'node',\n apiKey: bugsnagApiKey,\n logger: null,\n appVersion: await constants.versions.cliKit(),\n autoTrackSessions: false,\n autoDetectErrors: false,\n })\n }\n\n run(undefined, options.moduleURL).then(flush).catch(errorHandler)\n}\n\n/**\n * A function for create-x CLIs that automatically runs the \"init\" command.\n * @param options\n */\nexport async function runCreateCLI(options: RunCLIOptions) {\n const packageJson = await findUpAndReadPackageJson(moduleDirectory(options.moduleURL))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const packageName = (packageJson.content as any).name as string\n const name = packageName.replace('@shopify/create-', '')\n const initIndex = process.argv.findIndex((arg) => arg.includes('init'))\n if (initIndex === -1) {\n const initIndex =\n process.argv.findIndex((arg) => arg.match(new RegExp(`bin(\\\\/|\\\\\\\\)+(create-${name}|dev|run)`))) + 1\n process.argv.splice(initIndex, 0, 'init')\n }\n await runCLI(options)\n}\n\nexport default runCLI\n"]}
|
package/dist/node/dot-env.d.ts
CHANGED
|
@@ -31,3 +31,12 @@ export declare function readAndParseDotEnv(path: string): Promise<DotEnvFile>;
|
|
|
31
31
|
* @param file {DotEnvFile} .env file to be written.
|
|
32
32
|
*/
|
|
33
33
|
export declare function writeDotEnv(file: DotEnvFile): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Given an .env file content, generates a new one with new values
|
|
36
|
+
* without removing already existing lines.
|
|
37
|
+
* @param envFileContent {string | null} .env file contents.
|
|
38
|
+
* @param updatedValues {[key: string]: string}} object containing new env variables values.
|
|
39
|
+
*/
|
|
40
|
+
export declare function patchEnvFile(envFileContent: string | null, updatedValues: {
|
|
41
|
+
[key: string]: string;
|
|
42
|
+
}): string;
|
package/dist/node/dot-env.js
CHANGED
|
@@ -33,4 +33,35 @@ export async function readAndParseDotEnv(path) {
|
|
|
33
33
|
export async function writeDotEnv(file) {
|
|
34
34
|
await writeFile(file.path, stringify(file.variables));
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Given an .env file content, generates a new one with new values
|
|
38
|
+
* without removing already existing lines.
|
|
39
|
+
* @param envFileContent {string | null} .env file contents.
|
|
40
|
+
* @param updatedValues {[key: string]: string}} object containing new env variables values.
|
|
41
|
+
*/
|
|
42
|
+
export function patchEnvFile(envFileContent, updatedValues) {
|
|
43
|
+
const outputLines = [];
|
|
44
|
+
const lines = envFileContent === null ? [] : envFileContent.split('\n');
|
|
45
|
+
const alreadyPresentKeys = [];
|
|
46
|
+
const toLine = (key, value) => `${key}=${value}`;
|
|
47
|
+
for (const line of lines) {
|
|
48
|
+
const match = line.match(/^([^=:#]+?)[=:](.*)/);
|
|
49
|
+
let lineToWrite = line;
|
|
50
|
+
if (match) {
|
|
51
|
+
const key = match[1].trim();
|
|
52
|
+
const newValue = updatedValues[key];
|
|
53
|
+
if (newValue) {
|
|
54
|
+
alreadyPresentKeys.push(key);
|
|
55
|
+
lineToWrite = toLine(key, newValue);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
outputLines.push(lineToWrite);
|
|
59
|
+
}
|
|
60
|
+
for (const [patchKey, updatedValue] of Object.entries(updatedValues)) {
|
|
61
|
+
if (!alreadyPresentKeys.includes(patchKey)) {
|
|
62
|
+
outputLines.push(toLine(patchKey, updatedValue));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return outputLines.join('\n');
|
|
66
|
+
}
|
|
36
67
|
//# sourceMappingURL=dot-env.js.map
|