@oj-module/cli 0.2.6 → 0.2.8

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 (105) hide show
  1. package/README.md +1 -1
  2. package/devkit/manual.md +19 -17
  3. package/devkit/sql-builder-missing-capabilities-pr.md +234 -0
  4. package/package.json +2 -2
  5. package/shell-dist/assets/runtime.js +2 -2
  6. package/shell-dist/index.html +2 -2
  7. package/shell-dist/versions.json +3 -3
  8. package/src/contract/__tests__/handler-scan.test.ts +29 -0
  9. package/src/contract/__tests__/market-client.integration.test.ts +167 -0
  10. package/src/contract/handler-scan.ts +35 -4
  11. package/src/dev.ts +10 -2
  12. package/src/index.ts +3 -3
  13. package/src/init.ts +2 -0
  14. package/src/preview-config.ts +163 -0
  15. package/src/preview.ts +105 -56
  16. package/src/usage.ts +3 -2
  17. package/templates/api/config.yaml +4 -2
  18. package/templates/api/src/_platform/README.md +31 -0
  19. package/templates/api/src/_platform/_lifecycle/atomic.ts +1 -1
  20. package/templates/api/src/_platform/_lifecycle/history.ts +10 -5
  21. package/templates/api/src/_platform/_lifecycle/installer.ts +4 -4
  22. package/templates/api/src/_platform/_lifecycle/sha384.ts +1 -1
  23. package/templates/api/src/_platform/_lifecycle/steps/download.ts +1 -1
  24. package/templates/api/src/_platform/_lifecycle/steps/register.ts +57 -29
  25. package/templates/api/src/_platform/_lifecycle/trust.ts +1 -1
  26. package/templates/api/src/_platform/_lifecycle/uninstall.ts +13 -8
  27. package/templates/api/src/_platform/_lifecycle/verify-checks.ts +2 -2
  28. package/templates/api/src/_platform/_shared/service/{contacts.ts → domain/contacts.ts} +8 -6
  29. package/templates/api/src/_platform/_shared/service/{roles.ts → domain/roles.ts} +18 -19
  30. package/templates/api/src/_platform/_shared/service/{settings.ts → domain/settings.ts} +6 -6
  31. package/templates/api/src/_platform/_shared/service/{solution-perms.ts → domain/solution-perms.ts} +18 -17
  32. package/templates/api/src/_platform/_shared/service/{users.ts → domain/users.ts} +20 -26
  33. package/templates/api/src/_platform/_shared/service/{access.ts → infra/access.ts} +5 -8
  34. package/templates/api/src/_platform/_shared/service/{audit.ts → infra/audit.ts} +26 -26
  35. package/templates/api/src/_platform/_shared/service/{rate.ts → infra/rate.ts} +12 -12
  36. package/templates/api/src/_platform/_shared/site-facade.ts +1 -1
  37. package/templates/api/src/_platform/contacts/api.ts +2 -2
  38. package/templates/api/src/_platform/contacts/detail/api.ts +2 -2
  39. package/templates/api/src/_platform/manifest.yaml +3 -1
  40. package/templates/api/src/_platform/market/api.ts +54 -16
  41. package/templates/api/src/_platform/schema.yaml +14 -0
  42. package/templates/api/src/_platform/solutions/api.ts +13 -12
  43. package/templates/api/src/auth/_shared/ldap-login.ts +11 -7
  44. package/templates/api/src/auth/_shared/login-throttle.ts +2 -2
  45. package/templates/api/src/auth/_shared/session.ts +25 -21
  46. package/templates/api/src/auth/api.ts +1 -1
  47. package/templates/api/src/demo/todos/api.ts +1 -0
  48. package/templates/api/src/home/line/api.ts +4 -4
  49. package/templates/api/src/home/pie/api.ts +4 -4
  50. package/templates/api/src/notification/_shared/notify.ts +40 -38
  51. package/templates/api/src/notifications/api.ts +1 -4
  52. package/templates/api/src/personal-center/upload/api.ts +1 -1
  53. package/templates/api/src/system/login-methods/api.ts +1 -1
  54. package/templates/api/src/system/oplog/api.ts +3 -3
  55. package/templates/api/src/system/permissions/api.ts +2 -2
  56. package/templates/api/src/system/roles/api.ts +2 -2
  57. package/templates/api/src/system/roles/bindings/api.ts +2 -2
  58. package/templates/api/src/system/settings/api.ts +2 -2
  59. package/templates/api/src/system/users/api.ts +2 -2
  60. package/templates/api/src/system/users/forbidden/api.ts +2 -2
  61. package/templates/api/src/system/users/password/api.ts +2 -2
  62. package/templates/api/src/system/users/roles/api.ts +2 -2
  63. package/templates/api/src/web/user-info/api.ts +2 -5
  64. package/templates/api/tests/auth-session.spec.ts +1 -1
  65. package/templates/api/tests/auth-throttle.spec.ts +1 -1
  66. package/templates/api/tests/guard.spec.ts +1 -1
  67. package/templates/api/tests/lifecycle/market-api.spec.ts +1 -1
  68. package/templates/api/tests/lifecycle/trust.spec.ts +1 -1
  69. package/templates/api/tests/lifecycle/uninstall.spec.ts +1 -1
  70. package/templates/api/tests/query-utils.spec.ts +1 -1
  71. package/templates/api/tests/rbac-audit.spec.ts +1 -1
  72. package/templates/api/tests/rbac-contacts.spec.ts +2 -2
  73. package/templates/api/tests/rbac-guard.spec.ts +1 -1
  74. package/templates/api/tests/rbac-roles.spec.ts +2 -2
  75. package/templates/api/tests/rbac-settings.spec.ts +2 -2
  76. package/templates/api/tests/rbac-solution-perms.spec.ts +1 -1
  77. package/templates/api/tests/rbac-users.spec.ts +1 -1
  78. package/templates/api/tsconfig.json +8 -0
  79. package/templates/env.d.ts +2 -0
  80. package/templates/global.d.ts +816 -0
  81. package/templates/init.include.yaml +11 -0
  82. package/templates/logs/task-events.jsonl +0 -0
  83. package/templates/openapi.json +525 -13
  84. package/templates/package.json +2 -1
  85. package/templates/web/src/_platform/__client/api.schemas.ts +97 -0
  86. package/templates/web/src/_platform/__client/api.ts +152 -39
  87. package/templates/web/src/oj-market/__tests__/CardGrid.test.tsx +19 -0
  88. package/templates/web/src/oj-market/__tests__/InstallDialog.test.tsx +3 -0
  89. package/templates/web/src/oj-market/__tests__/RollbackDialog.test.tsx +1 -0
  90. package/templates/web/src/oj-market/__tests__/marketClient.fake.ts +1 -0
  91. package/templates/web/src/oj-market/api/client.ts +5 -105
  92. package/templates/web/src/oj-market/api/defaultClient.ts +111 -5
  93. package/templates/web/src/oj-market/components/CardGrid.tsx +4 -1
  94. package/templates/web/src/oj-market/components/CardItem.tsx +9 -5
  95. package/templates/web/src/oj-market/components/DetailDrawer.tsx +7 -3
  96. package/templates/web/src/oj-market/components/InstallDialog.tsx +1 -1
  97. package/templates/web/src/oj-market/hooks/useMarket.ts +4 -1
  98. package/templates/web/src/oj-market/locales/en-US.json +2 -1
  99. package/templates/web/src/oj-market/locales/zh-CN.json +2 -1
  100. package/templates/web/src/oj-market/pages/MarketApp.tsx +16 -1
  101. package/templates/web.config.ts +3 -3
  102. package/vendor/host-versions.json +3 -3
  103. /package/templates/api/src/_platform/_shared/service/{guard.ts → infra/guard.ts} +0 -0
  104. /package/templates/api/src/_platform/_shared/service/{oplog.ts → infra/oplog.ts} +0 -0
  105. /package/templates/api/src/_platform/_shared/service/{query.ts → infra/query.ts} +0 -0
@@ -27,6 +27,7 @@ include:
27
27
  # —— 工程级文件 ——
28
28
  - README.md
29
29
  - tsconfig.json
30
+ - global.d.ts
30
31
  - env.d.ts
31
32
  - web.config.ts
32
33
  - openapi.json
@@ -57,6 +58,16 @@ include:
57
58
  - web/src/login
58
59
  - web/src/notification
59
60
  - web/src/notifications
61
+ # 解决方案市场:默认第一方能力。逐子路径收录——__tests__ 不进脚手架
62
+ # (用户工程无 web 侧 vitest 基建,拷了是死文件)
63
+ - web/src/oj-market/entry.ts
64
+ - web/src/oj-market/types.ts
65
+ - web/src/oj-market/api
66
+ - web/src/oj-market/components
67
+ - web/src/oj-market/hooks
68
+ - web/src/oj-market/locales
69
+ - web/src/oj-market/pages
70
+ - web/src/oj-market/utils
60
71
  - web/src/personal-center
61
72
  - web/src/system
62
73
  - web/src/web
File without changes
@@ -43,9 +43,71 @@
43
43
  "tags": [
44
44
  "_platform"
45
45
  ],
46
+ "requestBody": {
47
+ "required": true,
48
+ "content": {
49
+ "application/json": {
50
+ "schema": {
51
+ "type": "object",
52
+ "required": [
53
+ "source",
54
+ "name"
55
+ ],
56
+ "properties": {
57
+ "source": {
58
+ "type": "string",
59
+ "enum": [
60
+ "cdn",
61
+ "file"
62
+ ]
63
+ },
64
+ "name": {
65
+ "type": "string"
66
+ },
67
+ "version": {
68
+ "type": [
69
+ "string",
70
+ "null"
71
+ ]
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ },
46
78
  "responses": {
47
79
  "200": {
48
- "description": "OK"
80
+ "description": "OK",
81
+ "x-oj-response-enforced": false,
82
+ "content": {
83
+ "application/json": {
84
+ "schema": {
85
+ "type": "object",
86
+ "required": [
87
+ "code",
88
+ "msg",
89
+ "data"
90
+ ],
91
+ "properties": {
92
+ "code": {
93
+ "type": "integer"
94
+ },
95
+ "msg": {
96
+ "type": "string"
97
+ },
98
+ "data": {
99
+ "type": "object",
100
+ "properties": {
101
+ "task_id": {
102
+ "type": "string"
103
+ }
104
+ },
105
+ "additionalProperties": true
106
+ }
107
+ }
108
+ }
109
+ }
110
+ }
49
111
  }
50
112
  }
51
113
  }
@@ -58,9 +120,63 @@
58
120
  "tags": [
59
121
  "_platform"
60
122
  ],
123
+ "requestBody": {
124
+ "required": true,
125
+ "content": {
126
+ "application/json": {
127
+ "schema": {
128
+ "type": "object",
129
+ "required": [
130
+ "name"
131
+ ],
132
+ "properties": {
133
+ "name": {
134
+ "type": "string"
135
+ }
136
+ }
137
+ }
138
+ }
139
+ }
140
+ },
61
141
  "responses": {
62
142
  "200": {
63
- "description": "OK"
143
+ "description": "OK",
144
+ "x-oj-response-enforced": false,
145
+ "content": {
146
+ "application/json": {
147
+ "schema": {
148
+ "type": "object",
149
+ "required": [
150
+ "code",
151
+ "msg",
152
+ "data"
153
+ ],
154
+ "properties": {
155
+ "code": {
156
+ "type": "integer"
157
+ },
158
+ "msg": {
159
+ "type": "string"
160
+ },
161
+ "data": {
162
+ "type": "object",
163
+ "properties": {
164
+ "ok": {
165
+ "type": "boolean"
166
+ },
167
+ "name": {
168
+ "type": "string"
169
+ },
170
+ "requested": {
171
+ "type": "boolean"
172
+ }
173
+ },
174
+ "additionalProperties": true
175
+ }
176
+ }
177
+ }
178
+ }
179
+ }
64
180
  }
65
181
  }
66
182
  }
@@ -73,9 +189,44 @@
73
189
  "tags": [
74
190
  "_platform"
75
191
  ],
192
+ "parameters": [
193
+ {
194
+ "name": "id",
195
+ "in": "query",
196
+ "required": true,
197
+ "schema": {
198
+ "type": "string"
199
+ }
200
+ }
201
+ ],
76
202
  "responses": {
77
203
  "200": {
78
- "description": "OK"
204
+ "description": "OK",
205
+ "x-oj-response-enforced": false,
206
+ "content": {
207
+ "application/json": {
208
+ "schema": {
209
+ "type": "object",
210
+ "required": [
211
+ "code",
212
+ "msg",
213
+ "data"
214
+ ],
215
+ "properties": {
216
+ "code": {
217
+ "type": "integer"
218
+ },
219
+ "msg": {
220
+ "type": "string"
221
+ },
222
+ "data": {
223
+ "type": "object",
224
+ "additionalProperties": true
225
+ }
226
+ }
227
+ }
228
+ }
229
+ }
79
230
  }
80
231
  }
81
232
  }
@@ -88,9 +239,56 @@
88
239
  "tags": [
89
240
  "_platform"
90
241
  ],
242
+ "requestBody": {
243
+ "required": true,
244
+ "content": {
245
+ "application/json": {
246
+ "schema": {
247
+ "type": "object",
248
+ "required": [
249
+ "name",
250
+ "enabled"
251
+ ],
252
+ "properties": {
253
+ "name": {
254
+ "type": "string"
255
+ },
256
+ "enabled": {
257
+ "type": "boolean"
258
+ }
259
+ }
260
+ }
261
+ }
262
+ }
263
+ },
91
264
  "responses": {
92
265
  "200": {
93
- "description": "OK"
266
+ "description": "OK",
267
+ "x-oj-response-enforced": false,
268
+ "content": {
269
+ "application/json": {
270
+ "schema": {
271
+ "type": "object",
272
+ "required": [
273
+ "code",
274
+ "msg",
275
+ "data"
276
+ ],
277
+ "properties": {
278
+ "code": {
279
+ "type": "integer"
280
+ },
281
+ "msg": {
282
+ "type": "string"
283
+ },
284
+ "data": {
285
+ "type": "object",
286
+ "additionalProperties": true
287
+ }
288
+ }
289
+ }
290
+ }
291
+ }
94
292
  }
95
293
  }
96
294
  }
@@ -105,7 +303,37 @@
105
303
  ],
106
304
  "responses": {
107
305
  "200": {
108
- "description": "OK"
306
+ "description": "OK",
307
+ "x-oj-response-enforced": false,
308
+ "content": {
309
+ "application/json": {
310
+ "schema": {
311
+ "type": "object",
312
+ "required": [
313
+ "code",
314
+ "msg",
315
+ "data"
316
+ ],
317
+ "properties": {
318
+ "code": {
319
+ "type": "integer"
320
+ },
321
+ "msg": {
322
+ "type": "string"
323
+ },
324
+ "data": {
325
+ "type": "object",
326
+ "properties": {
327
+ "apiVersion": {
328
+ "type": "string"
329
+ }
330
+ },
331
+ "additionalProperties": true
332
+ }
333
+ }
334
+ }
335
+ }
336
+ }
109
337
  }
110
338
  }
111
339
  }
@@ -120,7 +348,32 @@
120
348
  ],
121
349
  "responses": {
122
350
  "200": {
123
- "description": "OK"
351
+ "description": "OK",
352
+ "x-oj-response-enforced": false,
353
+ "content": {
354
+ "application/json": {
355
+ "schema": {
356
+ "type": "object",
357
+ "required": [
358
+ "code",
359
+ "msg",
360
+ "data"
361
+ ],
362
+ "properties": {
363
+ "code": {
364
+ "type": "integer"
365
+ },
366
+ "msg": {
367
+ "type": "string"
368
+ },
369
+ "data": {
370
+ "type": "object",
371
+ "additionalProperties": true
372
+ }
373
+ }
374
+ }
375
+ }
376
+ }
124
377
  }
125
378
  }
126
379
  },
@@ -131,9 +384,52 @@
131
384
  "tags": [
132
385
  "_platform"
133
386
  ],
387
+ "requestBody": {
388
+ "required": true,
389
+ "content": {
390
+ "application/json": {
391
+ "schema": {
392
+ "type": "object",
393
+ "required": [
394
+ "task_id"
395
+ ],
396
+ "properties": {
397
+ "task_id": {
398
+ "type": "string"
399
+ }
400
+ }
401
+ }
402
+ }
403
+ }
404
+ },
134
405
  "responses": {
135
406
  "200": {
136
- "description": "OK"
407
+ "description": "OK",
408
+ "x-oj-response-enforced": false,
409
+ "content": {
410
+ "application/json": {
411
+ "schema": {
412
+ "type": "object",
413
+ "required": [
414
+ "code",
415
+ "msg",
416
+ "data"
417
+ ],
418
+ "properties": {
419
+ "code": {
420
+ "type": "integer"
421
+ },
422
+ "msg": {
423
+ "type": "string"
424
+ },
425
+ "data": {
426
+ "type": "object",
427
+ "additionalProperties": true
428
+ }
429
+ }
430
+ }
431
+ }
432
+ }
137
433
  }
138
434
  }
139
435
  }
@@ -146,9 +442,56 @@
146
442
  "tags": [
147
443
  "_platform"
148
444
  ],
445
+ "requestBody": {
446
+ "required": true,
447
+ "content": {
448
+ "application/json": {
449
+ "schema": {
450
+ "type": "object",
451
+ "required": [
452
+ "key_id",
453
+ "public_key"
454
+ ],
455
+ "properties": {
456
+ "key_id": {
457
+ "type": "string"
458
+ },
459
+ "public_key": {
460
+ "type": "string"
461
+ }
462
+ }
463
+ }
464
+ }
465
+ }
466
+ },
149
467
  "responses": {
150
468
  "200": {
151
- "description": "OK"
469
+ "description": "OK",
470
+ "x-oj-response-enforced": false,
471
+ "content": {
472
+ "application/json": {
473
+ "schema": {
474
+ "type": "object",
475
+ "required": [
476
+ "code",
477
+ "msg",
478
+ "data"
479
+ ],
480
+ "properties": {
481
+ "code": {
482
+ "type": "integer"
483
+ },
484
+ "msg": {
485
+ "type": "string"
486
+ },
487
+ "data": {
488
+ "type": "object",
489
+ "additionalProperties": true
490
+ }
491
+ }
492
+ }
493
+ }
494
+ }
152
495
  }
153
496
  }
154
497
  },
@@ -159,9 +502,44 @@
159
502
  "tags": [
160
503
  "_platform"
161
504
  ],
505
+ "parameters": [
506
+ {
507
+ "name": "key_id",
508
+ "in": "query",
509
+ "required": true,
510
+ "schema": {
511
+ "type": "string"
512
+ }
513
+ }
514
+ ],
162
515
  "responses": {
163
516
  "200": {
164
- "description": "OK"
517
+ "description": "OK",
518
+ "x-oj-response-enforced": false,
519
+ "content": {
520
+ "application/json": {
521
+ "schema": {
522
+ "type": "object",
523
+ "required": [
524
+ "code",
525
+ "msg",
526
+ "data"
527
+ ],
528
+ "properties": {
529
+ "code": {
530
+ "type": "integer"
531
+ },
532
+ "msg": {
533
+ "type": "string"
534
+ },
535
+ "data": {
536
+ "type": "object",
537
+ "additionalProperties": true
538
+ }
539
+ }
540
+ }
541
+ }
542
+ }
165
543
  }
166
544
  }
167
545
  }
@@ -176,7 +554,35 @@
176
554
  ],
177
555
  "responses": {
178
556
  "200": {
179
- "description": "OK"
557
+ "description": "OK",
558
+ "x-oj-response-enforced": false,
559
+ "content": {
560
+ "application/json": {
561
+ "schema": {
562
+ "type": "object",
563
+ "required": [
564
+ "code",
565
+ "msg",
566
+ "data"
567
+ ],
568
+ "properties": {
569
+ "code": {
570
+ "type": "integer"
571
+ },
572
+ "msg": {
573
+ "type": "string"
574
+ },
575
+ "data": {
576
+ "type": "array",
577
+ "items": {
578
+ "type": "object",
579
+ "additionalProperties": true
580
+ }
581
+ }
582
+ }
583
+ }
584
+ }
585
+ }
180
586
  }
181
587
  }
182
588
  }
@@ -189,9 +595,44 @@
189
595
  "tags": [
190
596
  "_platform"
191
597
  ],
598
+ "parameters": [
599
+ {
600
+ "name": "name",
601
+ "in": "query",
602
+ "required": true,
603
+ "schema": {
604
+ "type": "string"
605
+ }
606
+ }
607
+ ],
192
608
  "responses": {
193
609
  "200": {
194
- "description": "OK"
610
+ "description": "OK",
611
+ "x-oj-response-enforced": false,
612
+ "content": {
613
+ "application/json": {
614
+ "schema": {
615
+ "type": "object",
616
+ "required": [
617
+ "code",
618
+ "msg",
619
+ "data"
620
+ ],
621
+ "properties": {
622
+ "code": {
623
+ "type": "integer"
624
+ },
625
+ "msg": {
626
+ "type": "string"
627
+ },
628
+ "data": {
629
+ "type": "object",
630
+ "additionalProperties": true
631
+ }
632
+ }
633
+ }
634
+ }
635
+ }
195
636
  }
196
637
  }
197
638
  }
@@ -204,9 +645,52 @@
204
645
  "tags": [
205
646
  "_platform"
206
647
  ],
648
+ "requestBody": {
649
+ "required": true,
650
+ "content": {
651
+ "application/json": {
652
+ "schema": {
653
+ "type": "object",
654
+ "required": [
655
+ "name"
656
+ ],
657
+ "properties": {
658
+ "name": {
659
+ "type": "string"
660
+ }
661
+ }
662
+ }
663
+ }
664
+ }
665
+ },
207
666
  "responses": {
208
667
  "200": {
209
- "description": "OK"
668
+ "description": "OK",
669
+ "x-oj-response-enforced": false,
670
+ "content": {
671
+ "application/json": {
672
+ "schema": {
673
+ "type": "object",
674
+ "required": [
675
+ "code",
676
+ "msg",
677
+ "data"
678
+ ],
679
+ "properties": {
680
+ "code": {
681
+ "type": "integer"
682
+ },
683
+ "msg": {
684
+ "type": "string"
685
+ },
686
+ "data": {
687
+ "type": "object",
688
+ "additionalProperties": true
689
+ }
690
+ }
691
+ }
692
+ }
693
+ }
210
694
  }
211
695
  }
212
696
  }
@@ -221,7 +705,35 @@
221
705
  ],
222
706
  "responses": {
223
707
  "200": {
224
- "description": "OK"
708
+ "description": "OK",
709
+ "x-oj-response-enforced": false,
710
+ "content": {
711
+ "application/json": {
712
+ "schema": {
713
+ "type": "object",
714
+ "required": [
715
+ "code",
716
+ "msg",
717
+ "data"
718
+ ],
719
+ "properties": {
720
+ "code": {
721
+ "type": "integer"
722
+ },
723
+ "msg": {
724
+ "type": "string"
725
+ },
726
+ "data": {
727
+ "type": "array",
728
+ "items": {
729
+ "type": "object",
730
+ "additionalProperties": true
731
+ }
732
+ }
733
+ }
734
+ }
735
+ }
736
+ }
225
737
  }
226
738
  }
227
739
  }
@@ -8,7 +8,8 @@
8
8
  "build": "ojm build",
9
9
  "preview": "ojm preview",
10
10
  "info": "ojm info",
11
- "typecheck": "tsc --noEmit -p tsconfig.json"
11
+ "typecheck": "tsc --noEmit -p tsconfig.json",
12
+ "typecheck:api": "tsc --noEmit -p api/tsconfig.json"
12
13
  },
13
14
  "devDependencies": {
14
15
  "@ant-design/cssinjs": "catalog:",