@osdk/create-app 0.1.0 → 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/build/js/index.cjs +54 -6
- package/build/js/index.cjs.map +1 -1
- package/build/js/index.mjs +54 -6
- package/build/js/index.mjs.map +1 -1
- package/build/types/generate/generateFoundryConfigJson.d.ts +5 -0
- package/build/types/generate/generateFoundryConfigJson.test.d.ts +1 -0
- package/build/types/prompts/promptApplicationRid.d.ts +3 -0
- package/build/types/prompts/promptApplicationRid.test.d.ts +1 -0
- package/build/types/templates.d.ts +1 -0
- package/changelog/0.2.0/pr-40.v2.yml +5 -0
- package/changelog/0.2.0/pr-44.v2.yml +5 -0
- package/package.json +1 -1
package/build/js/index.cjs
CHANGED
|
@@ -69,13 +69,32 @@ ${envPrefix}FOUNDRY_CLIENT_ID=${clientId}
|
|
|
69
69
|
`;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
// src/generate/generateFoundryConfigJson.ts
|
|
73
|
+
function generateFoundryConfigJson({
|
|
74
|
+
foundryUrl,
|
|
75
|
+
application,
|
|
76
|
+
directory
|
|
77
|
+
}) {
|
|
78
|
+
return JSON.stringify({
|
|
79
|
+
foundryUrl,
|
|
80
|
+
site: {
|
|
81
|
+
application,
|
|
82
|
+
directory,
|
|
83
|
+
autoVersion: {
|
|
84
|
+
type: "git-describe",
|
|
85
|
+
tagPrefix: ""
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}, null, 2) + "\n";
|
|
89
|
+
}
|
|
90
|
+
|
|
72
91
|
// src/generate/generateNpmRc.ts
|
|
73
92
|
function generateNpmRc({
|
|
74
93
|
osdkPackage,
|
|
75
94
|
osdkRegistryUrl
|
|
76
95
|
}) {
|
|
77
96
|
const withoutProtocol = osdkRegistryUrl.replace(/^https:\/\//, "");
|
|
78
|
-
return `//${withoutProtocol}:_authToken=\${
|
|
97
|
+
return `//${withoutProtocol}:_authToken=\${FOUNDRY_TOKEN}
|
|
79
98
|
${osdkPackage.split("/")[0]}:registry=${osdkRegistryUrl}
|
|
80
99
|
`;
|
|
81
100
|
}
|
|
@@ -86,6 +105,22 @@ function italic(text) {
|
|
|
86
105
|
return utils.colorize("italic", text);
|
|
87
106
|
}
|
|
88
107
|
|
|
108
|
+
// src/prompts/promptApplicationRid.ts
|
|
109
|
+
async function promptApplicationRid({
|
|
110
|
+
application
|
|
111
|
+
}) {
|
|
112
|
+
while (application == null || !/^ri\.third-party-applications\.[^.]+\.application\.[^.]+$/.test(application)) {
|
|
113
|
+
if (application != null) {
|
|
114
|
+
consola.fail("Please enter a valid application resource identifier (rid)");
|
|
115
|
+
}
|
|
116
|
+
application = await consola.prompt(`Enter the application resource identifier (rid) for your application from Developer Console:
|
|
117
|
+
${italic("(Example ri.third-party-applications.main.application.1c66b352-4e00-40d2-995d-061c9d533ace)")}`, {
|
|
118
|
+
type: "text"
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return application;
|
|
122
|
+
}
|
|
123
|
+
|
|
89
124
|
// src/prompts/promptApplicationUrl.ts
|
|
90
125
|
async function promptApplicationUrl({
|
|
91
126
|
skipApplicationUrl,
|
|
@@ -249,15 +284,18 @@ async function promptProject({
|
|
|
249
284
|
var TEMPLATES = [{
|
|
250
285
|
id: "template-react",
|
|
251
286
|
label: "React",
|
|
252
|
-
envPrefix: "VITE_"
|
|
287
|
+
envPrefix: "VITE_",
|
|
288
|
+
buildDirectory: "./dist"
|
|
253
289
|
}, {
|
|
254
290
|
id: "template-vue",
|
|
255
291
|
label: "Vue",
|
|
256
|
-
envPrefix: "VITE_"
|
|
292
|
+
envPrefix: "VITE_",
|
|
293
|
+
buildDirectory: "./dist"
|
|
257
294
|
}, {
|
|
258
295
|
id: "template-next-static-export",
|
|
259
296
|
label: "Next (static export)",
|
|
260
|
-
envPrefix: "NEXT_PUBLIC_"
|
|
297
|
+
envPrefix: "NEXT_PUBLIC_",
|
|
298
|
+
buildDirectory: "./out"
|
|
261
299
|
}];
|
|
262
300
|
|
|
263
301
|
// src/prompts/promptTemplate.ts
|
|
@@ -283,7 +321,7 @@ async function promptTemplate(parsed) {
|
|
|
283
321
|
|
|
284
322
|
// src/cli.ts
|
|
285
323
|
async function cli(args = process.argv) {
|
|
286
|
-
const base = yargs__default.default(helpers.hideBin(args)).version("0.
|
|
324
|
+
const base = yargs__default.default(helpers.hideBin(args)).version("0.2.0").strict().help().command("$0 [project] [--<option>]", "Create a new OSDK application based on framework templates. Information may be provided through arguments to skip interactive prompts.", (yargs2) => yargs2.positional("project", {
|
|
287
325
|
type: "string",
|
|
288
326
|
describe: "Project name to create"
|
|
289
327
|
}).option("overwrite", {
|
|
@@ -301,6 +339,9 @@ async function cli(args = process.argv) {
|
|
|
301
339
|
}).option("skip-application-url", {
|
|
302
340
|
type: "boolean",
|
|
303
341
|
describe: "Skip filling in URL the production application will be hosted on"
|
|
342
|
+
}).option("application", {
|
|
343
|
+
type: "string",
|
|
344
|
+
describe: "Application resource identifier (rid)"
|
|
304
345
|
}).option("client-id", {
|
|
305
346
|
type: "string",
|
|
306
347
|
describe: "OAuth client ID for application"
|
|
@@ -320,6 +361,7 @@ async function cli(args = process.argv) {
|
|
|
320
361
|
const template = await promptTemplate(parsed);
|
|
321
362
|
const foundryUrl = await promptFoundryUrl(parsed);
|
|
322
363
|
const applicationUrl = await promptApplicationUrl(parsed);
|
|
364
|
+
const application = await promptApplicationRid(parsed);
|
|
323
365
|
const clientId = await promptClientId(parsed);
|
|
324
366
|
const osdkPackage = await promptOsdkPackage(parsed);
|
|
325
367
|
const osdkRegistryUrl = await promptOsdkRegistryUrl(parsed);
|
|
@@ -397,13 +439,19 @@ async function cli(args = process.argv) {
|
|
|
397
439
|
clientId
|
|
398
440
|
});
|
|
399
441
|
fs2__default.default.writeFileSync(path2__default.default.join(root, ".env.production"), envProduction);
|
|
442
|
+
const foundryConfigJson = generateFoundryConfigJson({
|
|
443
|
+
foundryUrl,
|
|
444
|
+
application,
|
|
445
|
+
directory: template.buildDirectory
|
|
446
|
+
});
|
|
447
|
+
fs2__default.default.writeFileSync(path2__default.default.join(root, "foundry.config.json"), foundryConfigJson);
|
|
400
448
|
consola.success("Success");
|
|
401
449
|
const cdRelative = path2__default.default.relative(cwd, root);
|
|
402
450
|
consola.box({
|
|
403
451
|
message: `Done! Run the following commands to get started:
|
|
404
452
|
|
|
405
453
|
\`cd ${cdRelative}\`
|
|
406
|
-
\`export
|
|
454
|
+
\`export FOUNDRY_TOKEN=<token>\`
|
|
407
455
|
\`npm install\`
|
|
408
456
|
\`npm run dev\``,
|
|
409
457
|
style: {
|
package/build/js/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli.ts","../../src/consola.ts","../../src/generate/generateEnv.ts","../../src/generate/generateNpmRc.ts","../../src/highlight.ts","../../src/prompts/promptApplicationUrl.ts","../../src/prompts/promptClientId.ts","../../src/prompts/promptFoundryUrl.ts","../../src/prompts/promptOsdkPackage.ts","../../src/prompts/promptOsdkRegistryUrl.ts","../../src/prompts/promptOverwrite.ts","../../src/prompts/promptProject.ts","../../src/templates.ts","../../src/prompts/promptTemplate.ts"],"names":["fs","path","template","yargs"],"mappings":"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","sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { findUpSync } from \"find-up\";\nimport Handlebars from \"handlebars\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { consola } from \"./consola.js\";\nimport { generateEnvDevelopment, generateEnvProduction } from \"./generate/generateEnv.js\";\nimport { generateNpmRc } from \"./generate/generateNpmRc.js\";\nimport { green } from \"./highlight.js\";\nimport { promptApplicationUrl } from \"./prompts/promptApplicationUrl.js\";\nimport { promptClientId } from \"./prompts/promptClientId.js\";\nimport { promptFoundryUrl } from \"./prompts/promptFoundryUrl.js\";\nimport { promptOsdkPackage } from \"./prompts/promptOsdkPackage.js\";\nimport { promptOsdkRegistryUrl } from \"./prompts/promptOsdkRegistryUrl.js\";\nimport { promptOverwrite } from \"./prompts/promptOverwrite.js\";\nimport { promptProject } from \"./prompts/promptProject.js\";\nimport { promptTemplate } from \"./prompts/promptTemplate.js\";\nexport async function cli(args = process.argv) {\n const base = yargs(hideBin(args)).version(process.env.PACKAGE_VERSION ?? \"\").strict().help().command(\"$0 [project] [--<option>]\", \"Create a new OSDK application based on framework templates. Information may be provided through arguments to skip interactive prompts.\", yargs => yargs.positional(\"project\", {\n type: \"string\",\n describe: \"Project name to create\"\n }).option(\"overwrite\", {\n type: \"boolean\",\n describe: \"Overwrite project directory if already exists\"\n }).option(\"template\", {\n type: \"string\",\n describe: \"Template name to use\"\n }).option(\"foundry-url\", {\n type: \"string\",\n describe: \"URL for the Foundry stack\"\n }).option(\"application-url\", {\n type: \"string\",\n describe: \"URL the production application will be hosted on\"\n }).option(\"skip-application-url\", {\n type: \"boolean\",\n describe: \"Skip filling in URL the production application will be hosted on\"\n }).option(\"client-id\", {\n type: \"string\",\n describe: \"OAuth client ID for application\"\n }).option(\"osdk-package\", {\n type: \"string\",\n describe: \"OSDK package name for application\"\n }).option(\"osdk-registry-url\", {\n type: \"string\",\n describe: \"URL for NPM registry to install OSDK package\"\n }));\n const parsed = base.parseSync();\n const project = await promptProject(parsed);\n const overwrite = await promptOverwrite({\n ...parsed,\n project\n });\n const template = await promptTemplate(parsed);\n const foundryUrl = await promptFoundryUrl(parsed);\n const applicationUrl = await promptApplicationUrl(parsed);\n const clientId = await promptClientId(parsed);\n const osdkPackage = await promptOsdkPackage(parsed);\n const osdkRegistryUrl = await promptOsdkRegistryUrl(parsed);\n consola.log(\"\");\n consola.start(`Creating project ${green(project)} using template ${green(template.id)}`);\n const cwd = process.cwd();\n const root = path.join(cwd, project);\n if (fs.existsSync(root)) {\n if (overwrite) {\n consola.info(`Overwriting existing project directory`);\n fs.rmSync(root, {\n recursive: true,\n force: true\n });\n fs.mkdirSync(root, {\n recursive: true\n });\n } else {\n consola.info(`Reusing existing project directory`);\n }\n } else {\n consola.info(`Creating project directory`);\n fs.mkdirSync(root, {\n recursive: true\n });\n }\n consola.info(`Copying files into project directory`);\n const templatesDir = findUpSync(\"templates\", {\n cwd: path.dirname(fileURLToPath(import.meta.url)),\n type: \"directory\"\n });\n if (templatesDir == null) {\n throw new Error(`Could not find templates directory`);\n }\n const templateDir = path.resolve(templatesDir, template.id);\n fs.cpSync(templateDir, root, {\n recursive: true\n });\n const templateContext = {\n project,\n osdkPackage\n };\n const templateHbs = function (dir) {\n fs.readdirSync(dir).forEach(function (file) {\n file = dir + \"/\" + file;\n const stat = fs.statSync(file);\n if (stat.isDirectory()) {\n templateHbs(file);\n return;\n }\n if (!file.endsWith(\".hbs\")) {\n return;\n }\n const templated = Handlebars.compile(fs.readFileSync(file, \"utf-8\"))(templateContext);\n fs.writeFileSync(file.replace(/.hbs$/, \"\"), templated);\n fs.rmSync(file);\n });\n };\n templateHbs(root);\n const npmRc = generateNpmRc({\n osdkPackage,\n osdkRegistryUrl\n });\n fs.writeFileSync(path.join(root, \".npmrc\"), npmRc);\n const envDevelopment = generateEnvDevelopment({\n envPrefix: template.envPrefix,\n foundryUrl,\n clientId\n });\n fs.writeFileSync(path.join(root, \".env.development\"), envDevelopment);\n const envProduction = generateEnvProduction({\n envPrefix: template.envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n });\n fs.writeFileSync(path.join(root, \".env.production\"), envProduction);\n consola.success(\"Success\");\n const cdRelative = path.relative(cwd, root);\n consola.box({\n message: `Done! Run the following commands to get started:\\n` + `\\n` + ` \\`cd ${cdRelative}\\`\\n` + ` \\`export FOUNDRY_SDK_AUTH_TOKEN=<token>\\`\\n` + ` \\`npm install\\`\\n` + ` \\`npm run dev\\``,\n style: {\n padding: 2,\n borderColor: \"green\",\n borderStyle: \"rounded\"\n }\n });\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola as defaultConsola, createConsola } from \"consola\";\nexport const consola = createConsola({\n // https://github.com/unjs/consola/issues/251\n async prompt(...params) {\n const response = await defaultConsola.prompt(...params);\n if (typeof response === \"symbol\" && response.toString() === \"Symbol(clack:cancel)\") {\n defaultConsola.fail(\"Operation cancelled\");\n process.exit(0);\n }\n return response;\n }\n});","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateEnvDevelopment({\n envPrefix,\n foundryUrl,\n clientId\n}) {\n return generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl: \"http://localhost:8080\",\n clientId\n });\n}\nexport function generateEnvProduction({\n envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n}) {\n return generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl: applicationUrl ?? \"<Fill in the domain at which you deploy your application>\",\n clientId\n });\n}\nfunction generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n}) {\n return `${envPrefix}FOUNDRY_API_URL=${foundryUrl}\\n` + `${envPrefix}FOUNDRY_REDIRECT_URL=${applicationUrl}/auth/callback\\n` + `${envPrefix}FOUNDRY_CLIENT_ID=${clientId}\\n`;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateNpmRc({\n osdkPackage,\n osdkRegistryUrl\n}) {\n const withoutProtocol = osdkRegistryUrl.replace(/^https:\\/\\//, \"\");\n return `//${withoutProtocol}:_authToken=\\${FOUNDRY_SDK_AUTH_TOKEN}\\n` + `${osdkPackage.split(\"/\")[0]}:registry=${osdkRegistryUrl}\\n`;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { colorize } from \"consola/utils\";\nexport function green(text) {\n return colorize(\"green\", text);\n}\nexport function italic(text) {\n return colorize(\"italic\", text);\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptApplicationUrl({\n skipApplicationUrl,\n applicationUrl\n}) {\n if (skipApplicationUrl) {\n return undefined;\n }\n if (applicationUrl == null) {\n const skip = await consola.prompt(`Do you know the URL your production application will be hosted on? This is required to create a production build of your application with the correct OAuth redirect URL.`, {\n type: \"select\",\n options: [{\n label: \"Yes, prefill it for me\",\n value: \"yes\"\n }, {\n label: \"No, I will fill it in myself later\",\n value: \"no\"\n }]\n }\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n );\n if (skip === \"no\") {\n return undefined;\n }\n }\n while (applicationUrl == null || !/^https?:\\/\\//.test(applicationUrl)) {\n if (applicationUrl != null) {\n consola.fail(\"Please enter a valid application URL\");\n }\n applicationUrl = await consola.prompt(`Enter the URL your production application will be hosted on:\\n${italic(\"(Example https://myapp.example.palantirfoundry.com/)\")}`, {\n type: \"text\"\n });\n }\n return applicationUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptClientId({\n clientId\n}) {\n while (clientId == null || !/^[0-9a-f]+$/.test(clientId)) {\n if (clientId != null) {\n consola.fail(\"Please enter a valid OAuth client ID\");\n }\n clientId = await consola.prompt(`Enter the OAuth client ID for your application from Developer Console:\\n${italic(\"(Example 2650385ab6c5e0df3b44aff776b00a42)\")}`, {\n type: \"text\"\n });\n }\n return clientId;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptFoundryUrl({\n foundryUrl\n}) {\n while (foundryUrl == null || !foundryUrl.startsWith(\"https://\")) {\n if (foundryUrl != null) {\n consola.fail(\"Please enter a valid Foundry URL\");\n }\n foundryUrl = await consola.prompt(`Enter the URL for your Foundry stack:\\n${italic(\"(Example https://example.palantirfoundry.com/)\")}`, {\n type: \"text\"\n });\n }\n return foundryUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptOsdkPackage({\n osdkPackage\n}) {\n while (osdkPackage == null || !/^@[a-z0-9-]+\\/sdk$/.test(osdkPackage)) {\n if (osdkPackage != null) {\n consola.fail(\"Please enter a valid OSDK package name\");\n }\n osdkPackage = await consola.prompt(`Enter the OSDK package name for your application from Developer Console:\\n${italic(\"(Example @my-app/sdk)\")}`, {\n type: \"text\"\n });\n }\n return osdkPackage;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptOsdkRegistryUrl({\n osdkRegistryUrl\n}) {\n while (osdkRegistryUrl == null || !/^https:\\/\\/[^/]+\\/artifacts\\/api\\/repositories\\/ri\\.artifacts\\.[^/]+\\/contents\\/release\\/npm\\/?$/.test(osdkRegistryUrl)) {\n if (osdkRegistryUrl != null) {\n consola.fail(\"Please enter a valid NPM registry URL to install your OSDK package\");\n }\n osdkRegistryUrl = await consola.prompt(`Enter the NPM registry URL to install your OSDK package from Developer Console:\\n${italic(\"(Example https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.a4a7fe1c-486f-4226-b706-7b90005f527d/contents/release/npm)\")}`, {\n type: \"text\"\n });\n }\n return osdkRegistryUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { consola } from \"../consola.js\";\nimport { green } from \"../highlight.js\";\nexport async function promptOverwrite({\n project,\n overwrite\n}) {\n if (overwrite != null) {\n return overwrite;\n }\n if (!fs.existsSync(path.join(process.cwd(), project))) {\n return true;\n }\n const result = await consola.prompt(`The directory ${green(project)} already exists do you want to overwrite or ignore it?`, {\n type: \"select\",\n options: [{\n label: \"Remove existing files and continue\",\n value: \"overwrite\"\n }, {\n label: \"Ignore files and continue\",\n value: \"ignore\"\n }, {\n label: \"Cancel\",\n value: \"cancel\"\n }]\n }\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n );\n switch (result) {\n case \"overwrite\":\n return true;\n case \"ignore\":\n return false;\n case \"cancel\":\n consola.fail(\"Operation cancelled\");\n process.exit(0);\n }\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nexport async function promptProject({\n project\n}) {\n while (project == null || !/^[a-zA-Z0-9-_]+$/.test(project)) {\n if (project != null) {\n consola.fail(\"Project name can only contain alphanumeric characters, hyphens and underscores\");\n }\n project = await consola.prompt(\"Project name:\", {\n type: \"text\",\n placeholder: \"my-osdk-app\",\n default: \"my-osdk-app\"\n });\n }\n return project;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const TEMPLATES = [{\n id: \"template-react\",\n label: \"React\",\n envPrefix: \"VITE_\"\n}, {\n id: \"template-vue\",\n label: \"Vue\",\n envPrefix: \"VITE_\"\n}, {\n id: \"template-next-static-export\",\n label: \"Next (static export)\",\n envPrefix: \"NEXT_PUBLIC_\"\n}];","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { green } from \"../highlight.js\";\nimport { TEMPLATES } from \"../templates.js\";\nexport async function promptTemplate(parsed) {\n let template = TEMPLATES.find(t => t.id === parsed.template);\n if (template == null) {\n const templateId = await consola.prompt(parsed.template != null ? `The provided template ${green(parsed.template)} is invalid please select a framework:` : \"Select a framework:\", {\n type: \"select\",\n options: TEMPLATES.map(template => ({\n value: template.id,\n label: template.label\n }))\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n });\n template = TEMPLATES.find(t => t.id === templateId);\n if (template == null) {\n throw new Error(`Template ${templateId} should be found`);\n }\n }\n return template;\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli.ts","../../src/consola.ts","../../src/generate/generateEnv.ts","../../src/generate/generateFoundryConfigJson.ts","../../src/generate/generateNpmRc.ts","../../src/highlight.ts","../../src/prompts/promptApplicationRid.ts","../../src/prompts/promptApplicationUrl.ts","../../src/prompts/promptClientId.ts","../../src/prompts/promptFoundryUrl.ts","../../src/prompts/promptOsdkPackage.ts","../../src/prompts/promptOsdkRegistryUrl.ts","../../src/prompts/promptOverwrite.ts","../../src/prompts/promptProject.ts","../../src/templates.ts","../../src/prompts/promptTemplate.ts"],"names":["fs","path","template","yargs"],"mappings":"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","sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { findUpSync } from \"find-up\";\nimport Handlebars from \"handlebars\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { consola } from \"./consola.js\";\nimport { generateEnvDevelopment, generateEnvProduction } from \"./generate/generateEnv.js\";\nimport { generateFoundryConfigJson } from \"./generate/generateFoundryConfigJson.js\";\nimport { generateNpmRc } from \"./generate/generateNpmRc.js\";\nimport { green } from \"./highlight.js\";\nimport { promptApplicationRid } from \"./prompts/promptApplicationRid.js\";\nimport { promptApplicationUrl } from \"./prompts/promptApplicationUrl.js\";\nimport { promptClientId } from \"./prompts/promptClientId.js\";\nimport { promptFoundryUrl } from \"./prompts/promptFoundryUrl.js\";\nimport { promptOsdkPackage } from \"./prompts/promptOsdkPackage.js\";\nimport { promptOsdkRegistryUrl } from \"./prompts/promptOsdkRegistryUrl.js\";\nimport { promptOverwrite } from \"./prompts/promptOverwrite.js\";\nimport { promptProject } from \"./prompts/promptProject.js\";\nimport { promptTemplate } from \"./prompts/promptTemplate.js\";\nexport async function cli(args = process.argv) {\n const base = yargs(hideBin(args)).version(process.env.PACKAGE_VERSION ?? \"\").strict().help().command(\"$0 [project] [--<option>]\", \"Create a new OSDK application based on framework templates. Information may be provided through arguments to skip interactive prompts.\", yargs => yargs.positional(\"project\", {\n type: \"string\",\n describe: \"Project name to create\"\n }).option(\"overwrite\", {\n type: \"boolean\",\n describe: \"Overwrite project directory if already exists\"\n }).option(\"template\", {\n type: \"string\",\n describe: \"Template name to use\"\n }).option(\"foundry-url\", {\n type: \"string\",\n describe: \"URL for the Foundry stack\"\n }).option(\"application-url\", {\n type: \"string\",\n describe: \"URL the production application will be hosted on\"\n }).option(\"skip-application-url\", {\n type: \"boolean\",\n describe: \"Skip filling in URL the production application will be hosted on\"\n }).option(\"application\", {\n type: \"string\",\n describe: \"Application resource identifier (rid)\"\n }).option(\"client-id\", {\n type: \"string\",\n describe: \"OAuth client ID for application\"\n }).option(\"osdk-package\", {\n type: \"string\",\n describe: \"OSDK package name for application\"\n }).option(\"osdk-registry-url\", {\n type: \"string\",\n describe: \"URL for NPM registry to install OSDK package\"\n }));\n const parsed = base.parseSync();\n const project = await promptProject(parsed);\n const overwrite = await promptOverwrite({\n ...parsed,\n project\n });\n const template = await promptTemplate(parsed);\n const foundryUrl = await promptFoundryUrl(parsed);\n const applicationUrl = await promptApplicationUrl(parsed);\n const application = await promptApplicationRid(parsed);\n const clientId = await promptClientId(parsed);\n const osdkPackage = await promptOsdkPackage(parsed);\n const osdkRegistryUrl = await promptOsdkRegistryUrl(parsed);\n consola.log(\"\");\n consola.start(`Creating project ${green(project)} using template ${green(template.id)}`);\n const cwd = process.cwd();\n const root = path.join(cwd, project);\n if (fs.existsSync(root)) {\n if (overwrite) {\n consola.info(`Overwriting existing project directory`);\n fs.rmSync(root, {\n recursive: true,\n force: true\n });\n fs.mkdirSync(root, {\n recursive: true\n });\n } else {\n consola.info(`Reusing existing project directory`);\n }\n } else {\n consola.info(`Creating project directory`);\n fs.mkdirSync(root, {\n recursive: true\n });\n }\n consola.info(`Copying files into project directory`);\n const templatesDir = findUpSync(\"templates\", {\n cwd: path.dirname(fileURLToPath(import.meta.url)),\n type: \"directory\"\n });\n if (templatesDir == null) {\n throw new Error(`Could not find templates directory`);\n }\n const templateDir = path.resolve(templatesDir, template.id);\n fs.cpSync(templateDir, root, {\n recursive: true\n });\n const templateContext = {\n project,\n osdkPackage\n };\n const templateHbs = function (dir) {\n fs.readdirSync(dir).forEach(function (file) {\n file = dir + \"/\" + file;\n const stat = fs.statSync(file);\n if (stat.isDirectory()) {\n templateHbs(file);\n return;\n }\n if (!file.endsWith(\".hbs\")) {\n return;\n }\n const templated = Handlebars.compile(fs.readFileSync(file, \"utf-8\"))(templateContext);\n fs.writeFileSync(file.replace(/.hbs$/, \"\"), templated);\n fs.rmSync(file);\n });\n };\n templateHbs(root);\n const npmRc = generateNpmRc({\n osdkPackage,\n osdkRegistryUrl\n });\n fs.writeFileSync(path.join(root, \".npmrc\"), npmRc);\n const envDevelopment = generateEnvDevelopment({\n envPrefix: template.envPrefix,\n foundryUrl,\n clientId\n });\n fs.writeFileSync(path.join(root, \".env.development\"), envDevelopment);\n const envProduction = generateEnvProduction({\n envPrefix: template.envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n });\n fs.writeFileSync(path.join(root, \".env.production\"), envProduction);\n const foundryConfigJson = generateFoundryConfigJson({\n foundryUrl,\n application,\n directory: template.buildDirectory\n });\n fs.writeFileSync(path.join(root, \"foundry.config.json\"), foundryConfigJson);\n consola.success(\"Success\");\n const cdRelative = path.relative(cwd, root);\n consola.box({\n message: `Done! Run the following commands to get started:\\n` + `\\n` + ` \\`cd ${cdRelative}\\`\\n` + ` \\`export FOUNDRY_TOKEN=<token>\\`\\n` + ` \\`npm install\\`\\n` + ` \\`npm run dev\\``,\n style: {\n padding: 2,\n borderColor: \"green\",\n borderStyle: \"rounded\"\n }\n });\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola as defaultConsola, createConsola } from \"consola\";\nexport const consola = createConsola({\n // https://github.com/unjs/consola/issues/251\n async prompt(...params) {\n const response = await defaultConsola.prompt(...params);\n if (typeof response === \"symbol\" && response.toString() === \"Symbol(clack:cancel)\") {\n defaultConsola.fail(\"Operation cancelled\");\n process.exit(0);\n }\n return response;\n }\n});","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateEnvDevelopment({\n envPrefix,\n foundryUrl,\n clientId\n}) {\n return generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl: \"http://localhost:8080\",\n clientId\n });\n}\nexport function generateEnvProduction({\n envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n}) {\n return generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl: applicationUrl ?? \"<Fill in the domain at which you deploy your application>\",\n clientId\n });\n}\nfunction generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n}) {\n return `${envPrefix}FOUNDRY_API_URL=${foundryUrl}\\n` + `${envPrefix}FOUNDRY_REDIRECT_URL=${applicationUrl}/auth/callback\\n` + `${envPrefix}FOUNDRY_CLIENT_ID=${clientId}\\n`;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateFoundryConfigJson({\n foundryUrl,\n application,\n directory\n}) {\n return JSON.stringify({\n foundryUrl,\n site: {\n application,\n directory,\n autoVersion: {\n type: \"git-describe\",\n tagPrefix: \"\"\n }\n }\n }, null, 2) + \"\\n\";\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateNpmRc({\n osdkPackage,\n osdkRegistryUrl\n}) {\n const withoutProtocol = osdkRegistryUrl.replace(/^https:\\/\\//, \"\");\n return `//${withoutProtocol}:_authToken=\\${FOUNDRY_TOKEN}\\n` + `${osdkPackage.split(\"/\")[0]}:registry=${osdkRegistryUrl}\\n`;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { colorize } from \"consola/utils\";\nexport function green(text) {\n return colorize(\"green\", text);\n}\nexport function italic(text) {\n return colorize(\"italic\", text);\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptApplicationRid({\n application\n}) {\n while (application == null || !/^ri\\.third-party-applications\\.[^.]+\\.application\\.[^.]+$/.test(application)) {\n if (application != null) {\n consola.fail(\"Please enter a valid application resource identifier (rid)\");\n }\n application = await consola.prompt(`Enter the application resource identifier (rid) for your application from Developer Console:\\n${italic(\"(Example ri.third-party-applications.main.application.1c66b352-4e00-40d2-995d-061c9d533ace)\")}`, {\n type: \"text\"\n });\n }\n return application;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptApplicationUrl({\n skipApplicationUrl,\n applicationUrl\n}) {\n if (skipApplicationUrl) {\n return undefined;\n }\n if (applicationUrl == null) {\n const skip = await consola.prompt(`Do you know the URL your production application will be hosted on? This is required to create a production build of your application with the correct OAuth redirect URL.`, {\n type: \"select\",\n options: [{\n label: \"Yes, prefill it for me\",\n value: \"yes\"\n }, {\n label: \"No, I will fill it in myself later\",\n value: \"no\"\n }]\n }\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n );\n if (skip === \"no\") {\n return undefined;\n }\n }\n while (applicationUrl == null || !/^https?:\\/\\//.test(applicationUrl)) {\n if (applicationUrl != null) {\n consola.fail(\"Please enter a valid application URL\");\n }\n applicationUrl = await consola.prompt(`Enter the URL your production application will be hosted on:\\n${italic(\"(Example https://myapp.example.palantirfoundry.com/)\")}`, {\n type: \"text\"\n });\n }\n return applicationUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptClientId({\n clientId\n}) {\n while (clientId == null || !/^[0-9a-f]+$/.test(clientId)) {\n if (clientId != null) {\n consola.fail(\"Please enter a valid OAuth client ID\");\n }\n clientId = await consola.prompt(`Enter the OAuth client ID for your application from Developer Console:\\n${italic(\"(Example 2650385ab6c5e0df3b44aff776b00a42)\")}`, {\n type: \"text\"\n });\n }\n return clientId;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptFoundryUrl({\n foundryUrl\n}) {\n while (foundryUrl == null || !foundryUrl.startsWith(\"https://\")) {\n if (foundryUrl != null) {\n consola.fail(\"Please enter a valid Foundry URL\");\n }\n foundryUrl = await consola.prompt(`Enter the URL for your Foundry stack:\\n${italic(\"(Example https://example.palantirfoundry.com/)\")}`, {\n type: \"text\"\n });\n }\n return foundryUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptOsdkPackage({\n osdkPackage\n}) {\n while (osdkPackage == null || !/^@[a-z0-9-]+\\/sdk$/.test(osdkPackage)) {\n if (osdkPackage != null) {\n consola.fail(\"Please enter a valid OSDK package name\");\n }\n osdkPackage = await consola.prompt(`Enter the OSDK package name for your application from Developer Console:\\n${italic(\"(Example @my-app/sdk)\")}`, {\n type: \"text\"\n });\n }\n return osdkPackage;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptOsdkRegistryUrl({\n osdkRegistryUrl\n}) {\n while (osdkRegistryUrl == null || !/^https:\\/\\/[^/]+\\/artifacts\\/api\\/repositories\\/ri\\.artifacts\\.[^/]+\\/contents\\/release\\/npm\\/?$/.test(osdkRegistryUrl)) {\n if (osdkRegistryUrl != null) {\n consola.fail(\"Please enter a valid NPM registry URL to install your OSDK package\");\n }\n osdkRegistryUrl = await consola.prompt(`Enter the NPM registry URL to install your OSDK package from Developer Console:\\n${italic(\"(Example https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.a4a7fe1c-486f-4226-b706-7b90005f527d/contents/release/npm)\")}`, {\n type: \"text\"\n });\n }\n return osdkRegistryUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { consola } from \"../consola.js\";\nimport { green } from \"../highlight.js\";\nexport async function promptOverwrite({\n project,\n overwrite\n}) {\n if (overwrite != null) {\n return overwrite;\n }\n if (!fs.existsSync(path.join(process.cwd(), project))) {\n return true;\n }\n const result = await consola.prompt(`The directory ${green(project)} already exists do you want to overwrite or ignore it?`, {\n type: \"select\",\n options: [{\n label: \"Remove existing files and continue\",\n value: \"overwrite\"\n }, {\n label: \"Ignore files and continue\",\n value: \"ignore\"\n }, {\n label: \"Cancel\",\n value: \"cancel\"\n }]\n }\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n );\n switch (result) {\n case \"overwrite\":\n return true;\n case \"ignore\":\n return false;\n case \"cancel\":\n consola.fail(\"Operation cancelled\");\n process.exit(0);\n }\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nexport async function promptProject({\n project\n}) {\n while (project == null || !/^[a-zA-Z0-9-_]+$/.test(project)) {\n if (project != null) {\n consola.fail(\"Project name can only contain alphanumeric characters, hyphens and underscores\");\n }\n project = await consola.prompt(\"Project name:\", {\n type: \"text\",\n placeholder: \"my-osdk-app\",\n default: \"my-osdk-app\"\n });\n }\n return project;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const TEMPLATES = [{\n id: \"template-react\",\n label: \"React\",\n envPrefix: \"VITE_\",\n buildDirectory: \"./dist\"\n}, {\n id: \"template-vue\",\n label: \"Vue\",\n envPrefix: \"VITE_\",\n buildDirectory: \"./dist\"\n}, {\n id: \"template-next-static-export\",\n label: \"Next (static export)\",\n envPrefix: \"NEXT_PUBLIC_\",\n buildDirectory: \"./out\"\n}];","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { green } from \"../highlight.js\";\nimport { TEMPLATES } from \"../templates.js\";\nexport async function promptTemplate(parsed) {\n let template = TEMPLATES.find(t => t.id === parsed.template);\n if (template == null) {\n const templateId = await consola.prompt(parsed.template != null ? `The provided template ${green(parsed.template)} is invalid please select a framework:` : \"Select a framework:\", {\n type: \"select\",\n options: TEMPLATES.map(template => ({\n value: template.id,\n label: template.label\n }))\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n });\n template = TEMPLATES.find(t => t.id === templateId);\n if (template == null) {\n throw new Error(`Template ${templateId} should be found`);\n }\n }\n return template;\n}"]}
|
package/build/js/index.mjs
CHANGED
|
@@ -59,13 +59,32 @@ ${envPrefix}FOUNDRY_CLIENT_ID=${clientId}
|
|
|
59
59
|
`;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
// src/generate/generateFoundryConfigJson.ts
|
|
63
|
+
function generateFoundryConfigJson({
|
|
64
|
+
foundryUrl,
|
|
65
|
+
application,
|
|
66
|
+
directory
|
|
67
|
+
}) {
|
|
68
|
+
return JSON.stringify({
|
|
69
|
+
foundryUrl,
|
|
70
|
+
site: {
|
|
71
|
+
application,
|
|
72
|
+
directory,
|
|
73
|
+
autoVersion: {
|
|
74
|
+
type: "git-describe",
|
|
75
|
+
tagPrefix: ""
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}, null, 2) + "\n";
|
|
79
|
+
}
|
|
80
|
+
|
|
62
81
|
// src/generate/generateNpmRc.ts
|
|
63
82
|
function generateNpmRc({
|
|
64
83
|
osdkPackage,
|
|
65
84
|
osdkRegistryUrl
|
|
66
85
|
}) {
|
|
67
86
|
const withoutProtocol = osdkRegistryUrl.replace(/^https:\/\//, "");
|
|
68
|
-
return `//${withoutProtocol}:_authToken=\${
|
|
87
|
+
return `//${withoutProtocol}:_authToken=\${FOUNDRY_TOKEN}
|
|
69
88
|
${osdkPackage.split("/")[0]}:registry=${osdkRegistryUrl}
|
|
70
89
|
`;
|
|
71
90
|
}
|
|
@@ -76,6 +95,22 @@ function italic(text) {
|
|
|
76
95
|
return colorize("italic", text);
|
|
77
96
|
}
|
|
78
97
|
|
|
98
|
+
// src/prompts/promptApplicationRid.ts
|
|
99
|
+
async function promptApplicationRid({
|
|
100
|
+
application
|
|
101
|
+
}) {
|
|
102
|
+
while (application == null || !/^ri\.third-party-applications\.[^.]+\.application\.[^.]+$/.test(application)) {
|
|
103
|
+
if (application != null) {
|
|
104
|
+
consola.fail("Please enter a valid application resource identifier (rid)");
|
|
105
|
+
}
|
|
106
|
+
application = await consola.prompt(`Enter the application resource identifier (rid) for your application from Developer Console:
|
|
107
|
+
${italic("(Example ri.third-party-applications.main.application.1c66b352-4e00-40d2-995d-061c9d533ace)")}`, {
|
|
108
|
+
type: "text"
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return application;
|
|
112
|
+
}
|
|
113
|
+
|
|
79
114
|
// src/prompts/promptApplicationUrl.ts
|
|
80
115
|
async function promptApplicationUrl({
|
|
81
116
|
skipApplicationUrl,
|
|
@@ -239,15 +274,18 @@ async function promptProject({
|
|
|
239
274
|
var TEMPLATES = [{
|
|
240
275
|
id: "template-react",
|
|
241
276
|
label: "React",
|
|
242
|
-
envPrefix: "VITE_"
|
|
277
|
+
envPrefix: "VITE_",
|
|
278
|
+
buildDirectory: "./dist"
|
|
243
279
|
}, {
|
|
244
280
|
id: "template-vue",
|
|
245
281
|
label: "Vue",
|
|
246
|
-
envPrefix: "VITE_"
|
|
282
|
+
envPrefix: "VITE_",
|
|
283
|
+
buildDirectory: "./dist"
|
|
247
284
|
}, {
|
|
248
285
|
id: "template-next-static-export",
|
|
249
286
|
label: "Next (static export)",
|
|
250
|
-
envPrefix: "NEXT_PUBLIC_"
|
|
287
|
+
envPrefix: "NEXT_PUBLIC_",
|
|
288
|
+
buildDirectory: "./out"
|
|
251
289
|
}];
|
|
252
290
|
|
|
253
291
|
// src/prompts/promptTemplate.ts
|
|
@@ -273,7 +311,7 @@ async function promptTemplate(parsed) {
|
|
|
273
311
|
|
|
274
312
|
// src/cli.ts
|
|
275
313
|
async function cli(args = process.argv) {
|
|
276
|
-
const base = yargs(hideBin(args)).version("0.
|
|
314
|
+
const base = yargs(hideBin(args)).version("0.2.0").strict().help().command("$0 [project] [--<option>]", "Create a new OSDK application based on framework templates. Information may be provided through arguments to skip interactive prompts.", (yargs2) => yargs2.positional("project", {
|
|
277
315
|
type: "string",
|
|
278
316
|
describe: "Project name to create"
|
|
279
317
|
}).option("overwrite", {
|
|
@@ -291,6 +329,9 @@ async function cli(args = process.argv) {
|
|
|
291
329
|
}).option("skip-application-url", {
|
|
292
330
|
type: "boolean",
|
|
293
331
|
describe: "Skip filling in URL the production application will be hosted on"
|
|
332
|
+
}).option("application", {
|
|
333
|
+
type: "string",
|
|
334
|
+
describe: "Application resource identifier (rid)"
|
|
294
335
|
}).option("client-id", {
|
|
295
336
|
type: "string",
|
|
296
337
|
describe: "OAuth client ID for application"
|
|
@@ -310,6 +351,7 @@ async function cli(args = process.argv) {
|
|
|
310
351
|
const template = await promptTemplate(parsed);
|
|
311
352
|
const foundryUrl = await promptFoundryUrl(parsed);
|
|
312
353
|
const applicationUrl = await promptApplicationUrl(parsed);
|
|
354
|
+
const application = await promptApplicationRid(parsed);
|
|
313
355
|
const clientId = await promptClientId(parsed);
|
|
314
356
|
const osdkPackage = await promptOsdkPackage(parsed);
|
|
315
357
|
const osdkRegistryUrl = await promptOsdkRegistryUrl(parsed);
|
|
@@ -387,13 +429,19 @@ async function cli(args = process.argv) {
|
|
|
387
429
|
clientId
|
|
388
430
|
});
|
|
389
431
|
fs2.writeFileSync(path2.join(root, ".env.production"), envProduction);
|
|
432
|
+
const foundryConfigJson = generateFoundryConfigJson({
|
|
433
|
+
foundryUrl,
|
|
434
|
+
application,
|
|
435
|
+
directory: template.buildDirectory
|
|
436
|
+
});
|
|
437
|
+
fs2.writeFileSync(path2.join(root, "foundry.config.json"), foundryConfigJson);
|
|
390
438
|
consola.success("Success");
|
|
391
439
|
const cdRelative = path2.relative(cwd, root);
|
|
392
440
|
consola.box({
|
|
393
441
|
message: `Done! Run the following commands to get started:
|
|
394
442
|
|
|
395
443
|
\`cd ${cdRelative}\`
|
|
396
|
-
\`export
|
|
444
|
+
\`export FOUNDRY_TOKEN=<token>\`
|
|
397
445
|
\`npm install\`
|
|
398
446
|
\`npm run dev\``,
|
|
399
447
|
style: {
|
package/build/js/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli.ts","../../src/consola.ts","../../src/generate/generateEnv.ts","../../src/generate/generateNpmRc.ts","../../src/highlight.ts","../../src/prompts/promptApplicationUrl.ts","../../src/prompts/promptClientId.ts","../../src/prompts/promptFoundryUrl.ts","../../src/prompts/promptOsdkPackage.ts","../../src/prompts/promptOsdkRegistryUrl.ts","../../src/prompts/promptOverwrite.ts","../../src/prompts/promptProject.ts","../../src/templates.ts","../../src/prompts/promptTemplate.ts"],"names":["fs","path","template","yargs"],"mappings":"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","sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { findUpSync } from \"find-up\";\nimport Handlebars from \"handlebars\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { consola } from \"./consola.js\";\nimport { generateEnvDevelopment, generateEnvProduction } from \"./generate/generateEnv.js\";\nimport { generateNpmRc } from \"./generate/generateNpmRc.js\";\nimport { green } from \"./highlight.js\";\nimport { promptApplicationUrl } from \"./prompts/promptApplicationUrl.js\";\nimport { promptClientId } from \"./prompts/promptClientId.js\";\nimport { promptFoundryUrl } from \"./prompts/promptFoundryUrl.js\";\nimport { promptOsdkPackage } from \"./prompts/promptOsdkPackage.js\";\nimport { promptOsdkRegistryUrl } from \"./prompts/promptOsdkRegistryUrl.js\";\nimport { promptOverwrite } from \"./prompts/promptOverwrite.js\";\nimport { promptProject } from \"./prompts/promptProject.js\";\nimport { promptTemplate } from \"./prompts/promptTemplate.js\";\nexport async function cli(args = process.argv) {\n const base = yargs(hideBin(args)).version(process.env.PACKAGE_VERSION ?? \"\").strict().help().command(\"$0 [project] [--<option>]\", \"Create a new OSDK application based on framework templates. Information may be provided through arguments to skip interactive prompts.\", yargs => yargs.positional(\"project\", {\n type: \"string\",\n describe: \"Project name to create\"\n }).option(\"overwrite\", {\n type: \"boolean\",\n describe: \"Overwrite project directory if already exists\"\n }).option(\"template\", {\n type: \"string\",\n describe: \"Template name to use\"\n }).option(\"foundry-url\", {\n type: \"string\",\n describe: \"URL for the Foundry stack\"\n }).option(\"application-url\", {\n type: \"string\",\n describe: \"URL the production application will be hosted on\"\n }).option(\"skip-application-url\", {\n type: \"boolean\",\n describe: \"Skip filling in URL the production application will be hosted on\"\n }).option(\"client-id\", {\n type: \"string\",\n describe: \"OAuth client ID for application\"\n }).option(\"osdk-package\", {\n type: \"string\",\n describe: \"OSDK package name for application\"\n }).option(\"osdk-registry-url\", {\n type: \"string\",\n describe: \"URL for NPM registry to install OSDK package\"\n }));\n const parsed = base.parseSync();\n const project = await promptProject(parsed);\n const overwrite = await promptOverwrite({\n ...parsed,\n project\n });\n const template = await promptTemplate(parsed);\n const foundryUrl = await promptFoundryUrl(parsed);\n const applicationUrl = await promptApplicationUrl(parsed);\n const clientId = await promptClientId(parsed);\n const osdkPackage = await promptOsdkPackage(parsed);\n const osdkRegistryUrl = await promptOsdkRegistryUrl(parsed);\n consola.log(\"\");\n consola.start(`Creating project ${green(project)} using template ${green(template.id)}`);\n const cwd = process.cwd();\n const root = path.join(cwd, project);\n if (fs.existsSync(root)) {\n if (overwrite) {\n consola.info(`Overwriting existing project directory`);\n fs.rmSync(root, {\n recursive: true,\n force: true\n });\n fs.mkdirSync(root, {\n recursive: true\n });\n } else {\n consola.info(`Reusing existing project directory`);\n }\n } else {\n consola.info(`Creating project directory`);\n fs.mkdirSync(root, {\n recursive: true\n });\n }\n consola.info(`Copying files into project directory`);\n const templatesDir = findUpSync(\"templates\", {\n cwd: path.dirname(fileURLToPath(import.meta.url)),\n type: \"directory\"\n });\n if (templatesDir == null) {\n throw new Error(`Could not find templates directory`);\n }\n const templateDir = path.resolve(templatesDir, template.id);\n fs.cpSync(templateDir, root, {\n recursive: true\n });\n const templateContext = {\n project,\n osdkPackage\n };\n const templateHbs = function (dir) {\n fs.readdirSync(dir).forEach(function (file) {\n file = dir + \"/\" + file;\n const stat = fs.statSync(file);\n if (stat.isDirectory()) {\n templateHbs(file);\n return;\n }\n if (!file.endsWith(\".hbs\")) {\n return;\n }\n const templated = Handlebars.compile(fs.readFileSync(file, \"utf-8\"))(templateContext);\n fs.writeFileSync(file.replace(/.hbs$/, \"\"), templated);\n fs.rmSync(file);\n });\n };\n templateHbs(root);\n const npmRc = generateNpmRc({\n osdkPackage,\n osdkRegistryUrl\n });\n fs.writeFileSync(path.join(root, \".npmrc\"), npmRc);\n const envDevelopment = generateEnvDevelopment({\n envPrefix: template.envPrefix,\n foundryUrl,\n clientId\n });\n fs.writeFileSync(path.join(root, \".env.development\"), envDevelopment);\n const envProduction = generateEnvProduction({\n envPrefix: template.envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n });\n fs.writeFileSync(path.join(root, \".env.production\"), envProduction);\n consola.success(\"Success\");\n const cdRelative = path.relative(cwd, root);\n consola.box({\n message: `Done! Run the following commands to get started:\\n` + `\\n` + ` \\`cd ${cdRelative}\\`\\n` + ` \\`export FOUNDRY_SDK_AUTH_TOKEN=<token>\\`\\n` + ` \\`npm install\\`\\n` + ` \\`npm run dev\\``,\n style: {\n padding: 2,\n borderColor: \"green\",\n borderStyle: \"rounded\"\n }\n });\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola as defaultConsola, createConsola } from \"consola\";\nexport const consola = createConsola({\n // https://github.com/unjs/consola/issues/251\n async prompt(...params) {\n const response = await defaultConsola.prompt(...params);\n if (typeof response === \"symbol\" && response.toString() === \"Symbol(clack:cancel)\") {\n defaultConsola.fail(\"Operation cancelled\");\n process.exit(0);\n }\n return response;\n }\n});","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateEnvDevelopment({\n envPrefix,\n foundryUrl,\n clientId\n}) {\n return generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl: \"http://localhost:8080\",\n clientId\n });\n}\nexport function generateEnvProduction({\n envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n}) {\n return generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl: applicationUrl ?? \"<Fill in the domain at which you deploy your application>\",\n clientId\n });\n}\nfunction generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n}) {\n return `${envPrefix}FOUNDRY_API_URL=${foundryUrl}\\n` + `${envPrefix}FOUNDRY_REDIRECT_URL=${applicationUrl}/auth/callback\\n` + `${envPrefix}FOUNDRY_CLIENT_ID=${clientId}\\n`;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateNpmRc({\n osdkPackage,\n osdkRegistryUrl\n}) {\n const withoutProtocol = osdkRegistryUrl.replace(/^https:\\/\\//, \"\");\n return `//${withoutProtocol}:_authToken=\\${FOUNDRY_SDK_AUTH_TOKEN}\\n` + `${osdkPackage.split(\"/\")[0]}:registry=${osdkRegistryUrl}\\n`;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { colorize } from \"consola/utils\";\nexport function green(text) {\n return colorize(\"green\", text);\n}\nexport function italic(text) {\n return colorize(\"italic\", text);\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptApplicationUrl({\n skipApplicationUrl,\n applicationUrl\n}) {\n if (skipApplicationUrl) {\n return undefined;\n }\n if (applicationUrl == null) {\n const skip = await consola.prompt(`Do you know the URL your production application will be hosted on? This is required to create a production build of your application with the correct OAuth redirect URL.`, {\n type: \"select\",\n options: [{\n label: \"Yes, prefill it for me\",\n value: \"yes\"\n }, {\n label: \"No, I will fill it in myself later\",\n value: \"no\"\n }]\n }\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n );\n if (skip === \"no\") {\n return undefined;\n }\n }\n while (applicationUrl == null || !/^https?:\\/\\//.test(applicationUrl)) {\n if (applicationUrl != null) {\n consola.fail(\"Please enter a valid application URL\");\n }\n applicationUrl = await consola.prompt(`Enter the URL your production application will be hosted on:\\n${italic(\"(Example https://myapp.example.palantirfoundry.com/)\")}`, {\n type: \"text\"\n });\n }\n return applicationUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptClientId({\n clientId\n}) {\n while (clientId == null || !/^[0-9a-f]+$/.test(clientId)) {\n if (clientId != null) {\n consola.fail(\"Please enter a valid OAuth client ID\");\n }\n clientId = await consola.prompt(`Enter the OAuth client ID for your application from Developer Console:\\n${italic(\"(Example 2650385ab6c5e0df3b44aff776b00a42)\")}`, {\n type: \"text\"\n });\n }\n return clientId;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptFoundryUrl({\n foundryUrl\n}) {\n while (foundryUrl == null || !foundryUrl.startsWith(\"https://\")) {\n if (foundryUrl != null) {\n consola.fail(\"Please enter a valid Foundry URL\");\n }\n foundryUrl = await consola.prompt(`Enter the URL for your Foundry stack:\\n${italic(\"(Example https://example.palantirfoundry.com/)\")}`, {\n type: \"text\"\n });\n }\n return foundryUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptOsdkPackage({\n osdkPackage\n}) {\n while (osdkPackage == null || !/^@[a-z0-9-]+\\/sdk$/.test(osdkPackage)) {\n if (osdkPackage != null) {\n consola.fail(\"Please enter a valid OSDK package name\");\n }\n osdkPackage = await consola.prompt(`Enter the OSDK package name for your application from Developer Console:\\n${italic(\"(Example @my-app/sdk)\")}`, {\n type: \"text\"\n });\n }\n return osdkPackage;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptOsdkRegistryUrl({\n osdkRegistryUrl\n}) {\n while (osdkRegistryUrl == null || !/^https:\\/\\/[^/]+\\/artifacts\\/api\\/repositories\\/ri\\.artifacts\\.[^/]+\\/contents\\/release\\/npm\\/?$/.test(osdkRegistryUrl)) {\n if (osdkRegistryUrl != null) {\n consola.fail(\"Please enter a valid NPM registry URL to install your OSDK package\");\n }\n osdkRegistryUrl = await consola.prompt(`Enter the NPM registry URL to install your OSDK package from Developer Console:\\n${italic(\"(Example https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.a4a7fe1c-486f-4226-b706-7b90005f527d/contents/release/npm)\")}`, {\n type: \"text\"\n });\n }\n return osdkRegistryUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { consola } from \"../consola.js\";\nimport { green } from \"../highlight.js\";\nexport async function promptOverwrite({\n project,\n overwrite\n}) {\n if (overwrite != null) {\n return overwrite;\n }\n if (!fs.existsSync(path.join(process.cwd(), project))) {\n return true;\n }\n const result = await consola.prompt(`The directory ${green(project)} already exists do you want to overwrite or ignore it?`, {\n type: \"select\",\n options: [{\n label: \"Remove existing files and continue\",\n value: \"overwrite\"\n }, {\n label: \"Ignore files and continue\",\n value: \"ignore\"\n }, {\n label: \"Cancel\",\n value: \"cancel\"\n }]\n }\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n );\n switch (result) {\n case \"overwrite\":\n return true;\n case \"ignore\":\n return false;\n case \"cancel\":\n consola.fail(\"Operation cancelled\");\n process.exit(0);\n }\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nexport async function promptProject({\n project\n}) {\n while (project == null || !/^[a-zA-Z0-9-_]+$/.test(project)) {\n if (project != null) {\n consola.fail(\"Project name can only contain alphanumeric characters, hyphens and underscores\");\n }\n project = await consola.prompt(\"Project name:\", {\n type: \"text\",\n placeholder: \"my-osdk-app\",\n default: \"my-osdk-app\"\n });\n }\n return project;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const TEMPLATES = [{\n id: \"template-react\",\n label: \"React\",\n envPrefix: \"VITE_\"\n}, {\n id: \"template-vue\",\n label: \"Vue\",\n envPrefix: \"VITE_\"\n}, {\n id: \"template-next-static-export\",\n label: \"Next (static export)\",\n envPrefix: \"NEXT_PUBLIC_\"\n}];","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { green } from \"../highlight.js\";\nimport { TEMPLATES } from \"../templates.js\";\nexport async function promptTemplate(parsed) {\n let template = TEMPLATES.find(t => t.id === parsed.template);\n if (template == null) {\n const templateId = await consola.prompt(parsed.template != null ? `The provided template ${green(parsed.template)} is invalid please select a framework:` : \"Select a framework:\", {\n type: \"select\",\n options: TEMPLATES.map(template => ({\n value: template.id,\n label: template.label\n }))\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n });\n template = TEMPLATES.find(t => t.id === templateId);\n if (template == null) {\n throw new Error(`Template ${templateId} should be found`);\n }\n }\n return template;\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli.ts","../../src/consola.ts","../../src/generate/generateEnv.ts","../../src/generate/generateFoundryConfigJson.ts","../../src/generate/generateNpmRc.ts","../../src/highlight.ts","../../src/prompts/promptApplicationRid.ts","../../src/prompts/promptApplicationUrl.ts","../../src/prompts/promptClientId.ts","../../src/prompts/promptFoundryUrl.ts","../../src/prompts/promptOsdkPackage.ts","../../src/prompts/promptOsdkRegistryUrl.ts","../../src/prompts/promptOverwrite.ts","../../src/prompts/promptProject.ts","../../src/templates.ts","../../src/prompts/promptTemplate.ts"],"names":["fs","path","template","yargs"],"mappings":"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","sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { findUpSync } from \"find-up\";\nimport Handlebars from \"handlebars\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\nimport { consola } from \"./consola.js\";\nimport { generateEnvDevelopment, generateEnvProduction } from \"./generate/generateEnv.js\";\nimport { generateFoundryConfigJson } from \"./generate/generateFoundryConfigJson.js\";\nimport { generateNpmRc } from \"./generate/generateNpmRc.js\";\nimport { green } from \"./highlight.js\";\nimport { promptApplicationRid } from \"./prompts/promptApplicationRid.js\";\nimport { promptApplicationUrl } from \"./prompts/promptApplicationUrl.js\";\nimport { promptClientId } from \"./prompts/promptClientId.js\";\nimport { promptFoundryUrl } from \"./prompts/promptFoundryUrl.js\";\nimport { promptOsdkPackage } from \"./prompts/promptOsdkPackage.js\";\nimport { promptOsdkRegistryUrl } from \"./prompts/promptOsdkRegistryUrl.js\";\nimport { promptOverwrite } from \"./prompts/promptOverwrite.js\";\nimport { promptProject } from \"./prompts/promptProject.js\";\nimport { promptTemplate } from \"./prompts/promptTemplate.js\";\nexport async function cli(args = process.argv) {\n const base = yargs(hideBin(args)).version(process.env.PACKAGE_VERSION ?? \"\").strict().help().command(\"$0 [project] [--<option>]\", \"Create a new OSDK application based on framework templates. Information may be provided through arguments to skip interactive prompts.\", yargs => yargs.positional(\"project\", {\n type: \"string\",\n describe: \"Project name to create\"\n }).option(\"overwrite\", {\n type: \"boolean\",\n describe: \"Overwrite project directory if already exists\"\n }).option(\"template\", {\n type: \"string\",\n describe: \"Template name to use\"\n }).option(\"foundry-url\", {\n type: \"string\",\n describe: \"URL for the Foundry stack\"\n }).option(\"application-url\", {\n type: \"string\",\n describe: \"URL the production application will be hosted on\"\n }).option(\"skip-application-url\", {\n type: \"boolean\",\n describe: \"Skip filling in URL the production application will be hosted on\"\n }).option(\"application\", {\n type: \"string\",\n describe: \"Application resource identifier (rid)\"\n }).option(\"client-id\", {\n type: \"string\",\n describe: \"OAuth client ID for application\"\n }).option(\"osdk-package\", {\n type: \"string\",\n describe: \"OSDK package name for application\"\n }).option(\"osdk-registry-url\", {\n type: \"string\",\n describe: \"URL for NPM registry to install OSDK package\"\n }));\n const parsed = base.parseSync();\n const project = await promptProject(parsed);\n const overwrite = await promptOverwrite({\n ...parsed,\n project\n });\n const template = await promptTemplate(parsed);\n const foundryUrl = await promptFoundryUrl(parsed);\n const applicationUrl = await promptApplicationUrl(parsed);\n const application = await promptApplicationRid(parsed);\n const clientId = await promptClientId(parsed);\n const osdkPackage = await promptOsdkPackage(parsed);\n const osdkRegistryUrl = await promptOsdkRegistryUrl(parsed);\n consola.log(\"\");\n consola.start(`Creating project ${green(project)} using template ${green(template.id)}`);\n const cwd = process.cwd();\n const root = path.join(cwd, project);\n if (fs.existsSync(root)) {\n if (overwrite) {\n consola.info(`Overwriting existing project directory`);\n fs.rmSync(root, {\n recursive: true,\n force: true\n });\n fs.mkdirSync(root, {\n recursive: true\n });\n } else {\n consola.info(`Reusing existing project directory`);\n }\n } else {\n consola.info(`Creating project directory`);\n fs.mkdirSync(root, {\n recursive: true\n });\n }\n consola.info(`Copying files into project directory`);\n const templatesDir = findUpSync(\"templates\", {\n cwd: path.dirname(fileURLToPath(import.meta.url)),\n type: \"directory\"\n });\n if (templatesDir == null) {\n throw new Error(`Could not find templates directory`);\n }\n const templateDir = path.resolve(templatesDir, template.id);\n fs.cpSync(templateDir, root, {\n recursive: true\n });\n const templateContext = {\n project,\n osdkPackage\n };\n const templateHbs = function (dir) {\n fs.readdirSync(dir).forEach(function (file) {\n file = dir + \"/\" + file;\n const stat = fs.statSync(file);\n if (stat.isDirectory()) {\n templateHbs(file);\n return;\n }\n if (!file.endsWith(\".hbs\")) {\n return;\n }\n const templated = Handlebars.compile(fs.readFileSync(file, \"utf-8\"))(templateContext);\n fs.writeFileSync(file.replace(/.hbs$/, \"\"), templated);\n fs.rmSync(file);\n });\n };\n templateHbs(root);\n const npmRc = generateNpmRc({\n osdkPackage,\n osdkRegistryUrl\n });\n fs.writeFileSync(path.join(root, \".npmrc\"), npmRc);\n const envDevelopment = generateEnvDevelopment({\n envPrefix: template.envPrefix,\n foundryUrl,\n clientId\n });\n fs.writeFileSync(path.join(root, \".env.development\"), envDevelopment);\n const envProduction = generateEnvProduction({\n envPrefix: template.envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n });\n fs.writeFileSync(path.join(root, \".env.production\"), envProduction);\n const foundryConfigJson = generateFoundryConfigJson({\n foundryUrl,\n application,\n directory: template.buildDirectory\n });\n fs.writeFileSync(path.join(root, \"foundry.config.json\"), foundryConfigJson);\n consola.success(\"Success\");\n const cdRelative = path.relative(cwd, root);\n consola.box({\n message: `Done! Run the following commands to get started:\\n` + `\\n` + ` \\`cd ${cdRelative}\\`\\n` + ` \\`export FOUNDRY_TOKEN=<token>\\`\\n` + ` \\`npm install\\`\\n` + ` \\`npm run dev\\``,\n style: {\n padding: 2,\n borderColor: \"green\",\n borderStyle: \"rounded\"\n }\n });\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola as defaultConsola, createConsola } from \"consola\";\nexport const consola = createConsola({\n // https://github.com/unjs/consola/issues/251\n async prompt(...params) {\n const response = await defaultConsola.prompt(...params);\n if (typeof response === \"symbol\" && response.toString() === \"Symbol(clack:cancel)\") {\n defaultConsola.fail(\"Operation cancelled\");\n process.exit(0);\n }\n return response;\n }\n});","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateEnvDevelopment({\n envPrefix,\n foundryUrl,\n clientId\n}) {\n return generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl: \"http://localhost:8080\",\n clientId\n });\n}\nexport function generateEnvProduction({\n envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n}) {\n return generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl: applicationUrl ?? \"<Fill in the domain at which you deploy your application>\",\n clientId\n });\n}\nfunction generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n}) {\n return `${envPrefix}FOUNDRY_API_URL=${foundryUrl}\\n` + `${envPrefix}FOUNDRY_REDIRECT_URL=${applicationUrl}/auth/callback\\n` + `${envPrefix}FOUNDRY_CLIENT_ID=${clientId}\\n`;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateFoundryConfigJson({\n foundryUrl,\n application,\n directory\n}) {\n return JSON.stringify({\n foundryUrl,\n site: {\n application,\n directory,\n autoVersion: {\n type: \"git-describe\",\n tagPrefix: \"\"\n }\n }\n }, null, 2) + \"\\n\";\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateNpmRc({\n osdkPackage,\n osdkRegistryUrl\n}) {\n const withoutProtocol = osdkRegistryUrl.replace(/^https:\\/\\//, \"\");\n return `//${withoutProtocol}:_authToken=\\${FOUNDRY_TOKEN}\\n` + `${osdkPackage.split(\"/\")[0]}:registry=${osdkRegistryUrl}\\n`;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { colorize } from \"consola/utils\";\nexport function green(text) {\n return colorize(\"green\", text);\n}\nexport function italic(text) {\n return colorize(\"italic\", text);\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptApplicationRid({\n application\n}) {\n while (application == null || !/^ri\\.third-party-applications\\.[^.]+\\.application\\.[^.]+$/.test(application)) {\n if (application != null) {\n consola.fail(\"Please enter a valid application resource identifier (rid)\");\n }\n application = await consola.prompt(`Enter the application resource identifier (rid) for your application from Developer Console:\\n${italic(\"(Example ri.third-party-applications.main.application.1c66b352-4e00-40d2-995d-061c9d533ace)\")}`, {\n type: \"text\"\n });\n }\n return application;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptApplicationUrl({\n skipApplicationUrl,\n applicationUrl\n}) {\n if (skipApplicationUrl) {\n return undefined;\n }\n if (applicationUrl == null) {\n const skip = await consola.prompt(`Do you know the URL your production application will be hosted on? This is required to create a production build of your application with the correct OAuth redirect URL.`, {\n type: \"select\",\n options: [{\n label: \"Yes, prefill it for me\",\n value: \"yes\"\n }, {\n label: \"No, I will fill it in myself later\",\n value: \"no\"\n }]\n }\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n );\n if (skip === \"no\") {\n return undefined;\n }\n }\n while (applicationUrl == null || !/^https?:\\/\\//.test(applicationUrl)) {\n if (applicationUrl != null) {\n consola.fail(\"Please enter a valid application URL\");\n }\n applicationUrl = await consola.prompt(`Enter the URL your production application will be hosted on:\\n${italic(\"(Example https://myapp.example.palantirfoundry.com/)\")}`, {\n type: \"text\"\n });\n }\n return applicationUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptClientId({\n clientId\n}) {\n while (clientId == null || !/^[0-9a-f]+$/.test(clientId)) {\n if (clientId != null) {\n consola.fail(\"Please enter a valid OAuth client ID\");\n }\n clientId = await consola.prompt(`Enter the OAuth client ID for your application from Developer Console:\\n${italic(\"(Example 2650385ab6c5e0df3b44aff776b00a42)\")}`, {\n type: \"text\"\n });\n }\n return clientId;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptFoundryUrl({\n foundryUrl\n}) {\n while (foundryUrl == null || !foundryUrl.startsWith(\"https://\")) {\n if (foundryUrl != null) {\n consola.fail(\"Please enter a valid Foundry URL\");\n }\n foundryUrl = await consola.prompt(`Enter the URL for your Foundry stack:\\n${italic(\"(Example https://example.palantirfoundry.com/)\")}`, {\n type: \"text\"\n });\n }\n return foundryUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptOsdkPackage({\n osdkPackage\n}) {\n while (osdkPackage == null || !/^@[a-z0-9-]+\\/sdk$/.test(osdkPackage)) {\n if (osdkPackage != null) {\n consola.fail(\"Please enter a valid OSDK package name\");\n }\n osdkPackage = await consola.prompt(`Enter the OSDK package name for your application from Developer Console:\\n${italic(\"(Example @my-app/sdk)\")}`, {\n type: \"text\"\n });\n }\n return osdkPackage;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptOsdkRegistryUrl({\n osdkRegistryUrl\n}) {\n while (osdkRegistryUrl == null || !/^https:\\/\\/[^/]+\\/artifacts\\/api\\/repositories\\/ri\\.artifacts\\.[^/]+\\/contents\\/release\\/npm\\/?$/.test(osdkRegistryUrl)) {\n if (osdkRegistryUrl != null) {\n consola.fail(\"Please enter a valid NPM registry URL to install your OSDK package\");\n }\n osdkRegistryUrl = await consola.prompt(`Enter the NPM registry URL to install your OSDK package from Developer Console:\\n${italic(\"(Example https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.a4a7fe1c-486f-4226-b706-7b90005f527d/contents/release/npm)\")}`, {\n type: \"text\"\n });\n }\n return osdkRegistryUrl.replace(/\\/$/, \"\");\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { consola } from \"../consola.js\";\nimport { green } from \"../highlight.js\";\nexport async function promptOverwrite({\n project,\n overwrite\n}) {\n if (overwrite != null) {\n return overwrite;\n }\n if (!fs.existsSync(path.join(process.cwd(), project))) {\n return true;\n }\n const result = await consola.prompt(`The directory ${green(project)} already exists do you want to overwrite or ignore it?`, {\n type: \"select\",\n options: [{\n label: \"Remove existing files and continue\",\n value: \"overwrite\"\n }, {\n label: \"Ignore files and continue\",\n value: \"ignore\"\n }, {\n label: \"Cancel\",\n value: \"cancel\"\n }]\n }\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n );\n switch (result) {\n case \"overwrite\":\n return true;\n case \"ignore\":\n return false;\n case \"cancel\":\n consola.fail(\"Operation cancelled\");\n process.exit(0);\n }\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nexport async function promptProject({\n project\n}) {\n while (project == null || !/^[a-zA-Z0-9-_]+$/.test(project)) {\n if (project != null) {\n consola.fail(\"Project name can only contain alphanumeric characters, hyphens and underscores\");\n }\n project = await consola.prompt(\"Project name:\", {\n type: \"text\",\n placeholder: \"my-osdk-app\",\n default: \"my-osdk-app\"\n });\n }\n return project;\n}","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const TEMPLATES = [{\n id: \"template-react\",\n label: \"React\",\n envPrefix: \"VITE_\",\n buildDirectory: \"./dist\"\n}, {\n id: \"template-vue\",\n label: \"Vue\",\n envPrefix: \"VITE_\",\n buildDirectory: \"./dist\"\n}, {\n id: \"template-next-static-export\",\n label: \"Next (static export)\",\n envPrefix: \"NEXT_PUBLIC_\",\n buildDirectory: \"./out\"\n}];","/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { consola } from \"../consola.js\";\nimport { green } from \"../highlight.js\";\nimport { TEMPLATES } from \"../templates.js\";\nexport async function promptTemplate(parsed) {\n let template = TEMPLATES.find(t => t.id === parsed.template);\n if (template == null) {\n const templateId = await consola.prompt(parsed.template != null ? `The provided template ${green(parsed.template)} is invalid please select a framework:` : \"Select a framework:\", {\n type: \"select\",\n options: TEMPLATES.map(template => ({\n value: template.id,\n label: template.label\n }))\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n });\n template = TEMPLATES.find(t => t.id === templateId);\n if (template == null) {\n throw new Error(`Template ${templateId} should be found`);\n }\n }\n return template;\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|