@trackunit/iris-app 0.0.1-alpha-ce456b7c2.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.
Files changed (58) hide show
  1. package/CHANGELOG.md +209 -0
  2. package/README.md +21 -0
  3. package/executors.json +20 -0
  4. package/generators.json +17 -0
  5. package/package.json +31 -0
  6. package/src/executors/build/executor.d.ts +9 -0
  7. package/src/executors/build/executor.js +49 -0
  8. package/src/executors/build/executor.js.map +1 -0
  9. package/src/executors/build/schema.d.ts +4 -0
  10. package/src/executors/build/schema.json +19 -0
  11. package/src/executors/publish/executor.d.ts +4 -0
  12. package/src/executors/publish/executor.js +126 -0
  13. package/src/executors/publish/executor.js.map +1 -0
  14. package/src/executors/publish/schema.d.ts +3 -0
  15. package/src/executors/publish/schema.json +19 -0
  16. package/src/executors/serve/executor.d.ts +4 -0
  17. package/src/executors/serve/executor.js +42 -0
  18. package/src/executors/serve/executor.js.map +1 -0
  19. package/src/executors/serve/schema.d.ts +3 -0
  20. package/src/executors/serve/schema.json +19 -0
  21. package/src/executors/utils/checkPackageVersion.d.ts +1 -0
  22. package/src/executors/utils/checkPackageVersion.js +51 -0
  23. package/src/executors/utils/checkPackageVersion.js.map +1 -0
  24. package/src/executors/utils/defaultWebpackConfig.d.ts +4 -0
  25. package/src/executors/utils/defaultWebpackConfig.js +144 -0
  26. package/src/executors/utils/defaultWebpackConfig.js.map +1 -0
  27. package/src/executors/utils/src/index.js +1 -0
  28. package/src/generators/create/files/assets/description.md +3 -0
  29. package/src/generators/create/files/iris-app-manifest.ts__template__ +27 -0
  30. package/src/generators/create/files/package.json__template__ +4 -0
  31. package/src/generators/create/files/src/index.ts__template__ +0 -0
  32. package/src/generators/create/files/tailwind.config.js__template__ +11 -0
  33. package/src/generators/create/files/tsconfig.app.json__template__ +21 -0
  34. package/src/generators/create/files/tsconfig.json__template__ +22 -0
  35. package/src/generators/create/files/webpack.config.ts__template__ +5 -0
  36. package/src/generators/create/generator.d.ts +4 -0
  37. package/src/generators/create/generator.js +120 -0
  38. package/src/generators/create/generator.js.map +1 -0
  39. package/src/generators/create/schema.d.ts +4 -0
  40. package/src/generators/create/schema.json +25 -0
  41. package/src/generators/extend/files/ADMIN_EXTENSION/extension-manifest.ts__template__ +13 -0
  42. package/src/generators/extend/files/ASSET_HOME_EXTENSION/extension-manifest.ts__template__ +13 -0
  43. package/src/generators/extend/files/FLEET_EXTENSION/extension-manifest.ts__template__ +14 -0
  44. package/src/generators/extend/files/REPORT_EXTENSION/extension-manifest.ts__template__ +10 -0
  45. package/src/generators/extend/files/react-app/src/app.spec.tsx__template__ +9 -0
  46. package/src/generators/extend/files/react-app/src/app.tsx__template__ +33 -0
  47. package/src/generators/extend/files/react-app/src/index.tsx__template__ +27 -0
  48. package/src/generators/extend/generator.d.ts +4 -0
  49. package/src/generators/extend/generator.js +143 -0
  50. package/src/generators/extend/generator.js.map +1 -0
  51. package/src/generators/extend/schema.d.ts +7 -0
  52. package/src/generators/extend/schema.json +54 -0
  53. package/src/index.d.ts +4 -0
  54. package/src/index.js +8 -0
  55. package/src/index.js.map +1 -0
  56. package/src/utils/addDevDependency.d.ts +3 -0
  57. package/src/utils/addDevDependency.js +39 -0
  58. package/src/utils/addDevDependency.js.map +1 -0
@@ -0,0 +1,3 @@
1
+ export interface ServeExecutorSchema {
2
+ webpackConfig: string;
3
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "cli": "nx",
4
+ "title": "Serve executor for apps from the Iris App SDK",
5
+ "description": "",
6
+ "type": "object",
7
+ "properties": {
8
+ "webpackConfig": {
9
+ "type": "string",
10
+ "description": "",
11
+ "$default": {
12
+ "$source": "argv",
13
+ "index": 0
14
+ },
15
+ "x-prompt": "What is the path for the webpack config for this app?"
16
+ }
17
+ },
18
+ "required": []
19
+ }
@@ -0,0 +1 @@
1
+ export default function checkPackageVersion(): Promise<boolean>;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const devkit_1 = require("@nrwl/devkit");
5
+ const child_process_1 = require("child_process");
6
+ const pacote = tslib_1.__importStar(require("pacote"));
7
+ const semver = tslib_1.__importStar(require("semver"));
8
+ async function VersionCheck(pkg, localVersion, range) {
9
+ // localVersion >= major.minor.x
10
+ if (!semver.gte(localVersion, range)) {
11
+ throw new Error(`Package "${pkg}" outdated. Remote Version: ${range} Local version: ${localVersion}`);
12
+ }
13
+ return true;
14
+ }
15
+ async function getLatestRemoteVersion(pkg) {
16
+ const manifest = await pacote.manifest(pkg);
17
+ return manifest.version;
18
+ }
19
+ async function checkNodeVersion() {
20
+ const NodeVersion = await process.version.replace(/\r?\n|\r/, ""); // regex removes any linebreaks
21
+ const managerNodeVersion = "16.13.2"; // Bump this when major or minor version changes.
22
+ await VersionCheck("node", NodeVersion, managerNodeVersion);
23
+ }
24
+ async function checkNxVersion() {
25
+ const nxVersion = (0, child_process_1.execSync)("nx --version")
26
+ .toString("utf-8")
27
+ .replace(/\r?\n|\r/, ""); // regex removes any linebreaks
28
+ const managerNxVersion = "14.8.3"; // Bump this when major or minor version changes.
29
+ await VersionCheck("nx", nxVersion, managerNxVersion);
30
+ }
31
+ async function checkTrackunitPackages() {
32
+ const packageJsonLocal = await (0, devkit_1.readJsonFile)("package.json");
33
+ const trackunitLibs = Object.keys(packageJsonLocal.dependencies).filter(lib => lib.includes("@trackunit"));
34
+ trackunitLibs.forEach(async (lib) => {
35
+ const remoteVersion = await getLatestRemoteVersion(lib);
36
+ const localVersion = packageJsonLocal.dependencies[lib];
37
+ // If @trackunit dependencies are linked/added locally using "file://"., skip the version check.
38
+ if (!localVersion.includes("file://")) {
39
+ await VersionCheck(lib, localVersion, remoteVersion);
40
+ }
41
+ });
42
+ return true;
43
+ }
44
+ async function checkPackageVersion() {
45
+ checkNodeVersion();
46
+ checkNxVersion();
47
+ checkTrackunitPackages();
48
+ return true;
49
+ }
50
+ exports.default = checkPackageVersion;
51
+ //# sourceMappingURL=checkPackageVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkPackageVersion.js","sourceRoot":"","sources":["../../../../../../../libs/iris-app-sdk/iris-app/src/executors/utils/checkPackageVersion.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAC5C,iDAAyC;AACzC,uDAAiC;AACjC,uDAAiC;AAEjC,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,YAAoB,EAAE,KAAa;IAC1E,gCAAgC;IAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;QACpC,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,+BAA+B,KAAK,mBAAmB,YAAY,EAAE,CAAC,CAAC;KACvG;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,GAAW;IAC/C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,+BAA+B;IAClG,MAAM,kBAAkB,GAAG,SAAS,CAAC,CAAC,iDAAiD;IACvF,MAAM,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,SAAS,GAAG,IAAA,wBAAQ,EAAC,cAAc,CAAC;SACvC,QAAQ,CAAC,OAAO,CAAC;SACjB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,+BAA+B;IAC3D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,iDAAiD;IACpF,MAAM,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,MAAM,gBAAgB,GAAG,MAAM,IAAA,qBAAY,EAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3G,aAAa,CAAC,OAAO,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;QAChC,MAAM,aAAa,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,YAAY,GAAW,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChE,gGAAgG;QAChG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACrC,MAAM,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;SACtD;IACH,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAEc,KAAK,UAAU,mBAAmB;IAC/C,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;IACjB,sBAAsB,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC;AALD,sCAKC","sourcesContent":["import { readJsonFile } from \"@nrwl/devkit\";\nimport { execSync } from \"child_process\";\nimport * as pacote from \"pacote\";\nimport * as semver from \"semver\";\n\nasync function VersionCheck(pkg: string, localVersion: string, range: string) {\n // localVersion >= major.minor.x\n if (!semver.gte(localVersion, range)) {\n throw new Error(`Package \"${pkg}\" outdated. Remote Version: ${range} Local version: ${localVersion}`);\n }\n return true;\n}\n\nasync function getLatestRemoteVersion(pkg: string) {\n const manifest = await pacote.manifest(pkg);\n return manifest.version;\n}\n\nasync function checkNodeVersion() {\n const NodeVersion = await process.version.replace(/\\r?\\n|\\r/, \"\"); // regex removes any linebreaks\n const managerNodeVersion = \"16.13.2\"; // Bump this when major or minor version changes.\n await VersionCheck(\"node\", NodeVersion, managerNodeVersion);\n}\n\nasync function checkNxVersion() {\n const nxVersion = execSync(\"nx --version\")\n .toString(\"utf-8\")\n .replace(/\\r?\\n|\\r/, \"\"); // regex removes any linebreaks\n const managerNxVersion = \"14.8.3\"; // Bump this when major or minor version changes.\n await VersionCheck(\"nx\", nxVersion, managerNxVersion);\n}\n\nasync function checkTrackunitPackages() {\n const packageJsonLocal = await readJsonFile(\"package.json\");\n const trackunitLibs = Object.keys(packageJsonLocal.dependencies).filter(lib => lib.includes(\"@trackunit\"));\n trackunitLibs.forEach(async lib => {\n const remoteVersion = await getLatestRemoteVersion(lib);\n const localVersion: string = packageJsonLocal.dependencies[lib];\n // If @trackunit dependencies are linked/added locally using \"file://\"., skip the version check.\n if (!localVersion.includes(\"file://\")) {\n await VersionCheck(lib, localVersion, remoteVersion);\n }\n });\n return true;\n}\n\nexport default async function checkPackageVersion() {\n checkNodeVersion();\n checkNxVersion();\n checkTrackunitPackages();\n return true;\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { IrisAppManifest } from "@trackunit/iris-app-api";
2
+ import * as webpack from "webpack";
3
+ import "webpack-dev-server";
4
+ export declare const getDefaultConfig: (mode: "production" | "development", nxRootDir: string, appDir: string, irisAppManifest: IrisAppManifest) => Promise<webpack.Configuration>;
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultConfig = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const iris_app_build_utilities_1 = require("@trackunit/iris-app-build-utilities");
6
+ const iris_app_webpack_plugin_1 = require("@trackunit/iris-app-webpack-plugin");
7
+ const path = tslib_1.__importStar(require("path"));
8
+ const webpack = tslib_1.__importStar(require("webpack"));
9
+ require("webpack-dev-server");
10
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
11
+ const CopyWebpackPlugin = require("copy-webpack-plugin");
12
+ const getDefaultConfig = async (mode, nxRootDir, appDir, irisAppManifest) => {
13
+ const relativeAppDir = appDir.split(nxRootDir)[1];
14
+ return {
15
+ mode: mode,
16
+ output: {
17
+ publicPath: "auto",
18
+ path: path.join(nxRootDir, "dist", relativeAppDir),
19
+ },
20
+ entry: path.resolve(__dirname, "src") + "/index.js",
21
+ devtool: false,
22
+ devServer: await (0, iris_app_build_utilities_1.getTileWebpackDevServer)(),
23
+ resolve: {
24
+ extensions: [".tsx", ".ts", ".jsx", ".js", ".json"],
25
+ alias: await (0, iris_app_build_utilities_1.getAliasesFromTsConfig)({ nxRootDir }),
26
+ },
27
+ module: {
28
+ rules: [
29
+ {
30
+ test: /\.m?js/,
31
+ type: "javascript/auto",
32
+ resolve: {
33
+ fullySpecified: false,
34
+ },
35
+ },
36
+ {
37
+ test: /\.svg$/,
38
+ use: ["@svgr/webpack", "url-loader"],
39
+ },
40
+ {
41
+ test: /\.(png|jpg|gif|woff|ico)$/,
42
+ exclude: /(node_modules)/,
43
+ type: "asset/resource",
44
+ },
45
+ {
46
+ test: /\.(png|jpe?g|gif|svg|eot|ttf|woff|woff2)$/i,
47
+ include: /(node_modules\/@okta)/,
48
+ type: "asset/resource",
49
+ },
50
+ {
51
+ test: /\.(css|s[ac]ss)$/i,
52
+ use: [
53
+ "style-loader",
54
+ "css-loader",
55
+ {
56
+ loader: "postcss-loader",
57
+ options: {
58
+ postcssOptions: {
59
+ plugins: {
60
+ "postcss-import": {},
61
+ "tailwindcss/nesting": {},
62
+ tailwindcss: {
63
+ config: path.resolve(appDir, "tailwind.config.js"),
64
+ },
65
+ autoprefixer: {},
66
+ },
67
+ },
68
+ },
69
+ },
70
+ ],
71
+ },
72
+ {
73
+ test: /\.json$/,
74
+ loader: "json-loader",
75
+ },
76
+ {
77
+ test: /\.(ts|tsx|js|jsx)$/,
78
+ exclude: /node_modules/,
79
+ use: {
80
+ loader: "babel-loader",
81
+ options: {
82
+ cacheDirectory: true,
83
+ babelrc: false,
84
+ presets: [
85
+ [
86
+ "@babel/preset-env",
87
+ {
88
+ useBuiltIns: "usage",
89
+ corejs: { version: 3, proposals: true },
90
+ },
91
+ ],
92
+ "@babel/preset-typescript",
93
+ ["@babel/preset-react", { runtime: "automatic" }],
94
+ ],
95
+ exclude: /node_modules/,
96
+ plugins: [
97
+ ["@babel/plugin-proposal-decorators", { legacy: true }],
98
+ ["@babel/plugin-proposal-class-properties", { loose: true }],
99
+ ["@babel/plugin-proposal-private-methods", { loose: true }],
100
+ ["@babel/plugin-proposal-private-property-in-object", { loose: true }],
101
+ [
102
+ "babel-plugin-styled-components",
103
+ {
104
+ ssr: false,
105
+ pure: true,
106
+ },
107
+ ],
108
+ ],
109
+ },
110
+ },
111
+ },
112
+ ],
113
+ },
114
+ plugins: [
115
+ new webpack.container.ModuleFederationPlugin({
116
+ name: irisAppManifest.moduleFederationName,
117
+ filename: "remoteEntry.js",
118
+ library: { type: "global", name: irisAppManifest.moduleFederationName },
119
+ remotes: {},
120
+ exposes: await (0, iris_app_build_utilities_1.getExposedExtensions)({
121
+ nxRootDir,
122
+ manifest: irisAppManifest,
123
+ }),
124
+ shared: await (0, iris_app_build_utilities_1.getSharedDependencies)({ manifest: irisAppManifest }),
125
+ }),
126
+ new iris_app_webpack_plugin_1.TrackunitIrisAppWebpackPlugin({
127
+ nxRootDir: nxRootDir,
128
+ appDir,
129
+ manifest: irisAppManifest,
130
+ }),
131
+ new CopyWebpackPlugin({
132
+ patterns: [
133
+ {
134
+ from: path.join(nxRootDir, relativeAppDir, "assets", "**", "*(.png|.jpg|.jpeg|.webp|.md)"),
135
+ to: path.join(nxRootDir, "dist"),
136
+ noErrorOnMissing: true,
137
+ },
138
+ ],
139
+ }),
140
+ ],
141
+ };
142
+ };
143
+ exports.getDefaultConfig = getDefaultConfig;
144
+ //# sourceMappingURL=defaultWebpackConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultWebpackConfig.js","sourceRoot":"","sources":["../../../../../../../libs/iris-app-sdk/iris-app/src/executors/utils/defaultWebpackConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import { IrisAppManifest } from \"@trackunit/iris-app-api\";\nimport {\n getAliasesFromTsConfig,\n getExposedExtensions,\n getSharedDependencies,\n getTileWebpackDevServer,\n} from \"@trackunit/iris-app-build-utilities\";\nimport { TrackunitIrisAppWebpackPlugin } from \"@trackunit/iris-app-webpack-plugin\";\nimport * as path from \"path\";\nimport * as webpack from \"webpack\";\nimport \"webpack-dev-server\";\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst CopyWebpackPlugin = require(\"copy-webpack-plugin\");\n\nexport const getDefaultConfig = async (\n mode: \"production\" | \"development\",\n nxRootDir: string,\n appDir: string,\n irisAppManifest: IrisAppManifest\n): Promise<webpack.Configuration> => {\n const relativeAppDir = appDir.split(nxRootDir)[1];\n return {\n mode: mode,\n output: {\n publicPath: \"auto\",\n path: path.join(nxRootDir, \"dist\", relativeAppDir),\n },\n\n entry: path.resolve(__dirname, \"src\") + \"/index.js\",\n devtool: false,\n devServer: await getTileWebpackDevServer(),\n resolve: {\n extensions: [\".tsx\", \".ts\", \".jsx\", \".js\", \".json\"],\n alias: await getAliasesFromTsConfig({ nxRootDir }),\n },\n module: {\n rules: [\n {\n test: /\\.m?js/,\n type: \"javascript/auto\",\n resolve: {\n fullySpecified: false,\n },\n },\n {\n test: /\\.svg$/,\n use: [\"@svgr/webpack\", \"url-loader\"],\n },\n {\n test: /\\.(png|jpg|gif|woff|ico)$/,\n exclude: /(node_modules)/,\n type: \"asset/resource\",\n },\n {\n test: /\\.(png|jpe?g|gif|svg|eot|ttf|woff|woff2)$/i,\n include: /(node_modules\\/@okta)/,\n type: \"asset/resource\",\n },\n {\n test: /\\.(css|s[ac]ss)$/i,\n use: [\n \"style-loader\",\n \"css-loader\",\n {\n loader: \"postcss-loader\",\n options: {\n postcssOptions: {\n plugins: {\n \"postcss-import\": {},\n \"tailwindcss/nesting\": {},\n tailwindcss: {\n config: path.resolve(appDir, \"tailwind.config.js\"),\n },\n autoprefixer: {},\n },\n },\n },\n },\n ],\n },\n {\n test: /\\.json$/,\n loader: \"json-loader\",\n },\n {\n test: /\\.(ts|tsx|js|jsx)$/,\n exclude: /node_modules/,\n use: {\n loader: \"babel-loader\",\n options: {\n cacheDirectory: true,\n babelrc: false,\n presets: [\n [\n \"@babel/preset-env\",\n {\n useBuiltIns: \"usage\",\n corejs: { version: 3, proposals: true },\n },\n ],\n \"@babel/preset-typescript\",\n [\"@babel/preset-react\", { runtime: \"automatic\" }],\n ],\n exclude: /node_modules/,\n plugins: [\n [\"@babel/plugin-proposal-decorators\", { legacy: true }],\n [\"@babel/plugin-proposal-class-properties\", { loose: true }],\n [\"@babel/plugin-proposal-private-methods\", { loose: true }],\n [\"@babel/plugin-proposal-private-property-in-object\", { loose: true }],\n [\n \"babel-plugin-styled-components\",\n\n {\n ssr: false,\n pure: true,\n },\n ],\n ],\n },\n },\n },\n ],\n },\n\n plugins: [\n new webpack.container.ModuleFederationPlugin({\n name: irisAppManifest.moduleFederationName,\n filename: \"remoteEntry.js\",\n library: { type: \"global\", name: irisAppManifest.moduleFederationName },\n remotes: {},\n exposes: await getExposedExtensions({\n nxRootDir,\n manifest: irisAppManifest,\n }),\n shared: await getSharedDependencies({ manifest: irisAppManifest }),\n }),\n new TrackunitIrisAppWebpackPlugin({\n nxRootDir: nxRootDir,\n appDir,\n manifest: irisAppManifest,\n }),\n new CopyWebpackPlugin({\n patterns: [\n {\n from: path.join(nxRootDir, relativeAppDir, \"assets\", \"**\", \"*(.png|.jpg|.jpeg|.webp|.md)\"),\n to: path.join(nxRootDir, \"dist\"),\n noErrorOnMissing: true,\n },\n ],\n }),\n ],\n };\n};\n"]}
@@ -0,0 +1 @@
1
+ // Empty ts file for webpack to be happy - we generate module federated js files instead
@@ -0,0 +1,3 @@
1
+ #<YOUR TITLE DESCRIPTION HERE>
2
+
3
+ <YOUR DESCRIPTION HERE>
@@ -0,0 +1,27 @@
1
+ import { IrisAppManifest } from '@trackunit/iris-app-api';
2
+
3
+ const nxPackageJson = require("../../package.json");
4
+ const packageJson = require("./package.json");
5
+
6
+ const IrisAppManifest: IrisAppManifest = {
7
+ specVersion: "1.0",
8
+ moduleFederationName: packageJson.name,
9
+ dependencies: nxPackageJson.dependencies || {},
10
+ devDependencies: nxPackageJson.devDependencies || {},
11
+
12
+ validDomains: [],
13
+
14
+ validForAccountIds: "ALL_ACCOUNTS",
15
+ activationMode: "CONTROLLED_VISIBILITY",
16
+
17
+ marketplace: {
18
+ name: "<%= projectName %> App",
19
+ description: "This <%= projectName %> app is used for <YOUR SUMMARY HERE>.",
20
+ fullDescriptionPath: "description.md",
21
+ allowForPackage: ['VIEW', 'COLLECT', 'INSIGHT'],
22
+ tags: [],
23
+ },
24
+ extensions: [],
25
+ };
26
+
27
+ export default IrisAppManifest;
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "@<%= npmScope %>/<%= projectName %>",
3
+ "version": "0.0.1",
4
+ }
@@ -0,0 +1,11 @@
1
+ const { getTailwindContentForApp } = require("@trackunit/iris-app-build-utilities");
2
+ const path = require("path");
3
+
4
+ module.exports = {
5
+ presets: [require("@trackunit/css-core/tailwind.base.js")],
6
+ content: getTailwindContentForApp({
7
+ nxRootDir: path.resolve(__dirname, "..", ".."),
8
+ app: "<%= projectName %>",
9
+ }),
10
+ plugins: [require("@trackunit/css-components")],
11
+ };
@@ -0,0 +1,21 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../dist/<%= projectName %>",
5
+ "types": ["node"]
6
+ },
7
+ "files": [
8
+ "../../node_modules/@nrwl/react/typings/cssmodule.d.ts",
9
+ "../../node_modules/@nrwl/react/typings/image.d.ts"
10
+ ],
11
+ "exclude": [
12
+ "test/**/*",
13
+ "**/*.spec.ts",
14
+ "**/*.spec.tsx",
15
+ "**/*.stories.ts",
16
+ "**/*.stories.js",
17
+ "**/*.stories.jsx",
18
+ "**/*.stories.tsx"
19
+ ],
20
+ "include": ["../../typings", "**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"]
21
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "jsx": "react-jsx",
5
+ "resolveJsonModule": true,
6
+ "module": "commonjs",
7
+ "noImplicitAny": true,
8
+ "removeComments": true,
9
+ "preserveConstEnums": true,
10
+ "esModuleInterop": true,
11
+ "sourceMap": true,
12
+ "declaration": true,
13
+ "moduleResolution": "node",
14
+ },
15
+ "files": [],
16
+ "include": ["../../typings"],
17
+ "references": [
18
+ {
19
+ "path": "./tsconfig.app.json"
20
+ }
21
+ ]
22
+ }
@@ -0,0 +1,5 @@
1
+ import { Configuration } from "webpack";
2
+
3
+ export default (configuration: Configuration) => {
4
+ return configuration;
5
+ };
@@ -0,0 +1,4 @@
1
+ import { Tree } from "@nrwl/devkit";
2
+ import { IrisAppGeneratorSchema } from "./schema";
3
+ export declare const IrisAppGenerator: (tree: Tree, options: IrisAppGeneratorSchema) => Promise<() => void>;
4
+ export default IrisAppGenerator;
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IrisAppGenerator = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nrwl/devkit");
6
+ const pacote = tslib_1.__importStar(require("pacote"));
7
+ const path = tslib_1.__importStar(require("path"));
8
+ function normalizeOptions(tree, options) {
9
+ const name = (0, devkit_1.names)(options.name).fileName;
10
+ const projectDirectory = name;
11
+ const projectName = projectDirectory.replace(new RegExp("/", "g"), "_");
12
+ const npmScope = (0, devkit_1.getWorkspaceLayout)(tree).npmScope;
13
+ const projectRoot = `${(0, devkit_1.getWorkspaceLayout)(tree).appsDir}/${projectDirectory}`;
14
+ return {
15
+ ...options,
16
+ projectName,
17
+ projectRoot,
18
+ projectDirectory,
19
+ npmScope,
20
+ };
21
+ }
22
+ function addFiles(tree, options) {
23
+ const templateOptions = {
24
+ ...options,
25
+ ...(0, devkit_1.names)(options.name),
26
+ offsetFromRoot: (0, devkit_1.offsetFromRoot)(options.projectRoot),
27
+ template: "",
28
+ };
29
+ (0, devkit_1.generateFiles)(tree, path.join(__dirname, "files"), options.projectRoot, templateOptions);
30
+ }
31
+ const IrisAppGenerator = async function (tree, options) {
32
+ const normalizedOptions = normalizeOptions(tree, options);
33
+ const packageJsonFromNpm = await pacote.manifest("@trackunit/iris-app");
34
+ const packageJsonLocally = (0, devkit_1.readJsonFile)(path.join(__dirname, "..", "..", "..", "package.json"));
35
+ if (options.updatePackageJson) {
36
+ if (packageJsonFromNpm.version !== packageJsonLocally.version) {
37
+ throw new Error(`This version of the iris-app package does not match the version of the iris-app package from NPM JS. Please update using: npm i @trackunit/iris-app@${packageJsonFromNpm.version}`);
38
+ }
39
+ const reactComponentsPackageJsonFromNpm = pacote.manifest("@trackunit/react-components");
40
+ const reactCoreContextsPackageJsonFromNpm = pacote.manifest("@trackunit/react-core-contexts");
41
+ const cssComponentsPackageJsonFromNpm = pacote.manifest("@trackunit/css-components");
42
+ const irisAppApiPackageJsonFromNpm = pacote.manifest("@trackunit/iris-app-api");
43
+ const irisAppBuildUtilitiesPackageJsonFromNpm = pacote.manifest("@trackunit/iris-app-build-utilities");
44
+ const irisAppWebpackPluginPackageJsonFromNpm = pacote.manifest("@trackunit/iris-app-webpack-plugin");
45
+ (0, devkit_1.addDependenciesToPackageJson)(tree, {
46
+ tslib: "^2.3.1",
47
+ "@trackunit/react-components": (await reactComponentsPackageJsonFromNpm).version,
48
+ "@trackunit/react-core-contexts": (await reactCoreContextsPackageJsonFromNpm).version,
49
+ "@trackunit/css-components": (await cssComponentsPackageJsonFromNpm).version,
50
+ }, {
51
+ "@trackunit/iris-app-api": (await irisAppApiPackageJsonFromNpm).version,
52
+ "@trackunit/iris-app-build-utilities": (await irisAppBuildUtilitiesPackageJsonFromNpm).version,
53
+ "@trackunit/iris-app-webpack-plugin": (await irisAppWebpackPluginPackageJsonFromNpm).version,
54
+ "@nrwl/react": "^14.5.6",
55
+ "@nrwl/workspace": "^14.5.6",
56
+ "@nrwl/devkit": "^14.5.6",
57
+ "@babel/preset-env": "^7.0.0",
58
+ eslint: "^8.0.0",
59
+ "ts-morph": "^13.0.2",
60
+ "@babel/core": "^7.17.5",
61
+ "babel-loader": "^8.2.3",
62
+ "postcss-js": "^4.0.0",
63
+ "postcss-loader": "^6.2.1",
64
+ "postcss-nested": "^5.0.6",
65
+ postcss: "^8.4.7",
66
+ "style-loader": "^3.3.1",
67
+ "json-loader": "^0.5.7",
68
+ autoprefixer: "^10.4.2",
69
+ "css-loader": "^6.6.0",
70
+ webpack: "^5.65.0",
71
+ tailwindcss: "^3.0.23",
72
+ "ts-node": "^10.4.0",
73
+ "webpack-dev-server": "4.7.3",
74
+ "webpack-cli": "^4.9.1",
75
+ });
76
+ }
77
+ (0, devkit_1.addProjectConfiguration)(tree, normalizedOptions.projectName, {
78
+ root: normalizedOptions.projectRoot,
79
+ projectType: "application",
80
+ sourceRoot: `${normalizedOptions.projectRoot}/src`,
81
+ targets: {
82
+ build: {
83
+ executor: "@trackunit/iris-app:build",
84
+ options: {
85
+ webpackConfig: `${normalizedOptions.projectRoot}/webpack.config.ts`,
86
+ outputPath: `dist/${normalizedOptions.projectRoot}`,
87
+ },
88
+ outputs: ["{options.outputPath}"],
89
+ },
90
+ serve: {
91
+ executor: "@trackunit/iris-app:serve",
92
+ options: {
93
+ webpackConfig: `${normalizedOptions.projectRoot}/webpack.config.ts`,
94
+ },
95
+ outputs: ["{options.outputPath}"],
96
+ },
97
+ publishApp: {
98
+ executor: "@trackunit/iris-app:publish",
99
+ options: {
100
+ inputPath: `dist/${normalizedOptions.projectRoot}`,
101
+ },
102
+ dependsOn: [
103
+ {
104
+ target: "build",
105
+ projects: "self",
106
+ },
107
+ ],
108
+ outputs: ["dist/" + normalizedOptions.projectRoot],
109
+ },
110
+ },
111
+ });
112
+ addFiles(tree, normalizedOptions);
113
+ await (0, devkit_1.formatFiles)(tree);
114
+ return () => {
115
+ (0, devkit_1.installPackagesTask)(tree, true);
116
+ };
117
+ };
118
+ exports.IrisAppGenerator = IrisAppGenerator;
119
+ exports.default = exports.IrisAppGenerator;
120
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../libs/iris-app-sdk/iris-app/src/generators/create/generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n addDependenciesToPackageJson,\n addProjectConfiguration,\n formatFiles,\n generateFiles,\n getWorkspaceLayout,\n installPackagesTask,\n names,\n offsetFromRoot,\n readJsonFile,\n Tree,\n} from \"@nrwl/devkit\";\nimport * as pacote from \"pacote\";\nimport * as path from \"path\";\nimport { IrisAppGeneratorSchema } from \"./schema\";\n\ninterface NormalizedSchema extends IrisAppGeneratorSchema {\n projectName: string;\n projectRoot: string;\n projectDirectory: string;\n npmScope: string;\n}\n\nfunction normalizeOptions(tree: Tree, options: IrisAppGeneratorSchema): NormalizedSchema {\n const name = names(options.name).fileName;\n const projectDirectory = name;\n const projectName = projectDirectory.replace(new RegExp(\"/\", \"g\"), \"_\");\n const npmScope = getWorkspaceLayout(tree).npmScope;\n const projectRoot = `${getWorkspaceLayout(tree).appsDir}/${projectDirectory}`;\n return {\n ...options,\n projectName,\n projectRoot,\n projectDirectory,\n npmScope,\n };\n}\n\nfunction addFiles(tree: Tree, options: NormalizedSchema) {\n const templateOptions = {\n ...options,\n ...names(options.name),\n offsetFromRoot: offsetFromRoot(options.projectRoot),\n template: \"\",\n };\n generateFiles(tree, path.join(__dirname, \"files\"), options.projectRoot, templateOptions);\n}\n\nexport const IrisAppGenerator = async function (tree: Tree, options: IrisAppGeneratorSchema) {\n const normalizedOptions = normalizeOptions(tree, options);\n const packageJsonFromNpm = await pacote.manifest(\"@trackunit/iris-app\");\n\n const packageJsonLocally = readJsonFile(path.join(__dirname, \"..\", \"..\", \"..\", \"package.json\"));\n\n if (options.updatePackageJson) {\n if (packageJsonFromNpm.version !== packageJsonLocally.version) {\n throw new Error(\n `This version of the iris-app package does not match the version of the iris-app package from NPM JS. Please update using: npm i @trackunit/iris-app@${packageJsonFromNpm.version}`\n );\n }\n\n const reactComponentsPackageJsonFromNpm = pacote.manifest(\"@trackunit/react-components\");\n const reactCoreContextsPackageJsonFromNpm = pacote.manifest(\"@trackunit/react-core-contexts\");\n const cssComponentsPackageJsonFromNpm = pacote.manifest(\"@trackunit/css-components\");\n const irisAppApiPackageJsonFromNpm = pacote.manifest(\"@trackunit/iris-app-api\");\n const irisAppBuildUtilitiesPackageJsonFromNpm = pacote.manifest(\"@trackunit/iris-app-build-utilities\");\n const irisAppWebpackPluginPackageJsonFromNpm = pacote.manifest(\"@trackunit/iris-app-webpack-plugin\");\n\n addDependenciesToPackageJson(\n tree,\n {\n tslib: \"^2.3.1\",\n \"@trackunit/react-components\": (await reactComponentsPackageJsonFromNpm).version,\n \"@trackunit/react-core-contexts\": (await reactCoreContextsPackageJsonFromNpm).version,\n \"@trackunit/css-components\": (await cssComponentsPackageJsonFromNpm).version,\n },\n {\n \"@trackunit/iris-app-api\": (await irisAppApiPackageJsonFromNpm).version,\n \"@trackunit/iris-app-build-utilities\": (await irisAppBuildUtilitiesPackageJsonFromNpm).version,\n \"@trackunit/iris-app-webpack-plugin\": (await irisAppWebpackPluginPackageJsonFromNpm).version,\n \"@nrwl/react\": \"^14.5.6\",\n \"@nrwl/workspace\": \"^14.5.6\",\n \"@nrwl/devkit\": \"^14.5.6\",\n \"@babel/preset-env\": \"^7.0.0\",\n eslint: \"^8.0.0\",\n \"ts-morph\": \"^13.0.2\",\n \"@babel/core\": \"^7.17.5\",\n \"babel-loader\": \"^8.2.3\",\n \"postcss-js\": \"^4.0.0\",\n \"postcss-loader\": \"^6.2.1\",\n \"postcss-nested\": \"^5.0.6\",\n postcss: \"^8.4.7\",\n \"style-loader\": \"^3.3.1\",\n \"json-loader\": \"^0.5.7\",\n autoprefixer: \"^10.4.2\",\n \"css-loader\": \"^6.6.0\",\n webpack: \"^5.65.0\",\n tailwindcss: \"^3.0.23\",\n \"ts-node\": \"^10.4.0\",\n \"webpack-dev-server\": \"4.7.3\",\n \"webpack-cli\": \"^4.9.1\",\n }\n );\n }\n addProjectConfiguration(tree, normalizedOptions.projectName, {\n root: normalizedOptions.projectRoot,\n projectType: \"application\",\n sourceRoot: `${normalizedOptions.projectRoot}/src`,\n targets: {\n build: {\n executor: \"@trackunit/iris-app:build\",\n options: {\n webpackConfig: `${normalizedOptions.projectRoot}/webpack.config.ts`,\n outputPath: `dist/${normalizedOptions.projectRoot}`,\n },\n outputs: [\"{options.outputPath}\"],\n },\n serve: {\n executor: \"@trackunit/iris-app:serve\",\n options: {\n webpackConfig: `${normalizedOptions.projectRoot}/webpack.config.ts`,\n },\n outputs: [\"{options.outputPath}\"],\n },\n publishApp: {\n executor: \"@trackunit/iris-app:publish\",\n options: {\n inputPath: `dist/${normalizedOptions.projectRoot}`,\n },\n dependsOn: [\n {\n target: \"build\",\n projects: \"self\",\n },\n ],\n outputs: [\"dist/\" + normalizedOptions.projectRoot],\n },\n },\n });\n addFiles(tree, normalizedOptions);\n\n await formatFiles(tree);\n return () => {\n installPackagesTask(tree, true);\n };\n};\n\nexport default IrisAppGenerator;\n"]}
@@ -0,0 +1,4 @@
1
+ export interface IrisAppGeneratorSchema {
2
+ name: string;
3
+ updatePackageJson?: boolean;
4
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "cli": "nx",
4
+ "$id": "AppTile",
5
+ "title": "",
6
+ "type": "object",
7
+ "properties": {
8
+ "name": {
9
+ "type": "string",
10
+ "description": "",
11
+ "$default": {
12
+ "$source": "argv",
13
+ "index": 0
14
+ },
15
+ "x-prompt": "What name would you like to use for this app?"
16
+ },
17
+ "updatePackageJson": {
18
+ "type": "boolean",
19
+ "description": "If the package.json should be updated with required dependencies",
20
+ "alias": "u",
21
+ "default": true
22
+ }
23
+ },
24
+ "required": ["name"]
25
+ }
@@ -0,0 +1,13 @@
1
+ import { AdminExtensionManifest } from '@trackunit/iris-app-api';
2
+
3
+ const IrisAppManifest: AdminExtensionManifest = {
4
+ id: "<%= projectName %>",
5
+ type: "ADMIN_EXTENSION",
6
+ sourceRoot: "<%= sourceRoot %>",
7
+
8
+ menuItem: {
9
+ name: "<%= projectName %>",
10
+ }
11
+ };
12
+
13
+ export default IrisAppManifest;
@@ -0,0 +1,13 @@
1
+ import { AssetHomeExtensionManifest } from '@trackunit/iris-app-api';
2
+
3
+ const IrisAppManifest: AssetHomeExtensionManifest = {
4
+ id: "<%= projectName %>",
5
+ type: "ASSET_HOME_EXTENSION",
6
+ sourceRoot: "<%= sourceRoot %>",
7
+
8
+ menuItem: {
9
+ name: "<%= projectName %>"
10
+ }
11
+ };
12
+
13
+ export default IrisAppManifest;
@@ -0,0 +1,14 @@
1
+ import { FleetExtensionManifest } from '@trackunit/iris-app-api';
2
+
3
+ const IrisAppManifest: FleetExtensionManifest = {
4
+ id: "<%= projectName %>",
5
+ type: "FLEET_EXTENSION",
6
+ sourceRoot: "<%= sourceRoot %>",
7
+
8
+ menuItem: {
9
+ name: "<%= projectName %>",
10
+ icon: "QuestionMarkCircleIcon"
11
+ }
12
+ };
13
+
14
+ export default IrisAppManifest;
@@ -0,0 +1,10 @@
1
+ import { ReportExtensionManifest } from '@trackunit/iris-app-api';
2
+
3
+ const IrisAppManifest: ReportExtensionManifest = {
4
+ id: "<%= projectName %>",
5
+ type: "REPORT_EXTENSION",
6
+ sourceRoot: "<%= sourceRoot %>",
7
+ main: "<ADD_YOUR_PATH_HERE>"
8
+ };
9
+
10
+ export default IrisAppManifest;
@@ -0,0 +1,9 @@
1
+ import { render, screen } from "@testing-library/react";
2
+ import { App } from "./app";
3
+
4
+ describe("App", () => {
5
+ it("Should render", async () => {
6
+ render(<App />);
7
+ expect(await screen.getByTestId("app")).toBeDefined();
8
+ });
9
+ });