openxiangda-devkit-core 2.0.0-alpha.107 → 2.0.0-alpha.109
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/dist/application-services.d.ts +181 -1
- package/dist/application-services.d.ts.map +1 -1
- package/dist/application-services.js +33 -0
- package/dist/application-services.js.map +1 -1
- package/dist/application-ui-contract.d.ts +5 -0
- package/dist/application-ui-contract.d.ts.map +1 -0
- package/dist/application-ui-contract.js +149 -0
- package/dist/application-ui-contract.js.map +1 -0
- package/dist/command-registry.d.ts +2 -2
- package/dist/command-registry.js +1 -1
- package/dist/command-registry.js.map +1 -1
- package/dist/compiler/application-model.d.ts +60 -0
- package/dist/compiler/application-model.d.ts.map +1 -0
- package/dist/compiler/application-model.js +141 -0
- package/dist/compiler/application-model.js.map +1 -0
- package/dist/compiler/bundle.d.ts.map +1 -1
- package/dist/compiler/bundle.js +19 -9
- package/dist/compiler/bundle.js.map +1 -1
- package/dist/compiler/config.d.ts +19 -5
- package/dist/compiler/config.d.ts.map +1 -1
- package/dist/compiler/config.js +137 -60
- package/dist/compiler/config.js.map +1 -1
- package/dist/compiler/field-surface.js +1 -1
- package/dist/compiler/field-surface.js.map +1 -1
- package/dist/compiler/permission-review.d.ts +139 -0
- package/dist/compiler/permission-review.d.ts.map +1 -0
- package/dist/compiler/permission-review.js +131 -0
- package/dist/compiler/permission-review.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/optional-backend.d.ts +14 -0
- package/dist/optional-backend.d.ts.map +1 -0
- package/dist/optional-backend.js +145 -0
- package/dist/optional-backend.js.map +1 -0
- package/dist/workspace-loader.d.ts.map +1 -1
- package/dist/workspace-loader.js +16 -1
- package/dist/workspace-loader.js.map +1 -1
- package/package.json +3 -2
- package/templates/backend/.turbo/turbo-build.log +4 -0
- package/templates/backend/.turbo/turbo-check.log +4 -0
- package/templates/backend/.turbo/turbo-test.log +13 -0
- package/templates/backend/Dockerfile +20 -0
- package/templates/backend/node_modules/.bin/openxiangda +21 -0
- package/templates/backend/node_modules/.bin/tsc +21 -0
- package/templates/backend/node_modules/.bin/tsserver +21 -0
- package/templates/backend/node_modules/.bin/tsx +21 -0
- package/templates/backend/package.json +27 -0
- package/templates/backend/src/app.module.ts +23 -0
- package/templates/backend/src/main.ts +5 -0
- package/templates/backend/test/smoke.test.ts +17 -0
- package/templates/backend/tsconfig.json +9 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openxiangda-devkit-core",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.109",
|
|
4
4
|
"description": "Framework-neutral OpenXiangda 2.0 workspace and control-plane use cases.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,12 +22,13 @@
|
|
|
22
22
|
},
|
|
23
23
|
"files": [
|
|
24
24
|
"dist/",
|
|
25
|
+
"templates/",
|
|
25
26
|
"README.md"
|
|
26
27
|
],
|
|
27
28
|
"dependencies": {
|
|
28
29
|
"ajv": "8.20.0",
|
|
29
30
|
"cron-parser": "5.4.0",
|
|
30
|
-
"openxiangda-contracts": "2.0.0-alpha.
|
|
31
|
+
"openxiangda-contracts": "2.0.0-alpha.85",
|
|
31
32
|
"esbuild": "0.28.2",
|
|
32
33
|
"typescript": "5.9.3",
|
|
33
34
|
"undici": "6.28.0"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
> @app/server@0.1.0 test /Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/templates/application/apps/server
|
|
3
|
+
> tsx --test test/*.test.ts
|
|
4
|
+
|
|
5
|
+
✔ the clean server template only owns platform bootstrap (0.600583ms)
|
|
6
|
+
ℹ tests 1
|
|
7
|
+
ℹ suites 0
|
|
8
|
+
ℹ pass 1
|
|
9
|
+
ℹ fail 0
|
|
10
|
+
ℹ cancelled 0
|
|
11
|
+
ℹ skipped 0
|
|
12
|
+
ℹ todo 0
|
|
13
|
+
ℹ duration_ms 148.307875
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
FROM node:22-alpine AS build
|
|
2
|
+
WORKDIR /workspace
|
|
3
|
+
RUN corepack enable
|
|
4
|
+
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.base.json ./
|
|
5
|
+
COPY apps/server/package.json apps/server/package.json
|
|
6
|
+
COPY packages/contracts/package.json packages/contracts/package.json
|
|
7
|
+
RUN node -e "const fs=require('node:fs'); const p=JSON.parse(fs.readFileSync('package.json','utf8')); delete p.devDependencies; fs.writeFileSync('package.json', JSON.stringify(p));"
|
|
8
|
+
RUN pnpm --filter @app/server --filter @app/contracts install --no-frozen-lockfile --ignore-scripts
|
|
9
|
+
COPY apps/server apps/server
|
|
10
|
+
COPY packages/contracts packages/contracts
|
|
11
|
+
RUN pnpm --filter @app/server... build
|
|
12
|
+
RUN pnpm --filter @app/server deploy --prod --legacy --ignore-scripts /output
|
|
13
|
+
|
|
14
|
+
FROM node:22-alpine AS runtime
|
|
15
|
+
ENV NODE_ENV=production
|
|
16
|
+
WORKDIR /app
|
|
17
|
+
COPY --from=build --chown=1000:1000 /output /app
|
|
18
|
+
USER 1000:1000
|
|
19
|
+
EXPOSE 3000
|
|
20
|
+
CMD ["node", "dist/main.js"]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/packages/openxiangda/bin/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/packages/openxiangda/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/packages/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/node_modules:/Users/caijie/project/xiangda/node_modules:/Users/caijie/project/node_modules:/Users/caijie/node_modules:/Users/node_modules:/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/packages/openxiangda/bin/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/packages/openxiangda/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/packages/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/node_modules:/Users/caijie/project/xiangda/node_modules:/Users/caijie/project/node_modules:/Users/caijie/node_modules:/Users/node_modules:/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../openxiangda/bin/run.js" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../openxiangda/bin/run.js" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../typescript/bin/tsc" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../typescript/bin/tsserver" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/tsx@4.23.12/node_modules/tsx/dist/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/tsx@4.23.12/node_modules/tsx/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/tsx@4.23.12/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/tsx@4.23.12/node_modules/tsx/dist/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/tsx@4.23.12/node_modules/tsx/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/tsx@4.23.12/node_modules:/Users/caijie/project/xiangda/sy-lowcode-main/tools/openxiangda-v2/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../tsx/dist/cli.mjs" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../tsx/dist/cli.mjs" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@app/server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "tsx watch src/main.ts",
|
|
8
|
+
"check": "tsc -p tsconfig.json --noEmit",
|
|
9
|
+
"test": "tsx --test test/*.test.ts",
|
|
10
|
+
"build": "tsc -p tsconfig.json",
|
|
11
|
+
"start": "node dist/main.js"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@app/contracts": "workspace:*",
|
|
15
|
+
"@nestjs/common": "11.1.29",
|
|
16
|
+
"@nestjs/core": "11.1.29",
|
|
17
|
+
"@nestjs/platform-fastify": "11.1.29",
|
|
18
|
+
"openxiangda": "workspace:*",
|
|
19
|
+
"reflect-metadata": "0.2.2",
|
|
20
|
+
"rxjs": "7.8.2"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/node": "24.13.3",
|
|
24
|
+
"tsx": "4.23.12",
|
|
25
|
+
"typescript": "5.9.3"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Module } from '@nestjs/common';
|
|
2
|
+
import {
|
|
3
|
+
eventHandlerManifest,
|
|
4
|
+
eventSchemas,
|
|
5
|
+
eventSubscriptionCodes,
|
|
6
|
+
} from '@app/contracts';
|
|
7
|
+
import {
|
|
8
|
+
OpenXiangdaModule,
|
|
9
|
+
eventSigningSecretsFromEnvironment,
|
|
10
|
+
} from 'openxiangda/nest';
|
|
11
|
+
|
|
12
|
+
@Module({
|
|
13
|
+
imports: [
|
|
14
|
+
OpenXiangdaModule.forApplication({
|
|
15
|
+
eventHandlerManifest,
|
|
16
|
+
eventSchemas,
|
|
17
|
+
eventSigningSecrets: eventSigningSecretsFromEnvironment(
|
|
18
|
+
eventSubscriptionCodes
|
|
19
|
+
),
|
|
20
|
+
}),
|
|
21
|
+
],
|
|
22
|
+
})
|
|
23
|
+
export class AppModule {}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import test from 'node:test';
|
|
4
|
+
|
|
5
|
+
test('the clean server template only owns platform bootstrap', () => {
|
|
6
|
+
const source = readFileSync(new URL('../src/app.module.ts', import.meta.url), 'utf8');
|
|
7
|
+
const main = readFileSync(new URL('../src/main.ts', import.meta.url), 'utf8');
|
|
8
|
+
assert.match(source, /OpenXiangdaModule\.forApplication/);
|
|
9
|
+
assert.doesNotMatch(source, /OPENXIANGDA_(?:APP_CODE|ENVIRONMENT_ID|OAUTH_CLIENT_ID)/);
|
|
10
|
+
assert.match(source, /eventHandlerManifest/);
|
|
11
|
+
assert.match(source, /eventSigningSecretsFromEnvironment/);
|
|
12
|
+
assert.match(main, /bootstrapOpenXiangdaApplication\(AppModule\)/);
|
|
13
|
+
assert.doesNotMatch(main, /NestFactory|FastifyAdapter/);
|
|
14
|
+
const legacyMarkers = ['oauth' + 'Client', 'Workflow', 'instrument' + '-context'];
|
|
15
|
+
assert.doesNotMatch(source, new RegExp(legacyMarkers.join('|')));
|
|
16
|
+
assert.doesNotMatch(source, /createData|updateData|deleteData|queryData/);
|
|
17
|
+
});
|