@trackunit/iris-app 1.7.121 → 1.7.124
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +16 -0
- package/generators.json +5 -0
- package/package.json +4 -4
- package/src/generators/ai-agent-sync/README.md +37 -0
- package/src/generators/ai-agent-sync/generator.d.ts +8 -0
- package/src/generators/ai-agent-sync/generator.js +83 -0
- package/src/generators/ai-agent-sync/generator.js.map +1 -0
- package/src/generators/ai-agent-sync/schema.d.ts +4 -0
- package/src/generators/ai-agent-sync/schema.json +17 -0
- package/src/generators/preset/generator.js +8 -0
- package/src/generators/preset/generator.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
## 1.7.124 (2025-12-04)
|
|
2
|
+
|
|
3
|
+
### 🧱 Updated Dependencies
|
|
4
|
+
|
|
5
|
+
- Updated iris-app-build-utilities to 1.7.119
|
|
6
|
+
- Updated iris-app-webpack-plugin to 1.7.120
|
|
7
|
+
- Updated iris-app-api to 1.10.6
|
|
8
|
+
- Updated react-test-setup to 1.4.113
|
|
9
|
+
- Updated shared-utils to 1.9.113
|
|
10
|
+
|
|
11
|
+
## 1.7.123 (2025-12-04)
|
|
12
|
+
|
|
13
|
+
### 🧱 Updated Dependencies
|
|
14
|
+
|
|
15
|
+
- Updated iris-app-build-utilities to 1.7.118
|
|
16
|
+
- Updated iris-app-webpack-plugin to 1.7.119
|
|
17
|
+
- Updated iris-app-api to 1.10.5
|
|
18
|
+
- Updated react-test-setup to 1.4.112
|
|
19
|
+
- Updated shared-utils to 1.9.112
|
|
20
|
+
|
|
21
|
+
## 1.7.122 (2025-12-04)
|
|
22
|
+
|
|
23
|
+
### 🧱 Updated Dependencies
|
|
24
|
+
|
|
25
|
+
- Updated iris-app-build-utilities to 1.7.117
|
|
26
|
+
- Updated iris-app-webpack-plugin to 1.7.118
|
|
27
|
+
- Updated iris-app-api to 1.10.4
|
|
28
|
+
- Updated react-test-setup to 1.4.111
|
|
29
|
+
- Updated shared-utils to 1.9.111
|
|
30
|
+
|
|
1
31
|
## 1.7.121 (2025-12-03)
|
|
2
32
|
|
|
3
33
|
### 🧱 Updated Dependencies
|
package/README.md
CHANGED
|
@@ -10,6 +10,22 @@ For more info and a full guide on Iris App SDK Development, please visit our [De
|
|
|
10
10
|
## Getting started
|
|
11
11
|
|
|
12
12
|
Run through the easy getting started guide here: [Getting Started](https://developers.trackunit.com/docs/getting-started)
|
|
13
|
+
|
|
14
|
+
## Testing Local Changes
|
|
15
|
+
|
|
16
|
+
To test changes to the SDK generators locally, you can verify them in a full, temporary workspace environment.
|
|
17
|
+
|
|
18
|
+
**Command:**
|
|
19
|
+
`yarn run integration-test:local`
|
|
20
|
+
|
|
21
|
+
**What it does:**
|
|
22
|
+
- Generates a temporary workspace containing a full Iris app setup.
|
|
23
|
+
- Allows you to open this temporary workspace in your IDE.
|
|
24
|
+
- Enables you to verify that your changes to generators or other SDK components work as expected in a real environment.
|
|
25
|
+
|
|
26
|
+
**How to open:**
|
|
27
|
+
Look for the phrase `Successfully created the workspace:` in the console output, then command-click the path to open the workspace.
|
|
28
|
+
|
|
13
29
|
## Trackunit
|
|
14
30
|
This package was developed by Trackunit ApS.
|
|
15
31
|
Trackunit is the leading SaaS-based IoT solution for the construction industry, offering an ecosystem of hardware, fleet management software & telematics.
|
package/generators.json
CHANGED
|
@@ -18,6 +18,11 @@
|
|
|
18
18
|
"schema": "./src/generators/preset/schema.json",
|
|
19
19
|
"description": "preset generator",
|
|
20
20
|
"x-use-standalone-layout": true
|
|
21
|
+
},
|
|
22
|
+
"ai-agent-sync": {
|
|
23
|
+
"factory": "./src/generators/ai-agent-sync/generator",
|
|
24
|
+
"schema": "./src/generators/ai-agent-sync/schema.json",
|
|
25
|
+
"description": "Syncs Cursor rules and AI agent configuration files (requires SDK to be at latest version)"
|
|
21
26
|
}
|
|
22
27
|
}
|
|
23
28
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trackunit/iris-app",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.124",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"generators": "./generators.json",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"@npmcli/arborist": "^7.3.1",
|
|
33
33
|
"webpack-bundle-analyzer": "^4.8.0",
|
|
34
34
|
"win-ca": "^3.5.1",
|
|
35
|
-
"@trackunit/shared-utils": "1.9.
|
|
36
|
-
"@trackunit/iris-app-api": "1.10.
|
|
37
|
-
"@trackunit/iris-app-webpack-plugin": "1.7.
|
|
35
|
+
"@trackunit/shared-utils": "1.9.113",
|
|
36
|
+
"@trackunit/iris-app-api": "1.10.6",
|
|
37
|
+
"@trackunit/iris-app-webpack-plugin": "1.7.120",
|
|
38
38
|
"tslib": "^2.6.2"
|
|
39
39
|
},
|
|
40
40
|
"types": "./src/index.d.ts",
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# AI Agent Sync Generator
|
|
2
|
+
|
|
3
|
+
Syncs Cursor rules and AI agent configuration files to the latest version. Ensures the SDK is at the latest version before applying updates.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
nx g @trackunit/iris-app:ai-agent-sync
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## What it syncs
|
|
12
|
+
|
|
13
|
+
- `.cursor/rules/` - Cursor AI rules for the IrisX App SDK
|
|
14
|
+
|
|
15
|
+
## Flow
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
flowchart TD
|
|
19
|
+
A[Run ai-agent-sync generator] --> B[Ensure update:trackunit script exists]
|
|
20
|
+
B --> C{Skip version check?}
|
|
21
|
+
C -->|Yes| G[Sync AI agent files]
|
|
22
|
+
C -->|No| D[Get installed SDK version]
|
|
23
|
+
D --> E[Fetch latest SDK version from npm]
|
|
24
|
+
E --> F{SDK up to date?}
|
|
25
|
+
F -->|Yes| G
|
|
26
|
+
F -->|No| H[❌ Error: SDK outdated]
|
|
27
|
+
H --> I[Show commands to update]
|
|
28
|
+
I --> J["1. {pm} run update:trackunit<br>2. {pm} install<br>3. Run generator again"]
|
|
29
|
+
G --> K[✅ Done]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Options
|
|
33
|
+
|
|
34
|
+
| Option | Type | Default | Description |
|
|
35
|
+
|--------|------|---------|-------------|
|
|
36
|
+
| `skipVersionCheck` | boolean | false | Skip SDK version check (not recommended) |
|
|
37
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Tree } from "@nx/devkit";
|
|
2
|
+
import { AiAgentSyncGeneratorSchema } from "./schema";
|
|
3
|
+
/**
|
|
4
|
+
* Syncs Cursor rules and AI agent configuration files.
|
|
5
|
+
* Requires the SDK to be at the latest version before running.
|
|
6
|
+
*/
|
|
7
|
+
export declare function aiAgentSyncGenerator(tree: Tree, options: AiAgentSyncGeneratorSchema): Promise<void>;
|
|
8
|
+
export default aiAgentSyncGenerator;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.aiAgentSyncGenerator = aiAgentSyncGenerator;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const devkit_1 = require("@nx/devkit");
|
|
6
|
+
const devkit_exports_1 = require("nx/src/devkit-exports");
|
|
7
|
+
const pacote = tslib_1.__importStar(require("pacote"));
|
|
8
|
+
const path = tslib_1.__importStar(require("path"));
|
|
9
|
+
const semver = tslib_1.__importStar(require("semver"));
|
|
10
|
+
const IRIS_APP_PACKAGE = "@trackunit/iris-app";
|
|
11
|
+
const UPDATE_SCRIPT_NAME = "update:trackunit";
|
|
12
|
+
const UPDATE_SCRIPT_CMD = 'npx npm-check-updates "/@trackunit/" -u';
|
|
13
|
+
function getStringValue(obj, key) {
|
|
14
|
+
if (typeof obj === "object" && obj !== null && key in obj) {
|
|
15
|
+
const value = obj[key];
|
|
16
|
+
return typeof value === "string" ? value : undefined;
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Gets the installed version of @trackunit/iris-app from workspace package.json
|
|
22
|
+
*/
|
|
23
|
+
function getInstalledSdkVersion(tree) {
|
|
24
|
+
const pkgJson = JSON.parse(tree.read("package.json", "utf-8") ?? "{}");
|
|
25
|
+
if (typeof pkgJson !== "object" || pkgJson === null) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
const pkg = pkgJson;
|
|
29
|
+
return getStringValue(pkg.dependencies, IRIS_APP_PACKAGE) ?? getStringValue(pkg.devDependencies, IRIS_APP_PACKAGE);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Fetches the latest version of @trackunit/iris-app from npm
|
|
33
|
+
*/
|
|
34
|
+
async function getLatestSdkVersion() {
|
|
35
|
+
const manifest = await pacote.manifest(IRIS_APP_PACKAGE);
|
|
36
|
+
return manifest.version;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Ensures the update:trackunit script exists in package.json
|
|
40
|
+
*/
|
|
41
|
+
function ensureUpdateScript(tree) {
|
|
42
|
+
(0, devkit_1.updateJson)(tree, "package.json", pkgJson => {
|
|
43
|
+
if (!pkgJson.scripts) {
|
|
44
|
+
pkgJson.scripts = {};
|
|
45
|
+
}
|
|
46
|
+
if (!pkgJson.scripts[UPDATE_SCRIPT_NAME]) {
|
|
47
|
+
pkgJson.scripts[UPDATE_SCRIPT_NAME] = UPDATE_SCRIPT_CMD;
|
|
48
|
+
}
|
|
49
|
+
return pkgJson;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Syncs Cursor rules and AI agent configuration files.
|
|
54
|
+
* Requires the SDK to be at the latest version before running.
|
|
55
|
+
*/
|
|
56
|
+
async function aiAgentSyncGenerator(tree, options) {
|
|
57
|
+
// Always ensure the update script exists
|
|
58
|
+
ensureUpdateScript(tree);
|
|
59
|
+
// Check SDK version unless skipped
|
|
60
|
+
if (!options.skipVersionCheck) {
|
|
61
|
+
const installedVersion = getInstalledSdkVersion(tree);
|
|
62
|
+
const latestVersion = await getLatestSdkVersion();
|
|
63
|
+
if (!installedVersion) {
|
|
64
|
+
throw new Error(`${IRIS_APP_PACKAGE} not found in package.json. Is this an Iris App SDK workspace?`);
|
|
65
|
+
}
|
|
66
|
+
const installed = semver.minVersion(installedVersion);
|
|
67
|
+
if (!installed || semver.lt(installed, latestVersion)) {
|
|
68
|
+
const pm = (0, devkit_exports_1.detectPackageManager)();
|
|
69
|
+
const pmCmd = (0, devkit_exports_1.getPackageManagerCommand)(pm);
|
|
70
|
+
throw new Error(`${IRIS_APP_PACKAGE} is outdated (installed: ${installedVersion}, latest: ${latestVersion}).\n\n` +
|
|
71
|
+
`Run the following commands first:\n` +
|
|
72
|
+
` ${pmCmd.run(UPDATE_SCRIPT_NAME)}\n` +
|
|
73
|
+
` ${pmCmd.install}\n\n` +
|
|
74
|
+
`Then run this generator again.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Copy Cursor rules and AI agent configuration
|
|
78
|
+
const templatePath = path.join(__dirname, "../preset/files/.cursor");
|
|
79
|
+
(0, devkit_1.generateFiles)(tree, templatePath, ".cursor", {});
|
|
80
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
81
|
+
}
|
|
82
|
+
exports.default = aiAgentSyncGenerator;
|
|
83
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../libs/iris-app-sdk/iris-app/src/generators/ai-agent-sync/generator.ts"],"names":[],"mappings":";;AAgEA,oDAiCC;;AAjGD,uCAA0E;AAC1E,0DAAuF;AACvF,uDAAiC;AACjC,mDAA6B;AAC7B,uDAAiC;AAGjC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAC/C,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAC9C,MAAM,iBAAiB,GAAG,yCAAyC,CAAC;AAQpE,SAAS,cAAc,CAAC,GAAY,EAAE,GAAW;IAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAC;QACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAU;IACxC,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAChF,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,OAAkC,CAAC;IAC/C,OAAO,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AACrH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB;IAChC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACzD,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAU;IACpC,IAAA,mBAAU,EAA2B,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE;QACnE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,iBAAiB,CAAC;QAC1D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,oBAAoB,CAAC,IAAU,EAAE,OAAmC;IACxF,yCAAyC;IACzC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,mCAAmC;IACnC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAElD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,GAAG,gBAAgB,gEAAgE,CAAC,CAAC;QACvG,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;YACtD,MAAM,EAAE,GAAG,IAAA,qCAAoB,GAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAA,yCAAwB,EAAC,EAAE,CAAC,CAAC;YAE3C,MAAM,IAAI,KAAK,CACb,GAAG,gBAAgB,4BAA4B,gBAAgB,aAAa,aAAa,QAAQ;gBAC/F,qCAAqC;gBACrC,KAAK,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI;gBACtC,KAAK,KAAK,CAAC,OAAO,MAAM;gBACxB,gCAAgC,CACnC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IACrE,IAAA,sBAAa,EAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAEjD,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,kBAAe,oBAAoB,CAAC","sourcesContent":["import { Tree, formatFiles, generateFiles, updateJson } from \"@nx/devkit\";\nimport { detectPackageManager, getPackageManagerCommand } from \"nx/src/devkit-exports\";\nimport * as pacote from \"pacote\";\nimport * as path from \"path\";\nimport * as semver from \"semver\";\nimport { AiAgentSyncGeneratorSchema } from \"./schema\";\n\nconst IRIS_APP_PACKAGE = \"@trackunit/iris-app\";\nconst UPDATE_SCRIPT_NAME = \"update:trackunit\";\nconst UPDATE_SCRIPT_CMD = 'npx npm-check-updates \"/@trackunit/\" -u';\n\ntype PackageJson = {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n scripts?: Record<string, string>;\n};\n\nfunction getStringValue(obj: unknown, key: string): string | undefined {\n if (typeof obj === \"object\" && obj !== null && key in obj) {\n const value = (obj as Record<string, unknown>)[key];\n return typeof value === \"string\" ? value : undefined;\n }\n return undefined;\n}\n\n/**\n * Gets the installed version of @trackunit/iris-app from workspace package.json\n */\nfunction getInstalledSdkVersion(tree: Tree): string | undefined {\n const pkgJson: unknown = JSON.parse(tree.read(\"package.json\", \"utf-8\") ?? \"{}\");\n if (typeof pkgJson !== \"object\" || pkgJson === null) {\n return undefined;\n }\n const pkg = pkgJson as Record<string, unknown>;\n return getStringValue(pkg.dependencies, IRIS_APP_PACKAGE) ?? getStringValue(pkg.devDependencies, IRIS_APP_PACKAGE);\n}\n\n/**\n * Fetches the latest version of @trackunit/iris-app from npm\n */\nasync function getLatestSdkVersion(): Promise<string> {\n const manifest = await pacote.manifest(IRIS_APP_PACKAGE);\n return manifest.version;\n}\n\n/**\n * Ensures the update:trackunit script exists in package.json\n */\nfunction ensureUpdateScript(tree: Tree): void {\n updateJson<PackageJson, PackageJson>(tree, \"package.json\", pkgJson => {\n if (!pkgJson.scripts) {\n pkgJson.scripts = {};\n }\n if (!pkgJson.scripts[UPDATE_SCRIPT_NAME]) {\n pkgJson.scripts[UPDATE_SCRIPT_NAME] = UPDATE_SCRIPT_CMD;\n }\n return pkgJson;\n });\n}\n\n/**\n * Syncs Cursor rules and AI agent configuration files.\n * Requires the SDK to be at the latest version before running.\n */\nexport async function aiAgentSyncGenerator(tree: Tree, options: AiAgentSyncGeneratorSchema): Promise<void> {\n // Always ensure the update script exists\n ensureUpdateScript(tree);\n\n // Check SDK version unless skipped\n if (!options.skipVersionCheck) {\n const installedVersion = getInstalledSdkVersion(tree);\n const latestVersion = await getLatestSdkVersion();\n\n if (!installedVersion) {\n throw new Error(`${IRIS_APP_PACKAGE} not found in package.json. Is this an Iris App SDK workspace?`);\n }\n\n const installed = semver.minVersion(installedVersion);\n if (!installed || semver.lt(installed, latestVersion)) {\n const pm = detectPackageManager();\n const pmCmd = getPackageManagerCommand(pm);\n\n throw new Error(\n `${IRIS_APP_PACKAGE} is outdated (installed: ${installedVersion}, latest: ${latestVersion}).\\n\\n` +\n `Run the following commands first:\\n` +\n ` ${pmCmd.run(UPDATE_SCRIPT_NAME)}\\n` +\n ` ${pmCmd.install}\\n\\n` +\n `Then run this generator again.`\n );\n }\n }\n\n // Copy Cursor rules and AI agent configuration\n const templatePath = path.join(__dirname, \"../preset/files/.cursor\");\n generateFiles(tree, templatePath, \".cursor\", {});\n\n await formatFiles(tree);\n}\n\nexport default aiAgentSyncGenerator;\n\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"cli": "nx",
|
|
4
|
+
"$id": "AiAgentSync",
|
|
5
|
+
"title": "Sync AI Agent Configuration",
|
|
6
|
+
"description": "Syncs Cursor rules and AI agent configuration files (requires SDK to be at latest version)",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"properties": {
|
|
9
|
+
"skipVersionCheck": {
|
|
10
|
+
"type": "boolean",
|
|
11
|
+
"description": "Skip checking if SDK is at latest version (not recommended)",
|
|
12
|
+
"default": false
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"required": []
|
|
16
|
+
}
|
|
17
|
+
|
|
@@ -37,6 +37,14 @@ async function presetGenerator(tree, options) {
|
|
|
37
37
|
react: "19.0.0",
|
|
38
38
|
"react-dom": "19.0.0",
|
|
39
39
|
}, {});
|
|
40
|
+
// Add update script for @trackunit packages
|
|
41
|
+
(0, devkit_1.updateJson)(tree, "package.json", (pkgJson) => {
|
|
42
|
+
if (!pkgJson.scripts) {
|
|
43
|
+
pkgJson.scripts = {};
|
|
44
|
+
}
|
|
45
|
+
pkgJson.scripts["update:trackunit"] = 'npx npm-check-updates "/@trackunit/" -u';
|
|
46
|
+
return pkgJson;
|
|
47
|
+
});
|
|
40
48
|
// This react generator adds react 19 and react-dom 19 to the package.json if we don't add react 18 above.
|
|
41
49
|
const initReact = await (0, react_1.reactInitGenerator)(tree, {});
|
|
42
50
|
return (0, devkit_1.runTasksInSerial)(jsInitTask, initReact);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../libs/iris-app-sdk/iris-app/src/generators/preset/generator.ts"],"names":[],"mappings":";;AAmBA,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../libs/iris-app-sdk/iris-app/src/generators/preset/generator.ts"],"names":[],"mappings":";;AAmBA,0CA6DC;;AAhFD,uCAQoB;AACpB,+BAA0D;AAC1D,qCAA+C;AAC/C,wDAAwB;AAGxB;;;;GAIG;AACI,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,OAA8B;IAC9E,kBAAkB;IAClB,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,CACR,gBAAgB,EAChB,4LAA4L,CAC7L,CAAC;IACF,IAAI,CAAC,KAAK,CACR,gBAAgB,EAChB,oIAAoI,CACrI,CAAC;IAEF,MAAM,cAAc,GAAG,yBAAyB,CAAC;IAEjD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAA,sBAAa,EAAC,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAE5D,IAAA,mBAAU,EAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE;QACvC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAC3B,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,IAAI,CACxB,wBAAwB,EACxB,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,CAC/B,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,IAAA,kBAAe,EAAC,IAAI,EAAE;QAC7C,GAAG,OAAO;QACV,YAAY,EAAE,oBAAoB;QAClC,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,IAAA,qCAA4B,EAC1B,IAAI,EACJ;QACE,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,QAAQ;KACtB,EACD,EAAE,CACH,CAAC;IAEF,4CAA4C;IAC5C,IAAA,mBAAU,EAAC,IAAI,EAAE,cAAc,EAAE,CAAC,OAA6C,EAAE,EAAE;QACjF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,yCAAyC,CAAC;QAChF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,0GAA0G;IAC1G,MAAM,SAAS,GAAG,MAAM,IAAA,0BAAkB,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAErD,OAAO,IAAA,yBAAgB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,kBAAe,eAAe,CAAC;AAE/B,SAAS,qBAAqB,CAAC,IAAU;IACvC,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,CAAC,eAAe,GAAG;QACvB,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,MAAM;KAChB,CAAC;IACF,IAAA,qBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import {\n Tree,\n addDependenciesToPackageJson,\n generateFiles,\n readNxJson,\n runTasksInSerial,\n updateJson,\n updateNxJson,\n} from \"@nx/devkit\";\nimport { initGenerator as jsInitGenerator } from \"@nx/js\";\nimport { reactInitGenerator } from \"@nx/react\";\nimport path from \"path\";\nimport { PresetGeneratorSchema } from \"./schema\";\n\n/**\n * Preset generator for Iris apps workspace.\n * Use with create-nx-workspace to create a new workspace for developing Iris apps.\n * ```npx create-nx-workspace --preset=iris-app```\n */\nexport async function presetGenerator(tree: Tree, options: PresetGeneratorSchema) {\n // setup workspace\n updateWorkspaceLayout(tree);\n tree.write(\n \"apps/readme.md\",\n `# Apps\\n\\nThis folder contains all apps in the workspace.\\n\\nApps are the main entry point for the Iris App SDK.\\nCreate an app by running \\`nx g @trackunit/iris-app:create <app-name>\\`.`\n );\n tree.write(\n \"libs/readme.md\",\n `# Libs\\n\\nThis folder contains all libs in the workspace.\\nCreate a lib by running \\`nx g @trackunit/iris-app:extend <lib-name>\\`.`\n );\n\n const extensionsPath = \".vscode/extensions.json\";\n\n if (!tree.exists(extensionsPath)) {\n tree.write(extensionsPath, \"{}\");\n }\n\n generateFiles(tree, path.join(__dirname, \"files\"), \".\", {});\n\n updateJson(tree, extensionsPath, value => {\n if (!value.recommendations) {\n value.recommendations = [];\n }\n value.recommendations.push(\n \"graphql.vscode-graphql\",\n \"graphql.vscode-graphql-syntax\",\n \"bradlc.vscode-tailwindcss\",\n \"firsttris.vscode-jest-runner\"\n );\n return value;\n });\n\n const jsInitTask = await jsInitGenerator(tree, {\n ...options,\n tsConfigName: \"tsconfig.base.json\",\n skipFormat: true,\n });\n\n addDependenciesToPackageJson(\n tree,\n {\n react: \"19.0.0\",\n \"react-dom\": \"19.0.0\",\n },\n {}\n );\n\n // Add update script for @trackunit packages\n updateJson(tree, \"package.json\", (pkgJson: { scripts?: Record<string, string> }) => {\n if (!pkgJson.scripts) {\n pkgJson.scripts = {};\n }\n pkgJson.scripts[\"update:trackunit\"] = 'npx npm-check-updates \"/@trackunit/\" -u';\n return pkgJson;\n });\n\n // This react generator adds react 19 and react-dom 19 to the package.json if we don't add react 18 above.\n const initReact = await reactInitGenerator(tree, {});\n\n return runTasksInSerial(jsInitTask, initReact);\n}\n\nexport default presetGenerator;\n\nfunction updateWorkspaceLayout(tree: Tree) {\n const nxJson = readNxJson(tree) ?? {};\n nxJson.workspaceLayout = {\n libsDir: \"libs\",\n appsDir: \"apps\",\n };\n updateNxJson(tree, nxJson);\n}\n"]}
|