@osdk/create-app 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -15
- package/build/js/index.cjs +12 -11
- package/build/js/index.cjs.map +1 -1
- package/build/js/index.mjs +12 -11
- package/build/js/index.mjs.map +1 -1
- package/changelog/0.4.0/pr-71.v2.yml +5 -0
- package/changelog/0.4.0/pr-76.v2.yml +5 -0
- package/changelog/0.4.0/pr-77.v2.yml +5 -0
- package/package.json +1 -1
- package/templates/template-next-static-export/src/app/icon.svg +15 -20
- package/templates/template-next-static-export/src/app/layout.tsx +2 -12
- package/templates/template-next-static-export/src/app/page.tsx.hbs +9 -3
- package/templates/template-next-static-export/src/lib/client.ts.hbs +20 -4
- package/templates/template-react/index.html +1 -1
- package/templates/template-react/src/Home.tsx.hbs +9 -3
- package/templates/template-react/src/Layout.tsx +1 -9
- package/templates/template-react/src/client.ts.hbs +20 -4
- package/templates/template-vue/index.html +1 -1
- package/templates/template-vue/src/Home.vue.hbs +6 -6
- package/templates/template-vue/src/Layout.vue +1 -4
- package/templates/template-vue/src/Login.vue +0 -1
- package/templates/template-vue/src/client.ts.hbs +20 -4
- package/templates/template-next-static-export/public/dev-console.svg +0 -25
- package/templates/template-react/public/dev-console.svg +0 -25
- package/templates/template-vue/public/dev-console.svg +0 -25
package/README.md
CHANGED
|
@@ -30,21 +30,22 @@ The CLI can be run without any arguments and the user will be guided with intera
|
|
|
30
30
|
npx @osdk/create-app [project] [--<option>]
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
| Option
|
|
34
|
-
|
|
|
35
|
-
| --overwrite
|
|
36
|
-
| --template
|
|
37
|
-
| --
|
|
38
|
-
| --
|
|
39
|
-
| --
|
|
40
|
-
| --
|
|
41
|
-
| --
|
|
42
|
-
| --
|
|
33
|
+
| Option | Description |
|
|
34
|
+
| -------------------- | -------------------------------------------------------------------------- |
|
|
35
|
+
| --overwrite | Overwrite project directory if already exists [boolean] |
|
|
36
|
+
| --template | Template name to use [string] |
|
|
37
|
+
| --foundryUrl | URL for the Foundry stack [string] |
|
|
38
|
+
| --applicationUrl | URL the production application will be hosted on [string] |
|
|
39
|
+
| --skipApplicationUrl | Skip filling in URL the production application will be hosted on [boolean] |
|
|
40
|
+
| --application | Application resource identifier (rid) [string] |
|
|
41
|
+
| --clientId | OAuth client ID for application [string] |
|
|
42
|
+
| --osdkPackage | OSDK package name for application [string] |
|
|
43
|
+
| --osdkRegistryUrl | URL for NPM registry to install OSDK package [string] |
|
|
43
44
|
|
|
44
45
|
## Templates
|
|
45
46
|
|
|
46
|
-
| Template
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
47
|
+
| Template name | Description |
|
|
48
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
49
|
+
| react | [React](https://react.dev/) with [Vite](https://vitejs.dev/guide/why.html) |
|
|
50
|
+
| vue | [Vue](https://vuejs.org/) with [Vite](https://vitejs.dev/guide/why.html) |
|
|
51
|
+
| next-static-export | [Next.js](https://nextjs.org/) with [static export](https://nextjs.org/docs/pages/building-your-application/deploying/static-exports) |
|
package/build/js/index.cjs
CHANGED
|
@@ -53,7 +53,7 @@ function generateEnvProduction({
|
|
|
53
53
|
return generateEnv({
|
|
54
54
|
envPrefix,
|
|
55
55
|
foundryUrl,
|
|
56
|
-
applicationUrl
|
|
56
|
+
applicationUrl,
|
|
57
57
|
clientId
|
|
58
58
|
});
|
|
59
59
|
}
|
|
@@ -64,7 +64,7 @@ function generateEnv({
|
|
|
64
64
|
clientId
|
|
65
65
|
}) {
|
|
66
66
|
return `${envPrefix}FOUNDRY_API_URL=${foundryUrl}
|
|
67
|
-
${envPrefix}FOUNDRY_REDIRECT_URL=${applicationUrl}/auth/callback
|
|
67
|
+
${applicationUrl == null ? "# " : ""}${envPrefix}FOUNDRY_REDIRECT_URL=${applicationUrl ?? "<Fill in the domain at which you deploy your application>"}/auth/callback
|
|
68
68
|
${envPrefix}FOUNDRY_CLIENT_ID=${clientId}
|
|
69
69
|
`;
|
|
70
70
|
}
|
|
@@ -114,7 +114,7 @@ async function promptApplicationRid({
|
|
|
114
114
|
consola.fail("Please enter a valid application resource identifier (rid)");
|
|
115
115
|
}
|
|
116
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)")}`, {
|
|
117
|
+
${italic("(Example: ri.third-party-applications.main.application.1c66b352-4e00-40d2-995d-061c9d533ace)")}`, {
|
|
118
118
|
type: "text"
|
|
119
119
|
});
|
|
120
120
|
}
|
|
@@ -154,7 +154,7 @@ async function promptApplicationUrl({
|
|
|
154
154
|
consola.fail("Please enter a valid application URL");
|
|
155
155
|
}
|
|
156
156
|
applicationUrl = await consola.prompt(`Enter the URL your production application will be hosted on:
|
|
157
|
-
${italic("(Example https://myapp.example.palantirfoundry.com
|
|
157
|
+
${italic("(Example: https://myapp.example.palantirfoundry.com)")}`, {
|
|
158
158
|
type: "text"
|
|
159
159
|
});
|
|
160
160
|
}
|
|
@@ -170,7 +170,7 @@ async function promptClientId({
|
|
|
170
170
|
consola.fail("Please enter a valid OAuth client ID");
|
|
171
171
|
}
|
|
172
172
|
clientId = await consola.prompt(`Enter the OAuth client ID for your application from Developer Console:
|
|
173
|
-
${italic("(Example 2650385ab6c5e0df3b44aff776b00a42)")}`, {
|
|
173
|
+
${italic("(Example: 2650385ab6c5e0df3b44aff776b00a42)")}`, {
|
|
174
174
|
type: "text"
|
|
175
175
|
});
|
|
176
176
|
}
|
|
@@ -186,7 +186,7 @@ async function promptFoundryUrl({
|
|
|
186
186
|
consola.fail("Please enter a valid Foundry URL");
|
|
187
187
|
}
|
|
188
188
|
foundryUrl = await consola.prompt(`Enter the URL for your Foundry stack:
|
|
189
|
-
${italic("(Example https://example.palantirfoundry.com
|
|
189
|
+
${italic("(Example: https://example.palantirfoundry.com)")}`, {
|
|
190
190
|
type: "text"
|
|
191
191
|
});
|
|
192
192
|
}
|
|
@@ -202,7 +202,7 @@ async function promptOsdkPackage({
|
|
|
202
202
|
consola.fail("Please enter a valid OSDK package name");
|
|
203
203
|
}
|
|
204
204
|
osdkPackage = await consola.prompt(`Enter the OSDK package name for your application from Developer Console:
|
|
205
|
-
${italic("(Example @my-app/sdk)")}`, {
|
|
205
|
+
${italic("(Example: @my-app/sdk)")}`, {
|
|
206
206
|
type: "text"
|
|
207
207
|
});
|
|
208
208
|
}
|
|
@@ -218,7 +218,7 @@ async function promptOsdkRegistryUrl({
|
|
|
218
218
|
consola.fail("Please enter a valid NPM registry URL to install your OSDK package");
|
|
219
219
|
}
|
|
220
220
|
osdkRegistryUrl = await consola.prompt(`Enter the NPM registry URL to install your OSDK package from Developer Console:
|
|
221
|
-
${italic("(Example https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.a4a7fe1c-486f-4226-b706-7b90005f527d/contents/release/npm)")}`, {
|
|
221
|
+
${italic("(Example: https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.a4a7fe1c-486f-4226-b706-7b90005f527d/contents/release/npm)")}`, {
|
|
222
222
|
type: "text"
|
|
223
223
|
});
|
|
224
224
|
}
|
|
@@ -300,7 +300,7 @@ var TEMPLATES = [{
|
|
|
300
300
|
|
|
301
301
|
// src/prompts/promptTemplate.ts
|
|
302
302
|
async function promptTemplate(parsed) {
|
|
303
|
-
let template = TEMPLATES.find((t) => t.id === parsed.template);
|
|
303
|
+
let template = TEMPLATES.find((t) => t.id === parsed.template || t.id === `template-${parsed.template}`);
|
|
304
304
|
if (template == null) {
|
|
305
305
|
const templateId = await consola.prompt(parsed.template != null ? `The provided template ${green(parsed.template)} is invalid please select a framework:` : "Select a framework:", {
|
|
306
306
|
type: "select",
|
|
@@ -321,7 +321,7 @@ async function promptTemplate(parsed) {
|
|
|
321
321
|
|
|
322
322
|
// src/cli.ts
|
|
323
323
|
async function cli(args = process.argv) {
|
|
324
|
-
const base = yargs__default.default(helpers.hideBin(args)).version("0.
|
|
324
|
+
const base = yargs__default.default(helpers.hideBin(args)).version("0.4.0").wrap(Math.min(150, yargs__default.default().terminalWidth())).strict().help().command("$0 [project] [--<option>]", "Create a new OSDK application based on framework templates. Information may be provided through options to skip interactive prompts.", (yargs2) => yargs2.positional("project", {
|
|
325
325
|
type: "string",
|
|
326
326
|
describe: "Project name to create"
|
|
327
327
|
}).option("overwrite", {
|
|
@@ -335,7 +335,8 @@ async function cli(args = process.argv) {
|
|
|
335
335
|
describe: "URL for the Foundry stack"
|
|
336
336
|
}).option("applicationUrl", {
|
|
337
337
|
type: "string",
|
|
338
|
-
describe: "URL the production application will be hosted on"
|
|
338
|
+
describe: "URL the production application will be hosted on",
|
|
339
|
+
conflicts: "skipApplicationUrl"
|
|
339
340
|
}).option("skipApplicationUrl", {
|
|
340
341
|
type: "boolean",
|
|
341
342
|
describe: "Skip filling in URL the production application will be hosted on"
|
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/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 ?? \"\").wrap(Math.min(150, yargs().terminalWidth())).strict().help().command(\"$0 [project] [--<option>]\", \"Create a new OSDK application based on framework templates. Information may be provided through options 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(\"foundryUrl\", {\n type: \"string\",\n describe: \"URL for the Foundry stack\"\n }).option(\"applicationUrl\", {\n type: \"string\",\n describe: \"URL the production application will be hosted on\"\n }).option(\"skipApplicationUrl\", {\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(\"clientId\", {\n type: \"string\",\n describe: \"OAuth client ID for application\"\n }).option(\"osdkPackage\", {\n type: \"string\",\n describe: \"OSDK package name for application\"\n }).option(\"osdkRegistryUrl\", {\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}"]}
|
|
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":";AAgBA,SAAS,kBAAkB;AAC3B,OAAO,gBAAgB;AACvB,OAAOA,SAAQ;AACf,OAAOC,WAAU;AACjB,SAAS,qBAAqB;AAC9B,OAAO,WAAW;AAClB,SAAS,eAAe;;;ACNxB,SAAS,WAAW,gBAAgB,qBAAqB;AAClD,IAAM,UAAU,cAAc;AAAA;AAAA,EAEnC,MAAM,UAAU,QAAQ;AACtB,UAAM,WAAW,MAAM,eAAe,OAAO,GAAG,MAAM;AACtD,QAAI,OAAO,aAAa,YAAY,SAAS,SAAS,MAAM,wBAAwB;AAClF,qBAAe,KAAK,qBAAqB;AACzC,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AACF,CAAC;;;ACXM,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,SAAO,YAAY;AAAA,IACjB;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,EACF,CAAC;AACH;AACO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,SAAO,YAAY;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AACA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,SAAO,GAAG,SAAS,mBAAmB,UAAU;AAAA,EAAU,kBAAkB,OAAO,OAAO,EAAE,GAAG,SAAS,wBAAwB,kBAAkB,2DAA2D;AAAA,EAAwB,SAAS,qBAAqB,QAAQ;AAAA;AAC7Q;;;AChCO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,SAAO,KAAK,UAAU;AAAA,IACpB;AAAA,IACA,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,aAAa;AAAA,QACX,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF,GAAG,MAAM,CAAC,IAAI;AAChB;;;AChBO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AACF,GAAG;AACD,QAAM,kBAAkB,gBAAgB,QAAQ,eAAe,EAAE;AACjE,SAAO,KAAK,eAAe;AAAA,EAAuC,YAAY,MAAM,GAAG,EAAE,CAAC,CAAC,aAAa,eAAe;AAAA;AACzH;;;ACNA,SAAS,gBAAgB;AAClB,SAAS,MAAM,MAAM;AAC1B,SAAO,SAAS,SAAS,IAAI;AAC/B;AACO,SAAS,OAAO,MAAM;AAC3B,SAAO,SAAS,UAAU,IAAI;AAChC;;;ACJA,eAAsB,qBAAqB;AAAA,EACzC;AACF,GAAG;AACD,SAAO,eAAe,QAAQ,CAAC,4DAA4D,KAAK,WAAW,GAAG;AAC5G,QAAI,eAAe,MAAM;AACvB,cAAQ,KAAK,4DAA4D;AAAA,IAC3E;AACA,kBAAc,MAAM,QAAQ,OAAO;AAAA,EAAiG,OAAO,8FAA8F,CAAC,IAAI;AAAA,MAC5O,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO;AACT;;;ACZA,eAAsB,qBAAqB;AAAA,EACzC;AAAA,EACA;AACF,GAAG;AACD,MAAI,oBAAoB;AACtB,WAAO;AAAA,EACT;AACA,MAAI,kBAAkB,MAAM;AAC1B,UAAM,OAAO,MAAM,QAAQ;AAAA,MAAO;AAAA,MAA6K;AAAA,QAC7M,MAAM;AAAA,QACN,SAAS,CAAC;AAAA,UACR,OAAO;AAAA,UACP,OAAO;AAAA,QACT,GAAG;AAAA,UACD,OAAO;AAAA,UACP,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA;AAAA;AAAA,IAGA;AACA,QAAI,SAAS,MAAM;AACjB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,kBAAkB,QAAQ,CAAC,eAAe,KAAK,cAAc,GAAG;AACrE,QAAI,kBAAkB,MAAM;AAC1B,cAAQ,KAAK,sCAAsC;AAAA,IACrD;AACA,qBAAiB,MAAM,QAAQ,OAAO;AAAA,EAAiE,OAAO,sDAAsD,CAAC,IAAI;AAAA,MACvK,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO,eAAe,QAAQ,OAAO,EAAE;AACzC;;;AClCA,eAAsB,eAAe;AAAA,EACnC;AACF,GAAG;AACD,SAAO,YAAY,QAAQ,CAAC,cAAc,KAAK,QAAQ,GAAG;AACxD,QAAI,YAAY,MAAM;AACpB,cAAQ,KAAK,sCAAsC;AAAA,IACrD;AACA,eAAW,MAAM,QAAQ,OAAO;AAAA,EAA2E,OAAO,6CAA6C,CAAC,IAAI;AAAA,MAClK,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO;AACT;;;ACZA,eAAsB,iBAAiB;AAAA,EACrC;AACF,GAAG;AACD,SAAO,cAAc,QAAQ,CAAC,WAAW,WAAW,UAAU,GAAG;AAC/D,QAAI,cAAc,MAAM;AACtB,cAAQ,KAAK,kCAAkC;AAAA,IACjD;AACA,iBAAa,MAAM,QAAQ,OAAO;AAAA,EAA0C,OAAO,gDAAgD,CAAC,IAAI;AAAA,MACtI,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO,WAAW,QAAQ,OAAO,EAAE;AACrC;;;ACZA,eAAsB,kBAAkB;AAAA,EACtC;AACF,GAAG;AACD,SAAO,eAAe,QAAQ,CAAC,qBAAqB,KAAK,WAAW,GAAG;AACrE,QAAI,eAAe,MAAM;AACvB,cAAQ,KAAK,wCAAwC;AAAA,IACvD;AACA,kBAAc,MAAM,QAAQ,OAAO;AAAA,EAA6E,OAAO,wBAAwB,CAAC,IAAI;AAAA,MAClJ,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO;AACT;;;ACZA,eAAsB,sBAAsB;AAAA,EAC1C;AACF,GAAG;AACD,SAAO,mBAAmB,QAAQ,CAAC,mGAAmG,KAAK,eAAe,GAAG;AAC3J,QAAI,mBAAmB,MAAM;AAC3B,cAAQ,KAAK,oEAAoE;AAAA,IACnF;AACA,sBAAkB,MAAM,QAAQ,OAAO;AAAA,EAAoF,OAAO,kKAAkK,CAAC,IAAI;AAAA,MACvS,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO,gBAAgB,QAAQ,OAAO,EAAE;AAC1C;;;ACdA,OAAO,QAAQ;AACf,OAAO,UAAU;AAGjB,eAAsB,gBAAgB;AAAA,EACpC;AAAA,EACA;AACF,GAAG;AACD,MAAI,aAAa,MAAM;AACrB,WAAO;AAAA,EACT;AACA,MAAI,CAAC,GAAG,WAAW,KAAK,KAAK,QAAQ,IAAI,GAAG,OAAO,CAAC,GAAG;AACrD,WAAO;AAAA,EACT;AACA,QAAM,SAAS,MAAM,QAAQ;AAAA,IAAO,iBAAiB,MAAM,OAAO,CAAC;AAAA,IAA0D;AAAA,MAC3H,MAAM;AAAA,MACN,SAAS,CAAC;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,MACT,GAAG;AAAA,QACD,OAAO;AAAA,QACP,OAAO;AAAA,MACT,GAAG;AAAA,QACD,OAAO;AAAA,QACP,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA;AAAA;AAAA,EAGA;AACA,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,cAAQ,KAAK,qBAAqB;AAClC,cAAQ,KAAK,CAAC;AAAA,EAClB;AACF;;;ACtCA,eAAsB,cAAc;AAAA,EAClC;AACF,GAAG;AACD,SAAO,WAAW,QAAQ,CAAC,mBAAmB,KAAK,OAAO,GAAG;AAC3D,QAAI,WAAW,MAAM;AACnB,cAAQ,KAAK,gFAAgF;AAAA,IAC/F;AACA,cAAU,MAAM,QAAQ,OAAO,iBAAiB;AAAA,MAC9C,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,SAAO;AACT;;;ACfO,IAAM,YAAY,CAAC;AAAA,EACxB,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,WAAW;AAAA,EACX,gBAAgB;AAClB,GAAG;AAAA,EACD,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,WAAW;AAAA,EACX,gBAAgB;AAClB,GAAG;AAAA,EACD,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,WAAW;AAAA,EACX,gBAAgB;AAClB,CAAC;;;ACZD,eAAsB,eAAe,QAAQ;AAC3C,MAAI,WAAW,UAAU,KAAK,OAAK,EAAE,OAAO,OAAO,YAAY,EAAE,OAAO,YAAY,OAAO,QAAQ,EAAE;AACrG,MAAI,YAAY,MAAM;AACpB,UAAM,aAAa,MAAM,QAAQ,OAAO,OAAO,YAAY,OAAO,yBAAyB,MAAM,OAAO,QAAQ,CAAC,2CAA2C,uBAAuB;AAAA,MACjL,MAAM;AAAA,MACN,SAAS,UAAU,IAAI,CAAAC,eAAa;AAAA,QAClC,OAAOA,UAAS;AAAA,QAChB,OAAOA,UAAS;AAAA,MAClB,EAAE;AAAA;AAAA;AAAA,IAGJ,CAAC;AACD,eAAW,UAAU,KAAK,OAAK,EAAE,OAAO,UAAU;AAClD,QAAI,YAAY,MAAM;AACpB,YAAM,IAAI,MAAM,YAAY,UAAU,kBAAkB;AAAA,IAC1D;AAAA,EACF;AACA,SAAO;AACT;;;AfAA,eAAsB,IAAI,OAAO,QAAQ,MAAM;AAC7C,QAAM,OAAO,MAAM,QAAQ,IAAI,CAAC,EAAE,QAAQ,OAAiC,EAAE,KAAK,KAAK,IAAI,KAAK,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,6BAA6B,wIAAwI,CAAAC,WAASA,OAAM,WAAW,WAAW;AAAA,IAC1V,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC,EAAE,OAAO,aAAa;AAAA,IACrB,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC,EAAE,OAAO,YAAY;AAAA,IACpB,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC,EAAE,OAAO,cAAc;AAAA,IACtB,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC,EAAE,OAAO,kBAAkB;AAAA,IAC1B,MAAM;AAAA,IACN,UAAU;AAAA,IACV,WAAW;AAAA,EACb,CAAC,EAAE,OAAO,sBAAsB;AAAA,IAC9B,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC,EAAE,OAAO,eAAe;AAAA,IACvB,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC,EAAE,OAAO,YAAY;AAAA,IACpB,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC,EAAE,OAAO,eAAe;AAAA,IACvB,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC,EAAE,OAAO,mBAAmB;AAAA,IAC3B,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC,CAAC;AACF,QAAM,SAAS,KAAK,UAAU;AAC9B,QAAM,UAAU,MAAM,cAAc,MAAM;AAC1C,QAAM,YAAY,MAAM,gBAAgB;AAAA,IACtC,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACD,QAAM,WAAW,MAAM,eAAe,MAAM;AAC5C,QAAM,aAAa,MAAM,iBAAiB,MAAM;AAChD,QAAM,iBAAiB,MAAM,qBAAqB,MAAM;AACxD,QAAM,cAAc,MAAM,qBAAqB,MAAM;AACrD,QAAM,WAAW,MAAM,eAAe,MAAM;AAC5C,QAAM,cAAc,MAAM,kBAAkB,MAAM;AAClD,QAAM,kBAAkB,MAAM,sBAAsB,MAAM;AAC1D,UAAQ,IAAI,EAAE;AACd,UAAQ,MAAM,oBAAoB,MAAM,OAAO,CAAC,mBAAmB,MAAM,SAAS,EAAE,CAAC,EAAE;AACvF,QAAM,MAAM,QAAQ,IAAI;AACxB,QAAM,OAAOF,MAAK,KAAK,KAAK,OAAO;AACnC,MAAID,IAAG,WAAW,IAAI,GAAG;AACvB,QAAI,WAAW;AACb,cAAQ,KAAK,wCAAwC;AACrD,MAAAA,IAAG,OAAO,MAAM;AAAA,QACd,WAAW;AAAA,QACX,OAAO;AAAA,MACT,CAAC;AACD,MAAAA,IAAG,UAAU,MAAM;AAAA,QACjB,WAAW;AAAA,MACb,CAAC;AAAA,IACH,OAAO;AACL,cAAQ,KAAK,oCAAoC;AAAA,IACnD;AAAA,EACF,OAAO;AACL,YAAQ,KAAK,4BAA4B;AACzC,IAAAA,IAAG,UAAU,MAAM;AAAA,MACjB,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AACA,UAAQ,KAAK,sCAAsC;AACnD,QAAM,eAAe,WAAW,aAAa;AAAA,IAC3C,KAAKC,MAAK,QAAQ,cAAc,YAAY,GAAG,CAAC;AAAA,IAChD,MAAM;AAAA,EACR,CAAC;AACD,MAAI,gBAAgB,MAAM;AACxB,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AACA,QAAM,cAAcA,MAAK,QAAQ,cAAc,SAAS,EAAE;AAC1D,EAAAD,IAAG,OAAO,aAAa,MAAM;AAAA,IAC3B,WAAW;AAAA,EACb,CAAC;AACD,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,EACF;AACA,QAAM,cAAc,SAAU,KAAK;AACjC,IAAAA,IAAG,YAAY,GAAG,EAAE,QAAQ,SAAU,MAAM;AAC1C,aAAO,MAAM,MAAM;AACnB,YAAM,OAAOA,IAAG,SAAS,IAAI;AAC7B,UAAI,KAAK,YAAY,GAAG;AACtB,oBAAY,IAAI;AAChB;AAAA,MACF;AACA,UAAI,CAAC,KAAK,SAAS,MAAM,GAAG;AAC1B;AAAA,MACF;AACA,YAAM,YAAY,WAAW,QAAQA,IAAG,aAAa,MAAM,OAAO,CAAC,EAAE,eAAe;AACpF,MAAAA,IAAG,cAAc,KAAK,QAAQ,SAAS,EAAE,GAAG,SAAS;AACrD,MAAAA,IAAG,OAAO,IAAI;AAAA,IAChB,CAAC;AAAA,EACH;AACA,cAAY,IAAI;AAChB,QAAM,QAAQ,cAAc;AAAA,IAC1B;AAAA,IACA;AAAA,EACF,CAAC;AACD,EAAAA,IAAG,cAAcC,MAAK,KAAK,MAAM,QAAQ,GAAG,KAAK;AACjD,QAAM,iBAAiB,uBAAuB;AAAA,IAC5C,WAAW,SAAS;AAAA,IACpB;AAAA,IACA;AAAA,EACF,CAAC;AACD,EAAAD,IAAG,cAAcC,MAAK,KAAK,MAAM,kBAAkB,GAAG,cAAc;AACpE,QAAM,gBAAgB,sBAAsB;AAAA,IAC1C,WAAW,SAAS;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,EAAAD,IAAG,cAAcC,MAAK,KAAK,MAAM,iBAAiB,GAAG,aAAa;AAClE,QAAM,oBAAoB,0BAA0B;AAAA,IAClD;AAAA,IACA;AAAA,IACA,WAAW,SAAS;AAAA,EACtB,CAAC;AACD,EAAAD,IAAG,cAAcC,MAAK,KAAK,MAAM,qBAAqB,GAAG,iBAAiB;AAC1E,UAAQ,QAAQ,SAAS;AACzB,QAAM,aAAaA,MAAK,SAAS,KAAK,IAAI;AAC1C,UAAQ,IAAI;AAAA,IACV,SAAS;AAAA;AAAA,SAAwE,UAAU;AAAA;AAAA;AAAA;AAAA,IAC3F,OAAO;AAAA,MACL,SAAS;AAAA,MACT,aAAa;AAAA,MACb,aAAa;AAAA,IACf;AAAA,EACF,CAAC;AACH","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 ?? \"\").wrap(Math.min(150, yargs().terminalWidth())).strict().help().command(\"$0 [project] [--<option>]\", \"Create a new OSDK application based on framework templates. Information may be provided through options 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(\"foundryUrl\", {\n type: \"string\",\n describe: \"URL for the Foundry stack\"\n }).option(\"applicationUrl\", {\n type: \"string\",\n describe: \"URL the production application will be hosted on\",\n conflicts: \"skipApplicationUrl\"\n }).option(\"skipApplicationUrl\", {\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(\"clientId\", {\n type: \"string\",\n describe: \"OAuth client ID for application\"\n }).option(\"osdkPackage\", {\n type: \"string\",\n describe: \"OSDK package name for application\"\n }).option(\"osdkRegistryUrl\", {\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,\n clientId\n });\n}\nfunction generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n}) {\n return `${envPrefix}FOUNDRY_API_URL=${foundryUrl}\\n` + `${applicationUrl == null ? \"# \" : \"\"}${envPrefix}FOUNDRY_REDIRECT_URL=${applicationUrl ?? \"<Fill in the domain at which you deploy your application>\"}/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 || t.id === `template-${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
|
@@ -43,7 +43,7 @@ function generateEnvProduction({
|
|
|
43
43
|
return generateEnv({
|
|
44
44
|
envPrefix,
|
|
45
45
|
foundryUrl,
|
|
46
|
-
applicationUrl
|
|
46
|
+
applicationUrl,
|
|
47
47
|
clientId
|
|
48
48
|
});
|
|
49
49
|
}
|
|
@@ -54,7 +54,7 @@ function generateEnv({
|
|
|
54
54
|
clientId
|
|
55
55
|
}) {
|
|
56
56
|
return `${envPrefix}FOUNDRY_API_URL=${foundryUrl}
|
|
57
|
-
${envPrefix}FOUNDRY_REDIRECT_URL=${applicationUrl}/auth/callback
|
|
57
|
+
${applicationUrl == null ? "# " : ""}${envPrefix}FOUNDRY_REDIRECT_URL=${applicationUrl ?? "<Fill in the domain at which you deploy your application>"}/auth/callback
|
|
58
58
|
${envPrefix}FOUNDRY_CLIENT_ID=${clientId}
|
|
59
59
|
`;
|
|
60
60
|
}
|
|
@@ -104,7 +104,7 @@ async function promptApplicationRid({
|
|
|
104
104
|
consola.fail("Please enter a valid application resource identifier (rid)");
|
|
105
105
|
}
|
|
106
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)")}`, {
|
|
107
|
+
${italic("(Example: ri.third-party-applications.main.application.1c66b352-4e00-40d2-995d-061c9d533ace)")}`, {
|
|
108
108
|
type: "text"
|
|
109
109
|
});
|
|
110
110
|
}
|
|
@@ -144,7 +144,7 @@ async function promptApplicationUrl({
|
|
|
144
144
|
consola.fail("Please enter a valid application URL");
|
|
145
145
|
}
|
|
146
146
|
applicationUrl = await consola.prompt(`Enter the URL your production application will be hosted on:
|
|
147
|
-
${italic("(Example https://myapp.example.palantirfoundry.com
|
|
147
|
+
${italic("(Example: https://myapp.example.palantirfoundry.com)")}`, {
|
|
148
148
|
type: "text"
|
|
149
149
|
});
|
|
150
150
|
}
|
|
@@ -160,7 +160,7 @@ async function promptClientId({
|
|
|
160
160
|
consola.fail("Please enter a valid OAuth client ID");
|
|
161
161
|
}
|
|
162
162
|
clientId = await consola.prompt(`Enter the OAuth client ID for your application from Developer Console:
|
|
163
|
-
${italic("(Example 2650385ab6c5e0df3b44aff776b00a42)")}`, {
|
|
163
|
+
${italic("(Example: 2650385ab6c5e0df3b44aff776b00a42)")}`, {
|
|
164
164
|
type: "text"
|
|
165
165
|
});
|
|
166
166
|
}
|
|
@@ -176,7 +176,7 @@ async function promptFoundryUrl({
|
|
|
176
176
|
consola.fail("Please enter a valid Foundry URL");
|
|
177
177
|
}
|
|
178
178
|
foundryUrl = await consola.prompt(`Enter the URL for your Foundry stack:
|
|
179
|
-
${italic("(Example https://example.palantirfoundry.com
|
|
179
|
+
${italic("(Example: https://example.palantirfoundry.com)")}`, {
|
|
180
180
|
type: "text"
|
|
181
181
|
});
|
|
182
182
|
}
|
|
@@ -192,7 +192,7 @@ async function promptOsdkPackage({
|
|
|
192
192
|
consola.fail("Please enter a valid OSDK package name");
|
|
193
193
|
}
|
|
194
194
|
osdkPackage = await consola.prompt(`Enter the OSDK package name for your application from Developer Console:
|
|
195
|
-
${italic("(Example @my-app/sdk)")}`, {
|
|
195
|
+
${italic("(Example: @my-app/sdk)")}`, {
|
|
196
196
|
type: "text"
|
|
197
197
|
});
|
|
198
198
|
}
|
|
@@ -208,7 +208,7 @@ async function promptOsdkRegistryUrl({
|
|
|
208
208
|
consola.fail("Please enter a valid NPM registry URL to install your OSDK package");
|
|
209
209
|
}
|
|
210
210
|
osdkRegistryUrl = await consola.prompt(`Enter the NPM registry URL to install your OSDK package from Developer Console:
|
|
211
|
-
${italic("(Example https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.a4a7fe1c-486f-4226-b706-7b90005f527d/contents/release/npm)")}`, {
|
|
211
|
+
${italic("(Example: https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.a4a7fe1c-486f-4226-b706-7b90005f527d/contents/release/npm)")}`, {
|
|
212
212
|
type: "text"
|
|
213
213
|
});
|
|
214
214
|
}
|
|
@@ -290,7 +290,7 @@ var TEMPLATES = [{
|
|
|
290
290
|
|
|
291
291
|
// src/prompts/promptTemplate.ts
|
|
292
292
|
async function promptTemplate(parsed) {
|
|
293
|
-
let template = TEMPLATES.find((t) => t.id === parsed.template);
|
|
293
|
+
let template = TEMPLATES.find((t) => t.id === parsed.template || t.id === `template-${parsed.template}`);
|
|
294
294
|
if (template == null) {
|
|
295
295
|
const templateId = await consola.prompt(parsed.template != null ? `The provided template ${green(parsed.template)} is invalid please select a framework:` : "Select a framework:", {
|
|
296
296
|
type: "select",
|
|
@@ -311,7 +311,7 @@ async function promptTemplate(parsed) {
|
|
|
311
311
|
|
|
312
312
|
// src/cli.ts
|
|
313
313
|
async function cli(args = process.argv) {
|
|
314
|
-
const base = yargs(hideBin(args)).version("0.
|
|
314
|
+
const base = yargs(hideBin(args)).version("0.4.0").wrap(Math.min(150, yargs().terminalWidth())).strict().help().command("$0 [project] [--<option>]", "Create a new OSDK application based on framework templates. Information may be provided through options to skip interactive prompts.", (yargs2) => yargs2.positional("project", {
|
|
315
315
|
type: "string",
|
|
316
316
|
describe: "Project name to create"
|
|
317
317
|
}).option("overwrite", {
|
|
@@ -325,7 +325,8 @@ async function cli(args = process.argv) {
|
|
|
325
325
|
describe: "URL for the Foundry stack"
|
|
326
326
|
}).option("applicationUrl", {
|
|
327
327
|
type: "string",
|
|
328
|
-
describe: "URL the production application will be hosted on"
|
|
328
|
+
describe: "URL the production application will be hosted on",
|
|
329
|
+
conflicts: "skipApplicationUrl"
|
|
329
330
|
}).option("skipApplicationUrl", {
|
|
330
331
|
type: "boolean",
|
|
331
332
|
describe: "Skip filling in URL the production application will be hosted on"
|
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/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 ?? \"\").wrap(Math.min(150, yargs().terminalWidth())).strict().help().command(\"$0 [project] [--<option>]\", \"Create a new OSDK application based on framework templates. Information may be provided through options 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(\"foundryUrl\", {\n type: \"string\",\n describe: \"URL for the Foundry stack\"\n }).option(\"applicationUrl\", {\n type: \"string\",\n describe: \"URL the production application will be hosted on\"\n }).option(\"skipApplicationUrl\", {\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(\"clientId\", {\n type: \"string\",\n describe: \"OAuth client ID for application\"\n }).option(\"osdkPackage\", {\n type: \"string\",\n describe: \"OSDK package name for application\"\n }).option(\"osdkRegistryUrl\", {\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}"]}
|
|
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 ?? \"\").wrap(Math.min(150, yargs().terminalWidth())).strict().help().command(\"$0 [project] [--<option>]\", \"Create a new OSDK application based on framework templates. Information may be provided through options 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(\"foundryUrl\", {\n type: \"string\",\n describe: \"URL for the Foundry stack\"\n }).option(\"applicationUrl\", {\n type: \"string\",\n describe: \"URL the production application will be hosted on\",\n conflicts: \"skipApplicationUrl\"\n }).option(\"skipApplicationUrl\", {\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(\"clientId\", {\n type: \"string\",\n describe: \"OAuth client ID for application\"\n }).option(\"osdkPackage\", {\n type: \"string\",\n describe: \"OSDK package name for application\"\n }).option(\"osdkRegistryUrl\", {\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,\n clientId\n });\n}\nfunction generateEnv({\n envPrefix,\n foundryUrl,\n applicationUrl,\n clientId\n}) {\n return `${envPrefix}FOUNDRY_API_URL=${foundryUrl}\\n` + `${applicationUrl == null ? \"# \" : \"\"}${envPrefix}FOUNDRY_REDIRECT_URL=${applicationUrl ?? \"<Fill in the domain at which you deploy your application>\"}/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 || t.id === `template-${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/package.json
CHANGED
|
@@ -1,25 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
<g
|
|
6
|
-
<
|
|
1
|
+
<svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<mask id="mask0_408_134" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="180" height="180">
|
|
3
|
+
<circle cx="90" cy="90" r="90" fill="black"/>
|
|
4
|
+
</mask>
|
|
5
|
+
<g mask="url(#mask0_408_134)">
|
|
6
|
+
<circle cx="90" cy="90" r="90" fill="black"/>
|
|
7
|
+
<path d="M149.508 157.52L69.142 54H54V125.97H66.1136V69.3836L139.999 164.845C143.333 162.614 146.509 160.165 149.508 157.52Z" fill="url(#paint0_linear_408_134)"/>
|
|
8
|
+
<rect x="115" y="54" width="12" height="72" fill="url(#paint1_linear_408_134)"/>
|
|
7
9
|
</g>
|
|
8
|
-
<rect x="1" y="1" width="14" height="3" fill="#72CA9B"/>
|
|
9
|
-
<rect x="1" y="4" width="14" height="1" fill="#32A467"/>
|
|
10
|
-
<rect x="2" y="2" width="1" height="1" fill="white"/>
|
|
11
|
-
<rect x="4" y="2" width="1" height="1" fill="white"/>
|
|
12
|
-
<rect x="6" y="2" width="1" height="1" fill="white"/>
|
|
13
|
-
<rect x="12" y="2" width="2" height="1" fill="white"/>
|
|
14
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 8H14C14.5523 8 15 8.44772 15 9V14C15 14.5523 14.5523 15 14 15H6C5.44772 15 5 14.5523 5 14V9C5 8.44772 5.44772 8 6 8Z" fill="white"/>
|
|
15
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 9H14V14H6V9Z" fill="url(#paint0_linear_1221_19327)"/>
|
|
16
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 10H7V11H8V12H7V13H8V12H9V11H8V10ZM13 12H10V13H13V12Z" fill="white"/>
|
|
17
|
-
<path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M6 7H14C15.1046 7 16 7.89543 16 9V14C16 15.1046 15.1046 16 14 16H6C4.89543 16 4 15.1046 4 14V9C4 7.89543 4.89543 7 6 7ZM15 9C15 8.44772 14.5523 8 14 8H6C5.44772 8 5 8.44772 5 9V14C5 14.5523 5.44772 15 6 15H14C14.5523 15 15 14.5523 15 14V9Z" fill="#10161A"/>
|
|
18
10
|
<defs>
|
|
19
|
-
<linearGradient id="
|
|
20
|
-
<stop stop-color="
|
|
21
|
-
<stop offset="
|
|
22
|
-
|
|
11
|
+
<linearGradient id="paint0_linear_408_134" x1="109" y1="116.5" x2="144.5" y2="160.5" gradientUnits="userSpaceOnUse">
|
|
12
|
+
<stop stop-color="white"/>
|
|
13
|
+
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
<linearGradient id="paint1_linear_408_134" x1="121" y1="54" x2="120.799" y2="106.875" gradientUnits="userSpaceOnUse">
|
|
16
|
+
<stop stop-color="white"/>
|
|
17
|
+
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
|
23
18
|
</linearGradient>
|
|
24
19
|
</defs>
|
|
25
20
|
</svg>
|
|
@@ -16,23 +16,13 @@ function RootLayout({ children }: { children: React.ReactNode }) {
|
|
|
16
16
|
<html lang="en">
|
|
17
17
|
<body className={inter.className}>
|
|
18
18
|
<div id="root">
|
|
19
|
-
<a href="https://www.palantir.com/" target="_blank">
|
|
20
|
-
<Image
|
|
21
|
-
src="/palantir.svg"
|
|
22
|
-
alt="Palantir logo"
|
|
23
|
-
className={css.logo}
|
|
24
|
-
width={16}
|
|
25
|
-
height={16}
|
|
26
|
-
priority
|
|
27
|
-
/>
|
|
28
|
-
</a>
|
|
29
19
|
<a
|
|
30
20
|
href="https://www.palantir.com/docs/foundry/ontology-sdk/overview/"
|
|
31
21
|
target="_blank"
|
|
32
22
|
>
|
|
33
23
|
<Image
|
|
34
|
-
src="/
|
|
35
|
-
alt="
|
|
24
|
+
src="/palantir.svg"
|
|
25
|
+
alt="Palantir logo"
|
|
36
26
|
className={css.logo}
|
|
37
27
|
width={16}
|
|
38
28
|
height={16}
|
|
@@ -24,19 +24,25 @@ function Home() {
|
|
|
24
24
|
<div>
|
|
25
25
|
<h2>Objects ({objectApiNames.length})</h2>
|
|
26
26
|
{objectApiNames.map((objectApiName) => (
|
|
27
|
-
<
|
|
27
|
+
<pre key={objectApiName}>
|
|
28
|
+
client.ontology.objects.{objectApiName}
|
|
29
|
+
</pre>
|
|
28
30
|
))}
|
|
29
31
|
</div>
|
|
30
32
|
<div>
|
|
31
33
|
<h2>Actions ({actionApiNames.length})</h2>
|
|
32
34
|
{actionApiNames.map((actionApiName) => (
|
|
33
|
-
<
|
|
35
|
+
<pre key={actionApiName}>
|
|
36
|
+
client.ontology.actions.{actionApiName}
|
|
37
|
+
</pre>
|
|
34
38
|
))}
|
|
35
39
|
</div>
|
|
36
40
|
<div>
|
|
37
41
|
<h2>Queries ({queryApiNames.length})</h2>
|
|
38
42
|
{queryApiNames.map((queryApiName) => (
|
|
39
|
-
<
|
|
43
|
+
<pre key={queryApiName}>
|
|
44
|
+
client.ontology.queries.{queryApiName}
|
|
45
|
+
</pre>
|
|
40
46
|
))}
|
|
41
47
|
</div>
|
|
42
48
|
</div>
|
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
import { FoundryClient, PublicClientAuth } from "{{osdkPackage}}";
|
|
2
2
|
|
|
3
|
+
const url = process.env.NEXT_PUBLIC_FOUNDRY_API_URL;
|
|
4
|
+
const clientId = process.env.NEXT_PUBLIC_FOUNDRY_CLIENT_ID;
|
|
5
|
+
const redirectUrl = process.env.NEXT_PUBLIC_FOUNDRY_REDIRECT_URL;
|
|
6
|
+
checkEnv(url, "NEXT_PUBLIC_FOUNDRY_API_URL");
|
|
7
|
+
checkEnv(clientId, "NEXT_PUBLIC_FOUNDRY_CLIENT_ID");
|
|
8
|
+
checkEnv(redirectUrl, "NEXT_PUBLIC_FOUNDRY_REDIRECT_URL");
|
|
9
|
+
|
|
10
|
+
function checkEnv(
|
|
11
|
+
value: string | undefined,
|
|
12
|
+
name: string,
|
|
13
|
+
): asserts value is string {
|
|
14
|
+
if (value == null) {
|
|
15
|
+
throw new Error(`Missing environment variable: ${name}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
3
19
|
/**
|
|
4
20
|
* Initialize the client to interact with the Ontology SDK
|
|
5
21
|
*/
|
|
6
22
|
const client = new FoundryClient({
|
|
7
|
-
url
|
|
23
|
+
url,
|
|
8
24
|
auth: new PublicClientAuth({
|
|
9
|
-
clientId
|
|
10
|
-
url
|
|
11
|
-
redirectUrl
|
|
25
|
+
clientId,
|
|
26
|
+
url,
|
|
27
|
+
redirectUrl,
|
|
12
28
|
}),
|
|
13
29
|
});
|
|
14
30
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<link rel="icon" type="image/svg+xml" href="/
|
|
5
|
+
<link rel="icon" type="image/svg+xml" href="/react.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Ontology SDK + React</title>
|
|
8
8
|
</head>
|
|
@@ -18,19 +18,25 @@ function Home() {
|
|
|
18
18
|
<div>
|
|
19
19
|
<h2>Objects ({objectApiNames.length})</h2>
|
|
20
20
|
{objectApiNames.map((objectApiName) => (
|
|
21
|
-
<
|
|
21
|
+
<pre key={objectApiName}>
|
|
22
|
+
client.ontology.objects.{objectApiName}
|
|
23
|
+
</pre>
|
|
22
24
|
))}
|
|
23
25
|
</div>
|
|
24
26
|
<div>
|
|
25
27
|
<h2>Actions ({actionApiNames.length})</h2>
|
|
26
28
|
{actionApiNames.map((actionApiName) => (
|
|
27
|
-
<
|
|
29
|
+
<pre key={actionApiName}>
|
|
30
|
+
client.ontology.actions.{actionApiName}
|
|
31
|
+
</pre>
|
|
28
32
|
))}
|
|
29
33
|
</div>
|
|
30
34
|
<div>
|
|
31
35
|
<h2>Queries ({queryApiNames.length})</h2>
|
|
32
36
|
{queryApiNames.map((queryApiName) => (
|
|
33
|
-
<
|
|
37
|
+
<pre key={queryApiName}>
|
|
38
|
+
client.ontology.queries.{queryApiName}
|
|
39
|
+
</pre>
|
|
34
40
|
))}
|
|
35
41
|
</div>
|
|
36
42
|
</div>
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import devConsoleLogo from "/dev-console.svg";
|
|
2
1
|
import palantirLogo from "/palantir.svg";
|
|
3
2
|
import reactLogo from "/react.svg";
|
|
4
3
|
import React from "react";
|
|
@@ -12,18 +11,11 @@ function Layout({ children }: LayoutProps) {
|
|
|
12
11
|
return (
|
|
13
12
|
<>
|
|
14
13
|
<div>
|
|
15
|
-
<a href="https://www.palantir.com/" target="_blank">
|
|
16
|
-
<img src={palantirLogo} className={css.logo} alt="Palantir logo" />
|
|
17
|
-
</a>
|
|
18
14
|
<a
|
|
19
15
|
href="https://www.palantir.com/docs/foundry/ontology-sdk/overview/"
|
|
20
16
|
target="_blank"
|
|
21
17
|
>
|
|
22
|
-
<img
|
|
23
|
-
src={devConsoleLogo}
|
|
24
|
-
className={css.logo}
|
|
25
|
-
alt="Developer Console logo"
|
|
26
|
-
/>
|
|
18
|
+
<img src={palantirLogo} className={css.logo} alt="Palantir logo" />
|
|
27
19
|
</a>
|
|
28
20
|
<a href="https://react.dev" target="_blank">
|
|
29
21
|
<img src={reactLogo} className={css.logo} alt="React logo" />
|
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
import { FoundryClient, PublicClientAuth } from "{{osdkPackage}}";
|
|
2
2
|
|
|
3
|
+
const url = import.meta.env.VITE_FOUNDRY_API_URL;
|
|
4
|
+
const clientId = import.meta.env.VITE_FOUNDRY_CLIENT_ID;
|
|
5
|
+
const redirectUrl = import.meta.env.VITE_FOUNDRY_REDIRECT_URL;
|
|
6
|
+
checkEnv(url, "VITE_FOUNDRY_API_URL");
|
|
7
|
+
checkEnv(clientId, "VITE_FOUNDRY_CLIENT_ID");
|
|
8
|
+
checkEnv(redirectUrl, "VITE_FOUNDRY_REDIRECT_URL");
|
|
9
|
+
|
|
10
|
+
function checkEnv(
|
|
11
|
+
value: string | undefined,
|
|
12
|
+
name: string,
|
|
13
|
+
): asserts value is string {
|
|
14
|
+
if (value == null) {
|
|
15
|
+
throw new Error(`Missing environment variable: ${name}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
3
19
|
/**
|
|
4
20
|
* Initialize the client to interact with the Ontology SDK
|
|
5
21
|
*/
|
|
6
22
|
const client = new FoundryClient({
|
|
7
|
-
url
|
|
23
|
+
url,
|
|
8
24
|
auth: new PublicClientAuth({
|
|
9
|
-
clientId
|
|
10
|
-
url
|
|
11
|
-
redirectUrl
|
|
25
|
+
clientId,
|
|
26
|
+
url,
|
|
27
|
+
redirectUrl,
|
|
12
28
|
}),
|
|
13
29
|
});
|
|
14
30
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<link rel="icon" type="image/svg+xml" href="/
|
|
5
|
+
<link rel="icon" type="image/svg+xml" href="/vue.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Ontology SDK + Vue</title>
|
|
8
8
|
</head>
|
|
@@ -14,21 +14,21 @@ const queryApiNames = Object.keys(client.ontology.queries);
|
|
|
14
14
|
<div class="methods">
|
|
15
15
|
<div>
|
|
16
16
|
<h2>Objects (\{{ objectApiNames.length }})</h2>
|
|
17
|
-
<
|
|
17
|
+
<pre v-for="objectApiName in objectApiNames" key="objectApiName">
|
|
18
18
|
client.ontology.objects.\{{ objectApiName }}
|
|
19
|
-
</
|
|
19
|
+
</pre>
|
|
20
20
|
</div>
|
|
21
21
|
<div>
|
|
22
22
|
<h2>Actions (\{{ actionApiNames.length }})</h2>
|
|
23
|
-
<
|
|
23
|
+
<pre v-for="actionApiName in actionApiNames" key="actionApiName">
|
|
24
24
|
client.ontology.actions.\{{ actionApiName }}
|
|
25
|
-
</
|
|
25
|
+
</pre>
|
|
26
26
|
</div>
|
|
27
27
|
<div>
|
|
28
28
|
<h2>Queries (\{{ queryApiNames.length }})</h2>
|
|
29
|
-
<
|
|
29
|
+
<pre v-for="queryApiName in queryApiNames" key="queryApiName">
|
|
30
30
|
client.ontology.queries.\{{ queryApiName }}
|
|
31
|
-
</
|
|
31
|
+
</pre>
|
|
32
32
|
</div>
|
|
33
33
|
</div>
|
|
34
34
|
</template>
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
<a href="https://www.palantir.com/" target="_blank">
|
|
4
|
-
<img src="/palantir.svg" class="logo" alt="Palantir logo" />
|
|
5
|
-
</a>
|
|
6
3
|
<a
|
|
7
4
|
href="https://www.palantir.com/docs/foundry/ontology-sdk/overview/"
|
|
8
5
|
target="_blank"
|
|
9
6
|
>
|
|
10
|
-
<img src="/
|
|
7
|
+
<img src="/palantir.svg" class="logo" alt="Palantir logo" />
|
|
11
8
|
</a>
|
|
12
9
|
<a href="https://vuejs.org/" target="_blank">
|
|
13
10
|
<img src="/vue.svg" class="logo" alt="Vue logo" />
|
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
import { FoundryClient, PublicClientAuth } from "{{osdkPackage}}";
|
|
2
2
|
|
|
3
|
+
const url = import.meta.env.VITE_FOUNDRY_API_URL;
|
|
4
|
+
const clientId = import.meta.env.VITE_FOUNDRY_CLIENT_ID;
|
|
5
|
+
const redirectUrl = import.meta.env.VITE_FOUNDRY_REDIRECT_URL;
|
|
6
|
+
checkEnv(url, "VITE_FOUNDRY_API_URL");
|
|
7
|
+
checkEnv(clientId, "VITE_FOUNDRY_CLIENT_ID");
|
|
8
|
+
checkEnv(redirectUrl, "VITE_FOUNDRY_REDIRECT_URL");
|
|
9
|
+
|
|
10
|
+
function checkEnv(
|
|
11
|
+
value: string | undefined,
|
|
12
|
+
name: string,
|
|
13
|
+
): asserts value is string {
|
|
14
|
+
if (value == null) {
|
|
15
|
+
throw new Error(`Missing environment variable: ${name}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
3
19
|
/**
|
|
4
20
|
* Initialize the client to interact with the Ontology SDK
|
|
5
21
|
*/
|
|
6
22
|
const client = new FoundryClient({
|
|
7
|
-
url
|
|
23
|
+
url,
|
|
8
24
|
auth: new PublicClientAuth({
|
|
9
|
-
clientId
|
|
10
|
-
url
|
|
11
|
-
redirectUrl
|
|
25
|
+
clientId,
|
|
26
|
+
url,
|
|
27
|
+
redirectUrl,
|
|
12
28
|
}),
|
|
13
29
|
});
|
|
14
30
|
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<title>Developer Console Application</title>
|
|
4
|
-
<rect x="1" y="1" width="14" height="12" fill="white"/>
|
|
5
|
-
<g opacity="0.5">
|
|
6
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M1 0H15C15.55 0 16 0.45 16 1V13C16 13.55 15.55 14 15 14H1C0.45 14 0 13.55 0 13V1C0 0.45 0.45 0 1 0ZM15 13V1H1V13H15Z" fill="#10161A"/>
|
|
7
|
-
</g>
|
|
8
|
-
<rect x="1" y="1" width="14" height="3" fill="#72CA9B"/>
|
|
9
|
-
<rect x="1" y="4" width="14" height="1" fill="#32A467"/>
|
|
10
|
-
<rect x="2" y="2" width="1" height="1" fill="white"/>
|
|
11
|
-
<rect x="4" y="2" width="1" height="1" fill="white"/>
|
|
12
|
-
<rect x="6" y="2" width="1" height="1" fill="white"/>
|
|
13
|
-
<rect x="12" y="2" width="2" height="1" fill="white"/>
|
|
14
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 8H14C14.5523 8 15 8.44772 15 9V14C15 14.5523 14.5523 15 14 15H6C5.44772 15 5 14.5523 5 14V9C5 8.44772 5.44772 8 6 8Z" fill="white"/>
|
|
15
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 9H14V14H6V9Z" fill="url(#paint0_linear_1221_19327)"/>
|
|
16
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 10H7V11H8V12H7V13H8V12H9V11H8V10ZM13 12H10V13H13V12Z" fill="white"/>
|
|
17
|
-
<path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M6 7H14C15.1046 7 16 7.89543 16 9V14C16 15.1046 15.1046 16 14 16H6C4.89543 16 4 15.1046 4 14V9C4 7.89543 4.89543 7 6 7ZM15 9C15 8.44772 14.5523 8 14 8H6C5.44772 8 5 8.44772 5 9V14C5 14.5523 5.44772 15 6 15H14C14.5523 15 15 14.5523 15 14V9Z" fill="#10161A"/>
|
|
18
|
-
<defs>
|
|
19
|
-
<linearGradient id="paint0_linear_1221_19327" x1="17.4913" y1="13.1561" x2="15.3484" y2="6.02991" gradientUnits="userSpaceOnUse">
|
|
20
|
-
<stop stop-color="#394B59"/>
|
|
21
|
-
<stop offset="0.827" stop-color="#394B59"/>
|
|
22
|
-
<stop offset="1" stop-color="#30404D"/>
|
|
23
|
-
</linearGradient>
|
|
24
|
-
</defs>
|
|
25
|
-
</svg>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<title>Developer Console Application</title>
|
|
4
|
-
<rect x="1" y="1" width="14" height="12" fill="white"/>
|
|
5
|
-
<g opacity="0.5">
|
|
6
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M1 0H15C15.55 0 16 0.45 16 1V13C16 13.55 15.55 14 15 14H1C0.45 14 0 13.55 0 13V1C0 0.45 0.45 0 1 0ZM15 13V1H1V13H15Z" fill="#10161A"/>
|
|
7
|
-
</g>
|
|
8
|
-
<rect x="1" y="1" width="14" height="3" fill="#72CA9B"/>
|
|
9
|
-
<rect x="1" y="4" width="14" height="1" fill="#32A467"/>
|
|
10
|
-
<rect x="2" y="2" width="1" height="1" fill="white"/>
|
|
11
|
-
<rect x="4" y="2" width="1" height="1" fill="white"/>
|
|
12
|
-
<rect x="6" y="2" width="1" height="1" fill="white"/>
|
|
13
|
-
<rect x="12" y="2" width="2" height="1" fill="white"/>
|
|
14
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 8H14C14.5523 8 15 8.44772 15 9V14C15 14.5523 14.5523 15 14 15H6C5.44772 15 5 14.5523 5 14V9C5 8.44772 5.44772 8 6 8Z" fill="white"/>
|
|
15
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 9H14V14H6V9Z" fill="url(#paint0_linear_1221_19327)"/>
|
|
16
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 10H7V11H8V12H7V13H8V12H9V11H8V10ZM13 12H10V13H13V12Z" fill="white"/>
|
|
17
|
-
<path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M6 7H14C15.1046 7 16 7.89543 16 9V14C16 15.1046 15.1046 16 14 16H6C4.89543 16 4 15.1046 4 14V9C4 7.89543 4.89543 7 6 7ZM15 9C15 8.44772 14.5523 8 14 8H6C5.44772 8 5 8.44772 5 9V14C5 14.5523 5.44772 15 6 15H14C14.5523 15 15 14.5523 15 14V9Z" fill="#10161A"/>
|
|
18
|
-
<defs>
|
|
19
|
-
<linearGradient id="paint0_linear_1221_19327" x1="17.4913" y1="13.1561" x2="15.3484" y2="6.02991" gradientUnits="userSpaceOnUse">
|
|
20
|
-
<stop stop-color="#394B59"/>
|
|
21
|
-
<stop offset="0.827" stop-color="#394B59"/>
|
|
22
|
-
<stop offset="1" stop-color="#30404D"/>
|
|
23
|
-
</linearGradient>
|
|
24
|
-
</defs>
|
|
25
|
-
</svg>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<title>Developer Console Application</title>
|
|
4
|
-
<rect x="1" y="1" width="14" height="12" fill="white"/>
|
|
5
|
-
<g opacity="0.5">
|
|
6
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M1 0H15C15.55 0 16 0.45 16 1V13C16 13.55 15.55 14 15 14H1C0.45 14 0 13.55 0 13V1C0 0.45 0.45 0 1 0ZM15 13V1H1V13H15Z" fill="#10161A"/>
|
|
7
|
-
</g>
|
|
8
|
-
<rect x="1" y="1" width="14" height="3" fill="#72CA9B"/>
|
|
9
|
-
<rect x="1" y="4" width="14" height="1" fill="#32A467"/>
|
|
10
|
-
<rect x="2" y="2" width="1" height="1" fill="white"/>
|
|
11
|
-
<rect x="4" y="2" width="1" height="1" fill="white"/>
|
|
12
|
-
<rect x="6" y="2" width="1" height="1" fill="white"/>
|
|
13
|
-
<rect x="12" y="2" width="2" height="1" fill="white"/>
|
|
14
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 8H14C14.5523 8 15 8.44772 15 9V14C15 14.5523 14.5523 15 14 15H6C5.44772 15 5 14.5523 5 14V9C5 8.44772 5.44772 8 6 8Z" fill="white"/>
|
|
15
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 9H14V14H6V9Z" fill="url(#paint0_linear_1221_19327)"/>
|
|
16
|
-
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 10H7V11H8V12H7V13H8V12H9V11H8V10ZM13 12H10V13H13V12Z" fill="white"/>
|
|
17
|
-
<path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M6 7H14C15.1046 7 16 7.89543 16 9V14C16 15.1046 15.1046 16 14 16H6C4.89543 16 4 15.1046 4 14V9C4 7.89543 4.89543 7 6 7ZM15 9C15 8.44772 14.5523 8 14 8H6C5.44772 8 5 8.44772 5 9V14C5 14.5523 5.44772 15 6 15H14C14.5523 15 15 14.5523 15 14V9Z" fill="#10161A"/>
|
|
18
|
-
<defs>
|
|
19
|
-
<linearGradient id="paint0_linear_1221_19327" x1="17.4913" y1="13.1561" x2="15.3484" y2="6.02991" gradientUnits="userSpaceOnUse">
|
|
20
|
-
<stop stop-color="#394B59"/>
|
|
21
|
-
<stop offset="0.827" stop-color="#394B59"/>
|
|
22
|
-
<stop offset="1" stop-color="#30404D"/>
|
|
23
|
-
</linearGradient>
|
|
24
|
-
</defs>
|
|
25
|
-
</svg>
|