@flourish/sdk 3.17.3 → 3.20.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/README.md +17 -0
- package/README.md~ +473 -0
- package/RELEASE_NOTES.md +12 -0
- package/RELEASE_NOTES.md~ +372 -0
- package/bin/{flourish → flourish.js} +31 -42
- package/lib/cmd/assign-version-number.js +4 -6
- package/lib/cmd/build.js +6 -10
- package/lib/cmd/delete.js +4 -6
- package/lib/cmd/help.js +3 -5
- package/lib/cmd/history.js +4 -6
- package/lib/cmd/list.js +4 -6
- package/lib/cmd/login.js +5 -7
- package/lib/cmd/logout.js +3 -5
- package/lib/cmd/new.js +3 -5
- package/lib/cmd/publish.js +9 -10
- package/lib/cmd/register.js +5 -7
- package/lib/cmd/run.js +3 -5
- package/lib/cmd/upgrade/1-convert-config-to-yaml.js +6 -8
- package/lib/cmd/upgrade/2-convert-index-html.js +3 -4
- package/lib/cmd/upgrade/3-add-build-config.js +3 -4
- package/lib/cmd/upgrade/4-remove-autoheight-config.js +3 -4
- package/lib/cmd/upgrade/index.js +5 -7
- package/lib/cmd/version.js +5 -13
- package/lib/cmd/whoami.js +4 -6
- package/lib/sdk.js +43 -54
- package/lib/sdk.js~ +540 -0
- package/lib/validate_config.js +14 -5
- package/lib/validate_config.js~ +437 -0
- package/package-lock.json~ +2669 -0
- package/package.json +3 -3
- package/package.json~ +53 -0
- package/server/comms_js.js +1 -0
- package/server/index.js~ +540 -0
- package/server/views/index.html +9 -5
- package/site/embedded.js +1 -1
- package/site/images/share_image.jpg +0 -0
- package/site/script.js +2 -2
- package/site/sdk.css +1 -1
- package/test/lib/validate_config.js +11 -2
- package/test/lib/validate_config.js~ +1006 -0
package/lib/cmd/login.js
CHANGED
|
@@ -7,7 +7,7 @@ var readline = require("readline"),
|
|
|
7
7
|
log = require("../log"),
|
|
8
8
|
sdk = require("../sdk");
|
|
9
9
|
|
|
10
|
-
function login(args
|
|
10
|
+
exports.command = function login(args) {
|
|
11
11
|
function getEmail() {
|
|
12
12
|
return new Promise(function(resolve, reject) {
|
|
13
13
|
// If an email address was given on the command-line, use that
|
|
@@ -35,14 +35,14 @@ function login(args, server_opts) {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
function login(email, password) {
|
|
38
|
-
return sdk.request(
|
|
38
|
+
return sdk.request(args, "user/login", { email: email, password: password })
|
|
39
39
|
.then((response) => {
|
|
40
40
|
const sdk_token = response.sdk_token || response.api_token;
|
|
41
41
|
if (!sdk_token) {
|
|
42
42
|
log.die("Unexpected response from server", JSON.stringify(response));
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
sdk.setSdkToken(
|
|
45
|
+
sdk.setSdkToken(args, sdk_token)
|
|
46
46
|
.then(() => log.victory("Logged in as " + email))
|
|
47
47
|
.catch((error) => log.die("Failed to save SDK token", error.message));
|
|
48
48
|
});
|
|
@@ -52,9 +52,9 @@ function login(args, server_opts) {
|
|
|
52
52
|
.then((email) => Promise.all([email, getPassword()]))
|
|
53
53
|
.then(([email, password]) => login(email, password))
|
|
54
54
|
.catch((error) => log.die("Unexpected error", error.message, error.stack));
|
|
55
|
-
}
|
|
55
|
+
};
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
exports.help = `
|
|
58
58
|
flourish login [email_address]
|
|
59
59
|
|
|
60
60
|
Log in to Flourish. You will be prompted for a password.
|
|
@@ -65,5 +65,3 @@ When you have logged in successfully, your access token will be recorded
|
|
|
65
65
|
in the file .flourish_sdk in your HOME or USERPROFILE directory. Subsequent
|
|
66
66
|
flourish commands will use this token to authenticate with the server.
|
|
67
67
|
`;
|
|
68
|
-
|
|
69
|
-
module.exports = login;
|
package/lib/cmd/logout.js
CHANGED
|
@@ -3,17 +3,15 @@
|
|
|
3
3
|
var log = require("../log"),
|
|
4
4
|
sdk = require("../sdk");
|
|
5
5
|
|
|
6
|
-
function logout() {
|
|
6
|
+
exports.command = function logout() {
|
|
7
7
|
sdk.deleteSdkTokens()
|
|
8
8
|
.then(() => log.victory("Deleted all SDK tokens"))
|
|
9
9
|
.catch((error) => log.die(error));
|
|
10
|
-
}
|
|
10
|
+
};
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
exports.help = `
|
|
13
13
|
flourish logout
|
|
14
14
|
|
|
15
15
|
Deletes the .flourish_sdk file from your HOME or USERPROFILE directory. You
|
|
16
16
|
will not be able to communicate with the server until you “flourish login”
|
|
17
17
|
`;
|
|
18
|
-
|
|
19
|
-
module.exports = logout;
|
package/lib/cmd/new.js
CHANGED
|
@@ -7,7 +7,7 @@ var cross_spawn = require("cross-spawn"),
|
|
|
7
7
|
|
|
8
8
|
log = require("../log");
|
|
9
9
|
|
|
10
|
-
function _new(args) {
|
|
10
|
+
exports.command = function _new(args) {
|
|
11
11
|
const new_template_path = args._[1];
|
|
12
12
|
if (!new_template_path) {
|
|
13
13
|
log.die("Please specify a directory name for the new template. E.g. flourish new my_template");
|
|
@@ -46,9 +46,9 @@ function _new(args) {
|
|
|
46
46
|
"Try running it by hand");
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
|
-
}
|
|
49
|
+
};
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
exports.help = `
|
|
52
52
|
flourish new directory_name
|
|
53
53
|
|
|
54
54
|
Creates a new skeleton Flourish template in the named directory,
|
|
@@ -58,5 +58,3 @@ The skeleton template has an example build configuration that uses
|
|
|
58
58
|
Less to compile stylesheets and Rollup to bundle JavaScript code.
|
|
59
59
|
You can run it in the SDK using “flourish run”.
|
|
60
60
|
`;
|
|
61
|
-
|
|
62
|
-
module.exports = _new;
|
package/lib/cmd/publish.js
CHANGED
|
@@ -48,6 +48,7 @@ function zipUpTemplate(template_dir, config) {
|
|
|
48
48
|
categories: config.categories,
|
|
49
49
|
joinable_data: config.joinable_data,
|
|
50
50
|
tour: JSON.stringify(config.tour),
|
|
51
|
+
is_premium: config.is_premium,
|
|
51
52
|
}), { name: "metadata.json" });
|
|
52
53
|
if (config.settings) zip.append(JSON.stringify(config.settings), { name: "settings.js" });
|
|
53
54
|
if (config.data) zip.append(JSON.stringify(config.data), { name: "data.json" });
|
|
@@ -110,7 +111,7 @@ async function uploadTemplate(server_opts, template_id, external_version, zip_fi
|
|
|
110
111
|
return sdk.request(server_opts, "template/publish", body);
|
|
111
112
|
}
|
|
112
113
|
|
|
113
|
-
function publish(args
|
|
114
|
+
exports.command = function publish(args) {
|
|
114
115
|
const template_dir = args._[1] || ".";
|
|
115
116
|
|
|
116
117
|
(args.build ? sdk.buildTemplate(template_dir, "production", "publish") : Promise.resolve())
|
|
@@ -139,11 +140,11 @@ function publish(args, server_opts) {
|
|
|
139
140
|
log.success("Preparing template with id " + template_id + " for upload.");
|
|
140
141
|
|
|
141
142
|
return zipUpTemplate(template_dir, config)
|
|
142
|
-
.then((zip_filename) => uploadTemplate(
|
|
143
|
-
.then(() => sdk.request(
|
|
143
|
+
.then((zip_filename) => uploadTemplate(args, template_id, external_version, zip_filename))
|
|
144
|
+
.then(() => sdk.request(args, "user/whoami", {}))
|
|
144
145
|
.then((user_info) => {
|
|
145
146
|
let protocol = "https";
|
|
146
|
-
if (
|
|
147
|
+
if (args.host.match(/^(localhost|127\.0\.0\.1|.*\.local)(:\d+)?$/)) {
|
|
147
148
|
protocol = "http";
|
|
148
149
|
}
|
|
149
150
|
|
|
@@ -156,12 +157,12 @@ function publish(args, server_opts) {
|
|
|
156
157
|
}
|
|
157
158
|
if (!external_version) {
|
|
158
159
|
log.victory("Upload successful!",
|
|
159
|
-
`Your template is available at ${protocol}://${
|
|
160
|
+
`Your template is available at ${protocol}://${args.host}/@${template_path}`);
|
|
160
161
|
}
|
|
161
162
|
else {
|
|
162
163
|
const dt = new Date();
|
|
163
164
|
log.victory(`Uploaded version ${external_version} on ${dt.toDateString()} at ${dt.toTimeString()}`,
|
|
164
|
-
`Your template is available at ${protocol}://${
|
|
165
|
+
`Your template is available at ${protocol}://${args.host}/@${template_path}/${external_version}`);
|
|
165
166
|
}
|
|
166
167
|
warnings.forEach(warning => log.warn(warning));
|
|
167
168
|
});
|
|
@@ -170,9 +171,9 @@ function publish(args, server_opts) {
|
|
|
170
171
|
if (args.debug) log.die("Failed to upload template", error.message, error.stack);
|
|
171
172
|
else log.die("Failed to upload template", error.message);
|
|
172
173
|
});
|
|
173
|
-
}
|
|
174
|
+
};
|
|
174
175
|
|
|
175
|
-
|
|
176
|
+
exports.help = `
|
|
176
177
|
flourish publish [--patch] [--prerelease] [--release] [directory_name]
|
|
177
178
|
|
|
178
179
|
Build and publish the template in the named directory, or in the current
|
|
@@ -192,5 +193,3 @@ Options:
|
|
|
192
193
|
--release
|
|
193
194
|
Remove the prerelease tag before publishing.
|
|
194
195
|
`;
|
|
195
|
-
|
|
196
|
-
module.exports = publish;
|
package/lib/cmd/register.js
CHANGED
|
@@ -7,7 +7,7 @@ var readline = require("readline"),
|
|
|
7
7
|
log = require("../log"),
|
|
8
8
|
sdk = require("../sdk");
|
|
9
9
|
|
|
10
|
-
function register(args
|
|
10
|
+
exports.command = function register(args) {
|
|
11
11
|
const questions = [
|
|
12
12
|
{ text: "Username: ", prop: "username" },
|
|
13
13
|
{ text: "Name: ", prop: "display_name" },
|
|
@@ -96,7 +96,7 @@ function register(args, server_opts) {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
function register(answers) {
|
|
99
|
-
return sdk.request(
|
|
99
|
+
return sdk.request(args, "user/register", answers)
|
|
100
100
|
.then((response) => {
|
|
101
101
|
const sdk_token = response.sdk_token || response.api_token;
|
|
102
102
|
if (!sdk_token) {
|
|
@@ -110,13 +110,13 @@ function register(args, server_opts) {
|
|
|
110
110
|
.then((answers) => Promise.all([answers, getPassword()]))
|
|
111
111
|
.then(([answers, password]) => Promise.all([answers, password, agreeTerms()]))
|
|
112
112
|
.then(([answers, password, _]) => register(Object.assign(answers, { password })))
|
|
113
|
-
.then((sdk_token) => sdk.setSdkToken(
|
|
113
|
+
.then((sdk_token) => sdk.setSdkToken(args, sdk_token))
|
|
114
114
|
|
|
115
115
|
.then(() => log.victory("Account registered successfully!"))
|
|
116
116
|
.catch((error) => log.die(error.message));
|
|
117
|
-
}
|
|
117
|
+
};
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
exports.help = `
|
|
120
120
|
flourish register
|
|
121
121
|
|
|
122
122
|
Prompt for information and register an account with Flourish.
|
|
@@ -125,5 +125,3 @@ You will automatically be logged in to your new account.
|
|
|
125
125
|
This account can be used on https://flourish.studio/ as well
|
|
126
126
|
as in the SDK.
|
|
127
127
|
`;
|
|
128
|
-
|
|
129
|
-
module.exports = register;
|
package/lib/cmd/run.js
CHANGED
|
@@ -8,7 +8,7 @@ var fs = require("fs"),
|
|
|
8
8
|
|
|
9
9
|
server = require("../../server");
|
|
10
10
|
|
|
11
|
-
function run(args) {
|
|
11
|
+
exports.command = function run(args) {
|
|
12
12
|
const template_dir = args._[1] || ".";
|
|
13
13
|
const port = +args.port;
|
|
14
14
|
|
|
@@ -61,9 +61,9 @@ function run(args) {
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
});
|
|
64
|
-
}
|
|
64
|
+
};
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
exports.help = `
|
|
67
67
|
flourish run [-o|--open] [--no-build] [--port=1685] [directory_name]
|
|
68
68
|
|
|
69
69
|
Builds the template and runs the SDK server. If directory_name is omitted it
|
|
@@ -88,5 +88,3 @@ Options:
|
|
|
88
88
|
--no-build
|
|
89
89
|
Skip the build process
|
|
90
90
|
`;
|
|
91
|
-
|
|
92
|
-
module.exports = run;
|
|
@@ -48,7 +48,7 @@ function deleteIfExists(file_path) {
|
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
function upgrade(template_dir) {
|
|
51
|
+
exports.upgrade = function upgrade(template_dir) {
|
|
52
52
|
function loadSettings() {
|
|
53
53
|
return loadFile([template_dir, "settings.js"], {})
|
|
54
54
|
.then((contents) => {
|
|
@@ -78,16 +78,15 @@ function upgrade(template_dir) {
|
|
|
78
78
|
return Promise.all([
|
|
79
79
|
loadMetadata(),
|
|
80
80
|
loadSettings(),
|
|
81
|
-
loadTemplateDataBindings()
|
|
82
|
-
sdk.getSDKMajorVersion(),
|
|
81
|
+
loadTemplateDataBindings()
|
|
83
82
|
])
|
|
84
|
-
.then(([metadata, settings, data_bindings
|
|
83
|
+
.then(([metadata, settings, data_bindings]) => {
|
|
85
84
|
const o = {
|
|
86
85
|
id: metadata.id,
|
|
87
86
|
name: metadata.name,
|
|
88
87
|
author: metadata.author,
|
|
89
88
|
|
|
90
|
-
sdk_version,
|
|
89
|
+
sdk_version: sdk.SDK_MAJOR_VERSION,
|
|
91
90
|
|
|
92
91
|
settings: settings
|
|
93
92
|
};
|
|
@@ -127,7 +126,6 @@ function upgrade(template_dir) {
|
|
|
127
126
|
.then(() => resolve(true), reject);
|
|
128
127
|
});
|
|
129
128
|
});
|
|
130
|
-
}
|
|
129
|
+
};
|
|
131
130
|
|
|
132
|
-
|
|
133
|
-
module.exports = upgrade;
|
|
131
|
+
exports.title = "Convert configuration files to YAML format";
|
|
@@ -15,7 +15,7 @@ function convert(html) {
|
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
function upgrade(template_dir) {
|
|
18
|
+
exports.upgrade = function upgrade(template_dir) {
|
|
19
19
|
return new Promise(function(resolve, reject) {
|
|
20
20
|
fs.stat(template_dir, function(error, stat) {
|
|
21
21
|
if (error) reject(new Error(`Could not access ${template_dir}: ${error.message}`));
|
|
@@ -38,7 +38,6 @@ function upgrade(template_dir) {
|
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
|
-
}
|
|
41
|
+
};
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
module.exports = upgrade;
|
|
43
|
+
exports.title = "Convert index.html to mustache-free format";
|
|
@@ -15,7 +15,7 @@ function addBuildRules(config) {
|
|
|
15
15
|
return config;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
function upgrade(template_dir) {
|
|
18
|
+
exports.upgrade = function upgrade(template_dir) {
|
|
19
19
|
return new Promise(function(resolve, reject) {
|
|
20
20
|
fs.stat(template_dir, function(error, stat) {
|
|
21
21
|
if (error) reject(new Error(`Could not access ${template_dir}: ${error.message}`));
|
|
@@ -30,7 +30,6 @@ function upgrade(template_dir) {
|
|
|
30
30
|
.then(resolve, reject);
|
|
31
31
|
});
|
|
32
32
|
});
|
|
33
|
-
}
|
|
33
|
+
};
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
module.exports = upgrade;
|
|
35
|
+
exports.title = "Add build rules to template.yml";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var fs = require("fs"),
|
|
4
4
|
sdk = require("../../sdk");
|
|
5
5
|
|
|
6
|
-
function upgrade(template_dir) {
|
|
6
|
+
exports.upgrade = function upgrade(template_dir) {
|
|
7
7
|
return new Promise(function(resolve, reject) {
|
|
8
8
|
fs.stat(template_dir, function(error, stat) {
|
|
9
9
|
if (error) return reject(new Error(`Could not access ${template_dir}: ${error.message}`));
|
|
@@ -20,7 +20,6 @@ function upgrade(template_dir) {
|
|
|
20
20
|
.then(resolve, reject);
|
|
21
21
|
});
|
|
22
22
|
});
|
|
23
|
-
}
|
|
23
|
+
};
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
module.exports = upgrade;
|
|
25
|
+
exports.title = "Remove autoheight config from template.yml";
|
package/lib/cmd/upgrade/index.js
CHANGED
|
@@ -9,8 +9,8 @@ const upgrades = [
|
|
|
9
9
|
require("./4-remove-autoheight-config"),
|
|
10
10
|
];
|
|
11
11
|
|
|
12
|
-
function runUpgrade(upgrade, template_dir) {
|
|
13
|
-
log.info("Running: " +
|
|
12
|
+
function runUpgrade({ upgrade, title }, template_dir) {
|
|
13
|
+
log.info("Running: " + title);
|
|
14
14
|
|
|
15
15
|
return upgrade(template_dir)
|
|
16
16
|
.then((upgraded) => {
|
|
@@ -34,7 +34,7 @@ function runUpgrades(template_dir, num_run=0) {
|
|
|
34
34
|
.then(() => runUpgrades(template_dir, num_run));
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
function upgrade(args) {
|
|
37
|
+
exports.command = function upgrade(args) {
|
|
38
38
|
const template_dir = args._[1] || ".";
|
|
39
39
|
runUpgrades(template_dir)
|
|
40
40
|
.then((num_upgrades) => {
|
|
@@ -47,9 +47,9 @@ function upgrade(args) {
|
|
|
47
47
|
if (args.debug) log.problem("Upgrade failed", error.message, error.stack);
|
|
48
48
|
else log.problem("Upgrade failed", error.message);
|
|
49
49
|
});
|
|
50
|
-
}
|
|
50
|
+
};
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
exports.help = `
|
|
53
53
|
flourish upgrade [template_directory]
|
|
54
54
|
|
|
55
55
|
Upgrade the template in template_directory, or in the current directory if no
|
|
@@ -58,5 +58,3 @@ Flourish.
|
|
|
58
58
|
|
|
59
59
|
This is only needed when incompatible changes have been made to Flourish.
|
|
60
60
|
`;
|
|
61
|
-
|
|
62
|
-
module.exports = upgrade;
|
package/lib/cmd/version.js
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
sdk = require("../sdk");
|
|
3
|
+
var sdk = require("../sdk");
|
|
5
4
|
|
|
6
|
-
function version(
|
|
7
|
-
sdk.
|
|
8
|
-
|
|
9
|
-
.catch((error) => {
|
|
10
|
-
if (args.debug) log.die("Failed to get SDK version number", error.message, error.stack);
|
|
11
|
-
else log.die("Failed to get SDK version number", error.message);
|
|
12
|
-
});
|
|
13
|
-
}
|
|
5
|
+
exports.command = function version() {
|
|
6
|
+
console.log(sdk.SDK_VERSION);
|
|
7
|
+
};
|
|
14
8
|
|
|
15
|
-
|
|
9
|
+
exports.help = `
|
|
16
10
|
Prints the version number of the Flourish SDK.
|
|
17
11
|
`;
|
|
18
|
-
|
|
19
|
-
module.exports = version;
|
package/lib/cmd/whoami.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
var log = require("../log"),
|
|
4
4
|
sdk = require("../sdk");
|
|
5
5
|
|
|
6
|
-
function whoami(args
|
|
7
|
-
sdk.request(
|
|
6
|
+
exports.command = function whoami(args) {
|
|
7
|
+
sdk.request(args, "user/whoami", {})
|
|
8
8
|
.then((user_info) => {
|
|
9
9
|
if (args.full) {
|
|
10
10
|
console.log(JSON.stringify(user_info, null, 4));
|
|
@@ -14,14 +14,12 @@ function whoami(args, server_opts) {
|
|
|
14
14
|
}
|
|
15
15
|
})
|
|
16
16
|
.catch((error) => log.die("Unexpected error", error.message, error.stack));
|
|
17
|
-
}
|
|
17
|
+
};
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
exports.help = `
|
|
20
20
|
flourish [--full] whoami
|
|
21
21
|
|
|
22
22
|
With no options, prints the username of the currently logged-in account.
|
|
23
23
|
|
|
24
24
|
With the --full option, prints all the account metadata in JSON format.
|
|
25
25
|
`;
|
|
26
|
-
|
|
27
|
-
module.exports = whoami;
|
package/lib/sdk.js
CHANGED
|
@@ -19,27 +19,8 @@ const fs = require("fs"),
|
|
|
19
19
|
const sdk_tokens_file = path.join(process.env.HOME || process.env.USERPROFILE, ".flourish_sdk");
|
|
20
20
|
|
|
21
21
|
const YAML_DUMP_OPTS = { flowLevel: 4 };
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
var sdk_version = null;
|
|
25
|
-
function getSdkVersion() {
|
|
26
|
-
if (sdk_version) return Promise.resolve(sdk_version);
|
|
27
|
-
return new Promise(function(resolve, reject) {
|
|
28
|
-
fs.readFile(package_json_filename, "utf8", function(error, package_json) {
|
|
29
|
-
if (error) return reject(error);
|
|
30
|
-
const package_object = JSON.parse(package_json);
|
|
31
|
-
resolve(sdk_version = package_object.version);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function getSDKMajorVersion() {
|
|
37
|
-
return getSdkVersion()
|
|
38
|
-
.then((sdk_version) => {
|
|
39
|
-
const version_tuple = sdk_version.split(".").map((x) => parseInt(x));
|
|
40
|
-
return version_tuple[0];
|
|
41
|
-
});
|
|
42
|
-
}
|
|
22
|
+
const SDK_VERSION = require("../package.json").version;
|
|
23
|
+
const SDK_MAJOR_VERSION = semver.parse(SDK_VERSION)[0];
|
|
43
24
|
|
|
44
25
|
function getSdkToken(server_opts) {
|
|
45
26
|
return new Promise(function(resolve, reject) {
|
|
@@ -110,7 +91,6 @@ async function request(server_opts, method, data) {
|
|
|
110
91
|
}
|
|
111
92
|
}
|
|
112
93
|
|
|
113
|
-
const sdk_version = await getSdkVersion();
|
|
114
94
|
const protocol = server_opts.host.match(/^(localhost|127\.0\.0\.1|.*\.local)(:\d+)?$/) ? "http:" : "https:";
|
|
115
95
|
const url = `${protocol}//${server_opts.host}/api/v1/${method}`;
|
|
116
96
|
const options = { method: data ? "POST" : "GET" };
|
|
@@ -120,12 +100,12 @@ async function request(server_opts, method, data) {
|
|
|
120
100
|
if (sdk_token) {
|
|
121
101
|
data.append("sdk_token", sdk_token);
|
|
122
102
|
}
|
|
123
|
-
data.append("sdk_version",
|
|
103
|
+
data.append("sdk_version", SDK_VERSION);
|
|
124
104
|
options.headers = data.getHeaders();
|
|
125
105
|
options.body = data;
|
|
126
106
|
}
|
|
127
107
|
else {
|
|
128
|
-
options.body = JSON.stringify({ ...data, sdk_token, sdk_version });
|
|
108
|
+
options.body = JSON.stringify({ ...data, sdk_token, sdk_version: SDK_VERSION });
|
|
129
109
|
options.headers = { "content-type": "application/json" };
|
|
130
110
|
}
|
|
131
111
|
}
|
|
@@ -345,33 +325,45 @@ async function resolveImports(config, template_dir) {
|
|
|
345
325
|
qualifyNames(imported_settings, setting.property);
|
|
346
326
|
if ("overrides" in setting) {
|
|
347
327
|
setting.overrides.forEach(function(override) {
|
|
348
|
-
const
|
|
328
|
+
const use_tags = override.tag;
|
|
329
|
+
let settings_to_target = [];
|
|
330
|
+
if (use_tags) settings_to_target = Array.isArray(override.tag) ? override.tag : [override.tag];
|
|
331
|
+
else settings_to_target = Array.isArray(override.property) ? override.property : [override.property];
|
|
349
332
|
const method = override.method || "replace";
|
|
350
|
-
for (let
|
|
351
|
-
const
|
|
352
|
-
|
|
333
|
+
for (let target of settings_to_target) {
|
|
334
|
+
const settings_to_override = imported_settings.filter(function(setting) {
|
|
335
|
+
if (use_tags) {
|
|
336
|
+
if (!setting.tag) return false;
|
|
337
|
+
const setting_tags = Array.isArray(setting.tag) ? setting.tag : [setting.tag];
|
|
338
|
+
return setting_tags.includes(target);
|
|
339
|
+
}
|
|
340
|
+
return setting.property === target;
|
|
341
|
+
});
|
|
342
|
+
if (!settings_to_override.length) continue;
|
|
353
343
|
for (let name in override) {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
if (
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
let extendee = s[name];
|
|
360
|
-
if (extendee === undefined) {
|
|
361
|
-
if (name === "show_if" && s.hide_if !== undefined) {
|
|
362
|
-
throw new Error(`Cannot extend a show_if when hide_if defined for property ${s.property}`);
|
|
344
|
+
for (const s of settings_to_override) {
|
|
345
|
+
if (name === "property" || name === "tag" || name === "method") continue;
|
|
346
|
+
if (method === "extend") {
|
|
347
|
+
if (["show_if", "hide_if"].includes(name) && typeof override[name] === "boolean") {
|
|
348
|
+
throw new Error(`Cannot extend a ${name} with Boolean value for property ${s.property}`);
|
|
363
349
|
}
|
|
364
|
-
|
|
365
|
-
|
|
350
|
+
let extendee = s[name];
|
|
351
|
+
if (extendee === undefined) {
|
|
352
|
+
if (name === "show_if" && s.hide_if !== undefined) {
|
|
353
|
+
throw new Error(`Cannot extend a show_if when hide_if defined for property ${s.property}`);
|
|
354
|
+
}
|
|
355
|
+
else if (name === "hide_if" && s.show_if !== undefined) {
|
|
356
|
+
throw new Error(`Cannot extend a hide_if when show_if defined for property ${s.property}`);
|
|
357
|
+
}
|
|
358
|
+
extendee = {};
|
|
366
359
|
}
|
|
367
|
-
|
|
360
|
+
s[name] = extendItem(extendee, override[name]);
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
s[name] = override[name];
|
|
364
|
+
if (name === "show_if" && s.hide_if) delete s.hide_if;
|
|
365
|
+
else if (name === "hide_if" && s.show_if) delete s.show_if;
|
|
368
366
|
}
|
|
369
|
-
s[name] = extendItem(extendee, override[name]);
|
|
370
|
-
}
|
|
371
|
-
else {
|
|
372
|
-
s[name] = override[name];
|
|
373
|
-
if (name === "show_if" && s.hide_if) delete s.hide_if;
|
|
374
|
-
else if (name === "hide_if" && s.show_if) delete s.show_if;
|
|
375
367
|
}
|
|
376
368
|
}
|
|
377
369
|
}
|
|
@@ -528,18 +520,15 @@ function writePackageJson(template_dir, json) {
|
|
|
528
520
|
}
|
|
529
521
|
|
|
530
522
|
function checkTemplateVersion(template_dir) {
|
|
531
|
-
return
|
|
532
|
-
readConfig(template_dir),
|
|
533
|
-
getSDKMajorVersion(),
|
|
534
|
-
]).then(([config, sdk_major_version]) => {
|
|
523
|
+
return readConfig(template_dir).then(config => {
|
|
535
524
|
const template_sdk_version = config.sdk_version;
|
|
536
525
|
if (!template_sdk_version) {
|
|
537
526
|
throw new Error("Template does not specify an sdk_version");
|
|
538
527
|
}
|
|
539
|
-
if (template_sdk_version <
|
|
528
|
+
if (template_sdk_version < SDK_MAJOR_VERSION) {
|
|
540
529
|
throw new Error("This template was built for an older version of Flourish. Try running 'flourish upgrade'");
|
|
541
530
|
}
|
|
542
|
-
if (template_sdk_version >
|
|
531
|
+
if (template_sdk_version > SDK_MAJOR_VERSION) {
|
|
543
532
|
throw new Error("This template was built for an newer version of Flourish than you have. Try updating the SDK.");
|
|
544
533
|
}
|
|
545
534
|
});
|
|
@@ -559,7 +548,7 @@ const TEMPLATE_SPECIAL = new Set([
|
|
|
559
548
|
]);
|
|
560
549
|
|
|
561
550
|
module.exports = {
|
|
562
|
-
checkTemplateVersion,
|
|
551
|
+
checkTemplateVersion,
|
|
563
552
|
|
|
564
553
|
getSdkToken, setSdkToken, deleteSdkTokens,
|
|
565
554
|
request,
|
|
@@ -567,5 +556,5 @@ module.exports = {
|
|
|
567
556
|
readConfig, readAndValidateConfig, writeConfig, buildRules,
|
|
568
557
|
incrementPrereleaseTag, removePrereleaseTag, incrementPatchVersion,
|
|
569
558
|
|
|
570
|
-
TEMPLATE_SPECIAL_FILES, TEMPLATE_SPECIAL_DIRECTORIES, TEMPLATE_SPECIAL,
|
|
559
|
+
TEMPLATE_SPECIAL_FILES, TEMPLATE_SPECIAL_DIRECTORIES, TEMPLATE_SPECIAL, SDK_VERSION, SDK_MAJOR_VERSION
|
|
571
560
|
};
|