@loopback/cli 4.0.0-alpha.9 → 4.0.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 (159) hide show
  1. package/.yo-rc.json +1697 -0
  2. package/{generators/project/templates/LICENSE → LICENSE} +2 -1
  3. package/README.md +44 -43
  4. package/bin/cli-main.js +61 -0
  5. package/generators/app/index.js +109 -15
  6. package/generators/app/templates/.dockerignore +5 -0
  7. package/generators/app/templates/Dockerfile +28 -0
  8. package/generators/app/templates/README.md.ejs +130 -0
  9. package/generators/app/templates/public/index.html.ejs +88 -0
  10. package/generators/app/templates/{test → src/__tests__}/README.md +0 -1
  11. package/generators/app/templates/src/__tests__/acceptance/home-page.acceptance.ts.ejs +31 -0
  12. package/generators/app/templates/src/__tests__/acceptance/ping.controller.acceptance.ts.ejs +21 -0
  13. package/generators/app/templates/src/__tests__/acceptance/test-helper.ts.ejs +32 -0
  14. package/generators/app/templates/src/application.ts.ejs +70 -0
  15. package/generators/app/templates/src/controllers/README.md +6 -0
  16. package/generators/app/templates/src/controllers/index.ts.ejs +1 -0
  17. package/generators/app/templates/src/controllers/ping.controller.ts.ejs +55 -0
  18. package/generators/app/templates/src/datasources/README.md +3 -0
  19. package/generators/app/templates/src/index.ts.ejs +39 -0
  20. package/generators/app/templates/src/migrate.ts.ejs +20 -0
  21. package/generators/app/templates/src/models/README.md +3 -0
  22. package/generators/app/templates/src/openapi-spec.ts.ejs +23 -0
  23. package/generators/app/templates/src/sequence.ts.ejs +3 -0
  24. package/generators/controller/index.js +240 -23
  25. package/generators/controller/templates/src/controllers/controller-rest-template.ts.ejs +150 -0
  26. package/generators/controller/templates/src/controllers/{controller-template.ts → controller-template.ts.ejs} +2 -2
  27. package/generators/copyright/fs.js +46 -0
  28. package/generators/copyright/git.js +78 -0
  29. package/generators/copyright/header.js +306 -0
  30. package/generators/copyright/index.js +230 -0
  31. package/generators/copyright/license.js +105 -0
  32. package/generators/datasource/index.js +341 -0
  33. package/generators/datasource/templates/datasource.ts.ejs +22 -0
  34. package/generators/discover/import-discovered-model.js +70 -0
  35. package/generators/discover/index.js +349 -0
  36. package/generators/example/downloader.js +16 -0
  37. package/generators/example/index.js +176 -0
  38. package/generators/extension/index.js +34 -5
  39. package/generators/extension/templates/README.md.ejs +32 -0
  40. package/generators/extension/templates/{test → src/__tests__}/acceptance/README.md +0 -0
  41. package/generators/extension/templates/{test → src/__tests__}/integration/README.md +0 -0
  42. package/generators/extension/templates/{test → src/__tests__}/unit/README.md +0 -0
  43. package/generators/extension/templates/src/component.ts.ejs +22 -0
  44. package/generators/extension/templates/src/controllers/README.md +3 -2
  45. package/generators/extension/templates/src/decorators/README.md +10 -4
  46. package/generators/extension/templates/src/index.ts.ejs +3 -0
  47. package/generators/extension/templates/src/keys.ts.ejs +11 -0
  48. package/generators/extension/templates/src/mixins/README.md +77 -21
  49. package/generators/extension/templates/src/providers/README.md +51 -25
  50. package/generators/extension/templates/src/repositories/README.md +1 -1
  51. package/generators/extension/templates/src/types.ts.ejs +15 -0
  52. package/generators/import-lb3-models/index.js +197 -0
  53. package/generators/import-lb3-models/lb3app-loader.js +31 -0
  54. package/generators/import-lb3-models/migrate-model.js +249 -0
  55. package/generators/import-lb3-models/model-names.js +32 -0
  56. package/generators/interceptor/index.js +178 -0
  57. package/generators/interceptor/templates/interceptor-template.ts.ejs +62 -0
  58. package/generators/model/index.js +536 -0
  59. package/generators/model/property-definition.js +85 -0
  60. package/generators/model/templates/model.ts.ejs +42 -0
  61. package/generators/observer/index.js +132 -0
  62. package/generators/observer/templates/observer-template.ts.ejs +40 -0
  63. package/generators/openapi/README.md +211 -0
  64. package/generators/openapi/index.js +535 -0
  65. package/generators/openapi/schema-helper.js +447 -0
  66. package/generators/openapi/spec-helper.js +484 -0
  67. package/generators/openapi/spec-loader.js +75 -0
  68. package/generators/openapi/templates/src/controllers/controller-template.ts.ejs +43 -0
  69. package/generators/openapi/templates/src/datasources/datasource.ts.ejs +42 -0
  70. package/generators/openapi/templates/src/models/model-template.ts.ejs +71 -0
  71. package/generators/openapi/templates/src/models/type-template.ts.ejs +13 -0
  72. package/generators/openapi/templates/src/services/service-proxy-template.ts.ejs +55 -0
  73. package/generators/openapi/utils.js +322 -0
  74. package/generators/project/templates/.eslintignore +4 -0
  75. package/generators/project/templates/.eslintrc.js.ejs +3 -0
  76. package/generators/project/templates/.mocharc.json +5 -0
  77. package/generators/project/templates/.prettierignore +0 -2
  78. package/generators/project/templates/.prettierrc +2 -1
  79. package/generators/project/templates/.vscode/launch.json +38 -0
  80. package/generators/project/templates/.vscode/settings.json +32 -0
  81. package/generators/project/templates/.vscode/tasks.json +29 -0
  82. package/generators/project/templates/DEVELOPING.md +36 -0
  83. package/generators/project/templates/_.gitignore +3 -5
  84. package/generators/project/templates/package.json.ejs +175 -0
  85. package/generators/project/templates/package.plain.json.ejs +176 -0
  86. package/generators/project/templates/tsconfig.json.ejs +39 -0
  87. package/generators/relation/base-relation.generator.js +220 -0
  88. package/generators/relation/belongs-to-relation.generator.js +196 -0
  89. package/generators/relation/has-many-relation.generator.js +200 -0
  90. package/generators/relation/has-many-through-relation.generator.js +331 -0
  91. package/generators/relation/has-one-relation.generator.js +200 -0
  92. package/generators/relation/index.js +795 -0
  93. package/generators/relation/references-many-relation.generator.js +142 -0
  94. package/generators/relation/templates/controller-relation-template-belongs-to.ts.ejs +38 -0
  95. package/generators/relation/templates/controller-relation-template-has-many-through.ts.ejs +110 -0
  96. package/generators/relation/templates/controller-relation-template-has-many.ts.ejs +110 -0
  97. package/generators/relation/templates/controller-relation-template-has-one.ts.ejs +110 -0
  98. package/generators/relation/utils.generator.js +260 -0
  99. package/generators/repository/index.js +576 -0
  100. package/generators/repository/templates/src/repositories/repository-crud-default-template.ts.ejs +21 -0
  101. package/generators/repository/templates/src/repositories/repository-kv-template.ts.ejs +19 -0
  102. package/generators/rest-crud/crud-rest-component.js +63 -0
  103. package/generators/rest-crud/index.js +401 -0
  104. package/generators/rest-crud/templates/src/model-endpoints/model.rest-config-template.ts.ejs +10 -0
  105. package/generators/service/index.js +351 -0
  106. package/generators/service/templates/local-service-class-template.ts.ejs +10 -0
  107. package/generators/service/templates/local-service-provider-template.ts.ejs +19 -0
  108. package/generators/service/templates/remote-service-proxy-template.ts.ejs +21 -0
  109. package/generators/update/index.js +55 -0
  110. package/intl/cs/messages.json +204 -0
  111. package/intl/de/messages.json +204 -0
  112. package/intl/en/messages.json +204 -0
  113. package/intl/es/messages.json +204 -0
  114. package/intl/fr/messages.json +204 -0
  115. package/intl/it/messages.json +204 -0
  116. package/intl/ja/messages.json +204 -0
  117. package/intl/ko/messages.json +204 -0
  118. package/intl/nl/messages.json +204 -0
  119. package/intl/pl/messages.json +204 -0
  120. package/intl/pt/messages.json +204 -0
  121. package/intl/ru/messages.json +204 -0
  122. package/intl/tr/messages.json +204 -0
  123. package/intl/zh-Hans/messages.json +204 -0
  124. package/intl/zh-Hant/messages.json +204 -0
  125. package/lib/artifact-generator.js +138 -39
  126. package/lib/ast-helper.js +214 -0
  127. package/lib/base-generator.js +509 -0
  128. package/lib/cli.js +233 -0
  129. package/lib/connectors.json +894 -0
  130. package/lib/debug.js +16 -0
  131. package/lib/globalize.js +12 -0
  132. package/lib/model-discoverer.js +118 -0
  133. package/lib/project-generator.js +154 -57
  134. package/lib/tab-completion.js +127 -0
  135. package/lib/update-index.js +44 -0
  136. package/lib/utils.js +689 -20
  137. package/lib/version-helper.js +299 -0
  138. package/package.json +183 -39
  139. package/CHANGELOG.md +0 -86
  140. package/bin/cli.js +0 -66
  141. package/generators/app/templates/index.js +0 -14
  142. package/generators/app/templates/src/application.ts +0 -27
  143. package/generators/app/templates/src/controllers/ping-controller.ts +0 -25
  144. package/generators/app/templates/src/index.ts +0 -25
  145. package/generators/app/templates/test/ping-controller.test.ts +0 -46
  146. package/generators/extension/templates/index.js +0 -8
  147. package/generators/extension/templates/src/component.ts +0 -14
  148. package/generators/extension/templates/src/index.ts +0 -6
  149. package/generators/project/templates/.npmrc +0 -1
  150. package/generators/project/templates/.yo-rc.json +0 -1
  151. package/generators/project/templates/README.md +0 -4
  152. package/generators/project/templates/index.d.ts +0 -6
  153. package/generators/project/templates/index.ts +0 -11
  154. package/generators/project/templates/package.json +0 -79
  155. package/generators/project/templates/package.plain.json +0 -82
  156. package/generators/project/templates/test/mocha.opts +0 -1
  157. package/generators/project/templates/tsconfig.json +0 -29
  158. package/generators/project/templates/tslint.build.json +0 -17
  159. package/generators/project/templates/tslint.json +0 -33
@@ -0,0 +1,204 @@
1
+ {
2
+ "0115c9a527e1f9f5a354bbccdfe36112": "项目根目录:",
3
+ "012baa262729b0782646db9528429b4c": "请选择存储库基类",
4
+ "0258f65fb9328a8b055704469bebd5f9": "请指定基本路径",
5
+ "02d863aa78876b4a4dfce688a7e6f917": "显示如何添加验证的示例。",
6
+ "0609b5861fff6ee8047b75494e76af9e": "CRUD 操作的基本 HTTP 路径名称是什么?",
7
+ "07ca1f30e0f0c91e5866d7c230c49157": "展示采用 Prometheus 进行度量的示例。",
8
+ "0872615fb20f996d5032526cb9af72b5": "经过修改的使用 JWT 认证的 Todo 应用程序。",
9
+ "08a89a8f18d86a3e2f5ce66aeb8b183f": "{0} 的描述",
10
+ "0e2dd2688c9939e6e3bc58af3b5e7b17": "有效的存储库基类",
11
+ "0eee394c1a8c898184aa039420afc594": "要克隆的示例名称",
12
+ "0f64c35f7cb25ea8a068e157cfd3f283": "含 CRUD 函数的 REST 控制器",
13
+ "0f97dcea7dc212c905400da264b09cfd": "{1} 中创建了应用程序 {0}。",
14
+ "1186c24b9452b67a24cb130b76dedffa": "以下位置找不到任何模型",
15
+ "12fb77f2e738ee14bda8660d5bcd894e": "包含该模型且支持模型发现的 dataSource 的名称",
16
+ "1464cbc7a74f0f53a7acec08c638b376": "是否要更新 package.json 和 LICENSE?",
17
+ "1a0b53a1a5323fa92b6634ae16264892": "配置选项所用的 JSON 文件名称或值",
18
+ "1b41d41e2416c5a532ad20e34338a19b": "版权所有者",
19
+ "203aab8983bbe9ab5982baa09cd4b819": "空控制器",
20
+ "21840a025087b2fd39b9dd37b7498473": "不支持使用类型输入的缺省输入将 {0} 设置为 {1}",
21
+ "22097832e90dd9481994416927ad1ecc": "{0} 的名称",
22
+ "23fe9f126c159af41d59b9b16b594c05": "使用虚构协议的基本 RPC 服务器。",
23
+ "25613bcc246af27bb9adbffb15808516": "升级项目依赖项",
24
+ "2619c842fedf79c6759daa768ba137fb": "项目最初由 @loopback/cli@{0} 生成。",
25
+ "2680da6ffe85172d7053e97f8e21d1ff": "使用 LoopBack 4 的简单的 hello-world 应用程序。",
26
+ "2d3e0ddbc158e249765cb0bb8f544217": "使用 npm run lint:fix 格式化生成的代码",
27
+ "2d5745f8e3d91cf55dcc84f354a43e6c": "允许 <sourceModel> 查询包含来自相关 <destinationModel> 的数据",
28
+ "2f557022f8a4e832fca5cd5a6d511f4c": "使用 Passport 模块在 LoopBack 应用程序中实施认证的示例。",
29
+ "3190bfdf06a7237a3593ef7291031507": "有效的基本模型",
30
+ "3411753432848b4f4c6d3e3d73c09f4e": "数组项的类型:",
31
+ "34a1d0defdf4035829eb9d2bd790b061": "组件类名称:",
32
+ "35d135e52a365c5661db56d4aec07578": "源模型主键的类型是什么?",
33
+ "35f7f1974164ebad7093cb795630a84f": "禁用 Camel 案例后,您可能需要指定关系定义中的这些定制名称。",
34
+ "377a709c8cc8bff5d976a4e0da06ef47": "ID 属性的名称是什么?",
35
+ "3a4acc1cb8bfc709718a49bfbeeb8460": "选择要生成 CRUD REST 端点的模型",
36
+ "3b277c9f147030a09de73a478e4b83d7": "遍历模型上的外键引用源模型",
37
+ "3cd28c0bc408abf4517f346f8cbe359e": "{0} 是否为 ID 属性?",
38
+ "3e7a1e0430f90996d14c5065c281fdcf": "它是否为全局拦截器?",
39
+ "407fbe4b3fc192f22b4e90442c5980a1": "选择要发现的模型",
40
+ "40cf3ed09f01e543265ffe4519bd08a5": "{0} 的项目名称",
41
+ "43036093921e1f4595967e0eb6fcdb8b": "希望如何继续?",
42
+ "44ae9235f4eab024b184b59fedd71f9c": "立即中止",
43
+ "44d2743e9d8e6106410b7fea1fcb69a0": "LoopBack 4 的示例扩展项目。",
44
+ "4670d311aa36fb13d626ec4ab55d4f19": "后续步骤:",
45
+ "48b75482f8e08e012b70a495df71d514": "将项目标记为私有(不包括在 npm 发布中)",
46
+ "4a33ae949b2b741e075c445df3cca1d7": "----- 定制存储库 -----",
47
+ "4b1516463cdea3b248eeb97ac4948198": "是否允许其他(自由格式)的属性?",
48
+ "4d8a9b728bee844a0a6647379ab86826": "让我们将一个属性添加到 {0}",
49
+ "5225c88650d6a337fb4c215cca812f96": "从 LoopBack 3 存储库 loopback-example-access-control 迁移的访问控制示例。",
50
+ "5226c72e763d99e9a316a9ce9875fde9": "包含 Dockerfile 和 .dockerignore",
51
+ "52e1f166e76bb9545daf180fb2e63782": "请选择关系类型",
52
+ "52f7167a7c775a0e66ef8d5b9ade1fc1": "{0} {1} 将在 src/{2}/{3}.{4}.ts 中创建",
53
+ "536024b4c8926c72705ad6796e7629b6": "用于发现视图的布尔值",
54
+ "542d9b2310d9bb9f8c4bf792dbb7d6cd": "应用程序类名:",
55
+ "57fc5239f1ed8537950c0dc19a61b85f": "选择要发现的连接器",
56
+ "5811f9c0ec7e60ecb58a58e1faa5574b": "启用 prettier",
57
+ "59a4c6df82c2bbaf50592ee55982fe64": "使用 @loopback/build 助手(如 lb-eslint)",
58
+ "5a0085f46605278c8b83284484cfa858": "用于排序全局拦截器的组名",
59
+ "5a5169e28fedd5752a79ae01155f47a1": "许可名称:",
60
+ "5b6e1e532844d265ddfe06d8a15bdeba": "启用 {0}",
61
+ "5bdddebdf72c7027a9e24aa500a35dd7": "缺省值 {0}:",
62
+ "5eb4697c2c62ae3b805af415847dd069": "以下位置找不到任何模型",
63
+ "5f9d9ca636cc3bd7e133455d51fa410b": "请选择源模型",
64
+ "6114abcc1315a8f1e0bef7748b00eb14": "使用预先配置的 VSCode 设置",
65
+ "61d043027dd4251cb87fe4419d35ffd8": "允许 {0} 查询包含来自相关 {1} 实例的数据?",
66
+ "635110efac9ccc161e67007e2df6db06": "要发现的模式",
67
+ "6393c8247a668f277bae18632fb260c1": "用于排序的观察器组的名称",
68
+ "63a2b68c48f278cfafe6e2682b30e261": "安装 prettier 以格式化代码,使其符合规则",
69
+ "64bbe2d519f72f60277b9661b313dab7": "项目名称:",
70
+ "64e66b3917e80c0609371f314c1d87e0": "错误的关系类型",
71
+ "66fbf32f221f83bbf88d3e7ed04f5724": "指定要存放“model.model.ts”文件的目录",
72
+ "67ee888416f9432e38942252993cc304": "类不存在。请先通过“lb4 repository”命令创建存储库。",
73
+ "685b2e167d6a8e5da8f24a8a889808ce": "更改缺省软件包管理器",
74
+ "68a8b9c962c33e1c521e221b30409cd7": "请查看更改日志以了解重大更改。",
75
+ "693de1283bf4c567269b4984d3d82d82": "关系 getter 的源属性名称(将为关系名称)",
76
+ "6e6a3836ad202ae5c263855b6e98ac85": "使用语义 semver 检查版本兼容性",
77
+ "6faaa64820277d3607d43a208ce3da13": "示例被克隆到 {0}。",
78
+ "70067103913204b5125f9192be23086c": "创建新实例时是否忽略标识?",
79
+ "70819a2fcd43c1a5e08942229d51cd43": "请访问 http://loopback.io/doc/en/lb4/Controller-generator.html,获取有关模型发现方式的信息。",
80
+ "7228a5fab7ef8492cf66a3ef8df74ddf": "如果在 dataSource 中发现模型,请指定包含该模型的模式",
81
+ "72e0cfd29751146d9e94bb4d5cf25133": "展示如何利用 LoopBack 4 实施多租户的示例应用程序。",
82
+ "7321493f5e514208aba16acbc3a8d1c9": "以下位置找不到任何数据源",
83
+ "74cc43ebc62b786995ac784b37d3764f": "安装依赖项失败错误",
84
+ "7652193b0c43b9ffe80339f63574cb63": "{0} 类名:",
85
+ "76657b97b9993e79fdba1bff7c2a69ed": "添加 VSCode 配置文件",
86
+ "791d59188157facefbdbfb866792462e": "Camel 案例 (exampleColumn)(推荐)",
87
+ "79461416ce81d6f5c3ce3418fc191224": "安装 mocha 以运行测试",
88
+ "794df3791a8c800841516007427a2aa3": "许可证",
89
+ "7bcd10e0c597ed32f22b06726d10cb2b": "您的 CRUD 存储库的名称是什么?",
90
+ "7c811ec38c295f6eaa7fa52c1c0cfee1": "{0} 的项目根目录",
91
+ "7c9111f852ea9bd35067a5f53540ff0b": "{0} 中找不到任何模型。",
92
+ "7d35e6a282ed68a01b4badfddb9dd412": "包含服务代理导入和 ServiceMixin",
93
+ "815548e083b8b7ea5edd0e57df0bfd29": "包含存储库导入和 RepositoryMixin",
94
+ "8340baa1142a43339a4df3a9ea93e9cb": "不自动安装依赖项",
95
+ "84cee9d182963cbedca9286a040f1e9a": "跳过有关缺省值或所提供值的所有确认提示",
96
+ "84d0d2cbd6faa568def78ab07ed7b81c": "升级可能会中断当前项目。",
97
+ "86e3245551645cc680371ba55857f172": "如果在 dataSource 中发现模型,请指定其表/视图的名称",
98
+ "87252b6b2ca8b638846fae8825f47ccc": "{0} 会自动生成吗?",
99
+ "8727d7fdfe60608d53d81f7699671a74": "请输入 {0} 的标识属性的名称:",
100
+ "87301db76b14083e67a5092c1bd04cd0": "LoopBack 4 项目中安装的示例 LoopBack 3 应用程序。",
101
+ "8ae4fe9c6f4bbdbe961a3e0f7fc88bfc": "请选择数据源",
102
+ "8b4796b628fbc387d54d2d6857336613": "显示如何公开 API 以上载/下载文件的示例。",
103
+ "8b537f4c328d510bb54742e32de74071": "源模型的 ID 属性的名称是什么?",
104
+ "9028d3ea0ff5063cdfc59d7def551881": "遍历模型上的外键引用目标模型",
105
+ "912b3c6f2e4622df7f52697a7a23478e": "源模型上的主键",
106
+ "919886be4ae469dbab529c61acd85781": "输入连接器的包名称:",
107
+ "91cd2d832c4b723add34ca2db743b689": "要在目标模型上定义的外键名称",
108
+ "93a678d3a0375c0d3b52c7d8e938e019": "生成已异常中止:{0}",
109
+ "93d2bb2103d07f905ef0e83ea0e63e0b": "LoopBack 3.x 应用程序的路径。可以是项目目录(如“my-lb3-app”)或服务器文件(如“my-lb3-app/server/server.js”)。",
110
+ "958ae3d061270d7e85cfe6b9c191feaf": "本地服务提供程序绑定到应用程序上下文",
111
+ "982e471119e413bad610f51015bf80e0": "启用 eslint",
112
+ "9885cdb6ead91df9a95786bad4e66702": "无转换 (EXAMPLE_COLUMN)",
113
+ "998a1b696d7b016542c6ec0eacec2d1f": "遍历模型",
114
+ "9a1f7d7f7e96f8fcf115ec7c7a661eb0": "选择要针对其生成存储库的模型",
115
+ "9a95948dd5623ba2e0486c3fbdd582af": "关系名称",
116
+ "9d393adbce56c1a77f232c3d51256be2": "通过预先配置的 lint 规则添加一个 linter",
117
+ "9e2f6b14adb66ccd111b6a2fe13cc53c": "全局拦截器的组名:('')",
118
+ "a0057f1a34b70e6758a963af3253a482": "包含存储库导入和 RepositoryMixin",
119
+ "a0cbd2b9f0129c22074ec538a57f4f9c": "定制许可证行:",
120
+ "a15fa7a8c5d61e571d811ac04ae6fe99": "{0} 组:",
121
+ "a1de2d58d7e3cd0b012c038b47e101a2": "选择一条约定,将 db 列名称 (EXAMPLE_COLUMN) 转换为模型属性名称:",
122
+ "a261957414bba63a85459b733f597acb": "应用程序类名",
123
+ "a4577a939c79c9d229d545d109fd60fa": "package.json 中未配置任何“lint:fix”脚本。",
124
+ "a47ec64e233351cf9f742a03f351c3d1": "全局拦截器按绑定到 ContextBindings.GLOBAL_INTERCEPTOR_ORDERED_GROUPS 的组名数组顺序进行排序。请参阅 https://loopback.io/doc/en/lb4/Interceptors.html#order-of-invocation-for-interceptors。",
125
+ "a6493241c36ba3efc3d6a14ddcf87685": "显示如何使用 @loopback/context 的独立示例。",
126
+ "a79ec4dd1bb6d82f93af6170413a28a9": "请选择遍历模型",
127
+ "a7f90f78abfa210e6d490268ea98ea80": "有效的模型名称",
128
+ "a8dbe656477e8eab5c8763a9b1ff0f84": "选择要导入的模型:",
129
+ "a958340547ffe336ce9bfdb0f5328d00": "Yarn 可用。是否要缺省使用它?",
130
+ "aa2ea1f299d456d85ba42aab96581fe5": "排除与模式匹配的文件",
131
+ "aa7af2a74b80e89d69be64f87140314e": "包含 ApiConnectComponent",
132
+ "ac0a68d90df6320ff454590a5732e748": "显示如何实施扩展点/扩展模式的示例。",
133
+ "ad5df45eb6b1da34ba7f75bec5b6a3d5": "指示全局拦截器的标志",
134
+ "aebb8636dacf73a5ea8811fafbe3ed68": "属性类型:",
135
+ "afdaa0dc3b913a7b3bd5f20489f5c76d": "有效的基本路径",
136
+ "b06ea51aa53522aff2889a64d68d1055": "关系类型",
137
+ "b0e22938bbbbeb3d5f4692390820f4de": "请选择模型基类",
138
+ "b237a567cb959681e3967d2a35738c56": "用于展示 GraphQL 集成的示例。",
139
+ "b2816eddfa7b70b5b26d4c90c9e329bb": "目标模型主键的类型是什么?",
140
+ "b3c1afbfb1c87daaac414bab981ee7bd": "读取文件时出错",
141
+ "b48768d73c204b1a2ebcc3f44792b556": "无效示例名称:{0}\n运行“lb4 example --help”以打印出可用示例名称的列表。",
142
+ "b68ecbcaa4f94151658f5ad32e6cf6fd": "本地服务类绑定到应用程序上下文",
143
+ "b7fc5ab93877e57e2ffa139d8ba87a54": "针对已配置的选项显示提示",
144
+ "b9356b7d2debc8b04dd6f2fd9bf5f83f": "希望克隆什么示例?",
145
+ "ba35aa839698960c52ab1e8514cacd43": "关于使用 webpack 捆绑 @loopback/core 的示例。",
146
+ "bcebec8d7974acc21a208c7325a06e9c": "仅需一个模型和一个数据源的简单 Todo 示例版本。",
147
+ "bde86a06584f0c0cbf30526a8d408efd": "源模型上主键的类型",
148
+ "be65fa55f75dd126a2af5ec2ad4b8f8b": "如何集成 SOAP Web Service 的示例。",
149
+ "be687f67487ae57f311148f55cc2df76": "要在源模型上定义的外键名称",
150
+ "be7f5cb5b6a0fce7004ae6adc772e30b": "目标模型上主键的类型",
151
+ "bfd42878b3c50994368322098aed9e42": "包含 Dockerfile 和 .dockerignore",
152
+ "c1f96ff7ee37bcc6aa150ae5d0dbc3bb": "您的标识是什么类型?",
153
+ "c3eece87ffd6970cb83a75715824dce7": "包含服务代理导入和 ServiceMixin",
154
+ "c87a36fbb5183525d0006021aec56a91": "目标模型外键名称",
155
+ "c8d3e70199f75ca1f1d0bd9af1d62d38": "模型不存在。",
156
+ "c92e838c1513ce96008d7bfee201e1e9": "有效的数据源名称",
157
+ "ca660806a44ff651cd28cf4a3dddc686": "不记住提示答案",
158
+ "cb118a096d4c0e543062e79e4287982d": "仅更新 Git 跟踪的文件",
159
+ "cb5146e6905384a57eff6068ca059554": "发现所有模型,而未提示用户进行选择",
160
+ "cdd5413fd110557d536620d714eea126": "希望生成哪种类型的控制器?",
161
+ "cf97da6220d5e5745002134f79949c61": "要发现的数据源的名称",
162
+ "cfb27e4977e11d0bad249ce0272a0a61": "目标模型的 ID 属性的名称是什么?",
163
+ "d219d7a033c1d87e1e8de56f275f2b3d": "更新 package.json 和 LICENSE 中的许可",
164
+ "d3686d2cd4e6d5de11cd0e61e4c18819": "数据源支持的远程服务代理",
165
+ "d3750141fd303a7f87d4821a86d85c1c": "{0} 类型:",
166
+ "d480d5df7f792391f9d80684a78a2424": "将生成的源文件写入的目录",
167
+ "d71f61fa516dde9cd3dd3442238a5199": "{0} 名称:",
168
+ "d75571079943e2a3696adfd8787ecc0f": "选择要在项目中启用的功能部件",
169
+ "d8448d2597b2832ab43abba46a595c42": "用于此 CRUD 存储库的模型名称是什么?",
170
+ "d963128609dd73445bd8b96b6a34eb68": "{0} 的类型",
171
+ "da3f136dd75297a4944bd013b8e166ee": "使用 LoopBack 4 中的关系继续 Todo 示例。",
172
+ "db8c853ec3ce3b65e1513d198a9bd2e9": "启用 mocha",
173
+ "dc1e7407cdd64c32053abd0e52d19cb2": "请为定制 copyright/license 头提供文本行。",
174
+ "dd9b2e815dc04519c82ded4787c1a53a": "以下依赖项与 @loopback/cli@{0} 不兼容:",
175
+ "ddb67f6cad9d36d2acf42898c4fe58f5": "组件名称",
176
+ "e06dcb9b794d62f93022ac5a189f9072": "跳过项目依赖项升级",
177
+ "e1bf205e7a3c78d22506aad47301f87f": "[无任何内容时留空]",
178
+ "e4a87a58bb56e705349a97dbc23ecd6d": "缺省关系名称",
179
+ "e4ca073d5042621174cf6950ad25b40e": "项目描述:",
180
+ "e7fed9bec77250cd1afed48cd3356c4a": "目标模型上的主键",
181
+ "e9ad06649c24ed76b5185c3d705fa2a9": "为 {0} 选择连接器:",
182
+ "eaa7f2ab653690e3bfb202db78a00ff0": "使用 LoopBack 4 REST API 的简单 Express 应用程序。",
183
+ "ec0d3215aa6ad3aeae52f51dd7962879": "服务类型 - 代理、类或提供程序",
184
+ "ec5b5f03d997ee0da0157737a7b10d7b": "源模型",
185
+ "ed0e2f0329abfa07dba151a0b9e623c9": "显示如何通过组件和控制器、拦截器以及观察器编写应用程序的示例。",
186
+ "ed3bb197042a095ce19c1910d8d24226": "请输入属性名称:",
187
+ "ee3b2cc023d839e3e31d346de7cce9e7": "目标模型",
188
+ "f2b5f8ac7197fb5916c3fa3e0986b535": "如何通过 LoopBack 4 构建应用程序的教程示例。",
189
+ "f32b47dfce5e7d0077f977a61665cc29": "运行“npm run lint:fix”格式化代码...",
190
+ "f4b50a7f86e11ee0fc8cd471d54334f8": "已在 {2} 中创建 {0} {1}",
191
+ "f5b4bd2d7b921613e40c39a7bd0e22b2": "请访问 http://loopback.io/doc/en/lb4/Controller-generator.html,获取有关存储库发现方式的信息。",
192
+ "f5e20cc597e17deb35ef3ec4e55b707a": "版权所有者:",
193
+ "f757c71fa54de6559c39e4e7f63a601c": "请选择目标模型",
194
+ "f796881442145767c4d38290ef887bfe": "打印生成器的选项和用法",
195
+ "f7bf47d21b7e8bd36e22e5d3835008b5": "让我们将另一个属性添加到 {0}",
196
+ "f846f25f533c78e5eab3c1afa289ca12": "在完成时输入空属性名称",
197
+ "f87558eadaf216be8be9546d874d1301": "缺省外键名称",
198
+ "f8b4ea0079120a07a9aabec29c9023d7": "指定模型的有效标识属性名称",
199
+ "fae5b20162ed86b458a943aee0979f68": "使用 @loopback/build",
200
+ "fd9d1ae9ba5ae0b5d8f2b2dd40be8b5f": "以下位置找不到模型",
201
+ "fde67ed0176ea54fd0b2c6bb2fc72d13": "是否需要?:",
202
+ "ff0366defc888d15b3fbfc1458edf1c0": "{0} 中找不到任何存储库。",
203
+ "ffa8d88b9563dfa3e567974095c39140": "您未选择有效的模型"
204
+ }
@@ -0,0 +1,204 @@
1
+ {
2
+ "0115c9a527e1f9f5a354bbccdfe36112": "專案根目錄:",
3
+ "012baa262729b0782646db9528429b4c": "請選取儲存庫基礎類別",
4
+ "0258f65fb9328a8b055704469bebd5f9": "請指定基本路徑",
5
+ "02d863aa78876b4a4dfce688a7e6f917": "此範例示範如何新增驗證。",
6
+ "0609b5861fff6ee8047b75494e76af9e": "CRUD 作業的基本 HTTP 路徑名稱為何?",
7
+ "07ca1f30e0f0c91e5866d7c230c49157": "此範例說明使用 Prometheus 時的度量。",
8
+ "0872615fb20f996d5032526cb9af72b5": "已修改「待辦事項」應用程式,並採用 JWT 鑑別。",
9
+ "08a89a8f18d86a3e2f5ce66aeb8b183f": "{0} 的說明",
10
+ "0e2dd2688c9939e6e3bc58af3b5e7b17": "有效的儲存庫基礎類別",
11
+ "0eee394c1a8c898184aa039420afc594": "要複製的範例名稱",
12
+ "0f64c35f7cb25ea8a068e157cfd3f283": "具有 CRUD 函數的 REST 控制器",
13
+ "0f97dcea7dc212c905400da264b09cfd": "應用程式 {0} 已建立在 {1} 中。",
14
+ "1186c24b9452b67a24cb130b76dedffa": "在下列位置找不到模型:",
15
+ "12fb77f2e738ee14bda8660d5bcd894e": "含有這個模型並且支援模型探索的 dataSource 名稱",
16
+ "1464cbc7a74f0f53a7acec08c638b376": "您想更新 package.json 和 LICENSE 嗎?",
17
+ "1a0b53a1a5323fa92b6634ae16264892": "用來配置選項的 JSON 檔案名稱或值",
18
+ "1b41d41e2416c5a532ad20e34338a19b": "著作權擁有者",
19
+ "203aab8983bbe9ab5982baa09cd4b819": "空的控制器",
20
+ "21840a025087b2fd39b9dd37b7498473": "不支援使用類型輸入的預設輸入,來將 {0} 設為 {1}",
21
+ "22097832e90dd9481994416927ad1ecc": "{0} 的名稱",
22
+ "23fe9f126c159af41d59b9b16b594c05": "使用預製通訊協定的基本 RPC 伺服器。",
23
+ "25613bcc246af27bb9adbffb15808516": "升級專案相依關係",
24
+ "2619c842fedf79c6759daa768ba137fb": "專案原先是由 @loopback/cli@{0} 產生。",
25
+ "2680da6ffe85172d7053e97f8e21d1ff": "使用 LoopBack 4 的簡易 hello-world 應用程式.",
26
+ "2d3e0ddbc158e249765cb0bb8f544217": "使用 npm run lint:fix 將產生的程式碼格式化",
27
+ "2d5745f8e3d91cf55dcc84f354a43e6c": "容許 <sourceModel> 查詢包含相關 <destinationModel> 中的資料",
28
+ "2f557022f8a4e832fca5cd5a6d511f4c": "此範例顯示如何使用 Passport 模組,在 LoopBack 應用程式中實作鑑別。",
29
+ "3190bfdf06a7237a3593ef7291031507": "有效的基礎模型",
30
+ "3411753432848b4f4c6d3e3d73c09f4e": "陣列項目的類型:",
31
+ "34a1d0defdf4035829eb9d2bd790b061": "元件類別名稱:",
32
+ "35d135e52a365c5661db56d4aec07578": "來源模型主要索引鍵的類型是什麼?",
33
+ "35f7f1974164ebad7093cb795630a84f": "一旦停用大小寫混合,您可能需要在關係定義中指定這些自訂名稱。",
34
+ "377a709c8cc8bff5d976a4e0da06ef47": "ID 內容的名稱為何?",
35
+ "3a4acc1cb8bfc709718a49bfbeeb8460": "選取您想用來產生 CRUD REST 端點的模型",
36
+ "3b277c9f147030a09de73a478e4b83d7": "外部索引鍵參照直通模型上的來源模型",
37
+ "3cd28c0bc408abf4517f346f8cbe359e": "{0} 是 ID 內容?",
38
+ "3e7a1e0430f90996d14c5065c281fdcf": "是廣域攔截程式?",
39
+ "407fbe4b3fc192f22b4e90442c5980a1": "選取要探索的模型",
40
+ "40cf3ed09f01e543265ffe4519bd08a5": "{0} 的專案名稱",
41
+ "43036093921e1f4595967e0eb6fcdb8b": "想要如何繼續進行?",
42
+ "44ae9235f4eab024b184b59fedd71f9c": "立即中斷",
43
+ "44d2743e9d8e6106410b7fea1fcb69a0": "LoopBack 4 的範例延伸專案。",
44
+ "4670d311aa36fb13d626ec4ab55d4f19": "後續步驟:",
45
+ "48b75482f8e08e012b70a495df71d514": "將專案標示為專用(從 npm publish 排除)",
46
+ "4a33ae949b2b741e075c445df3cca1d7": "----- 自訂儲存庫 -----",
47
+ "4b1516463cdea3b248eeb97ac4948198": "容許其他(開放式)內容?",
48
+ "4d8a9b728bee844a0a6647379ab86826": "新增內容至 {0}",
49
+ "5225c88650d6a337fb4c215cca812f96": "此存取控制範例是從 LoopBack 3 儲存庫 loopback-example-access-control 移轉而來。",
50
+ "5226c72e763d99e9a316a9ce9875fde9": "包含 Dockerfile 和 .dockerignore",
51
+ "52e1f166e76bb9545daf180fb2e63782": "請選取關係類型",
52
+ "52f7167a7c775a0e66ef8d5b9ade1fc1": "{0} {1} 將建立於 src/{2}/{3}.{4}.ts 中",
53
+ "536024b4c8926c72705ad6796e7629b6": "布林,指出是否探索視圖",
54
+ "542d9b2310d9bb9f8c4bf792dbb7d6cd": "應用程式類別名稱:",
55
+ "57fc5239f1ed8537950c0dc19a61b85f": "選取要探索的連接器",
56
+ "5811f9c0ec7e60ecb58a58e1faa5574b": "啟用 prettier",
57
+ "59a4c6df82c2bbaf50592ee55982fe64": "使用 @loopback/build Helper(例如:lb-eslint)",
58
+ "5a0085f46605278c8b83284484cfa858": "排序廣域攔截程式時使用的群組名稱",
59
+ "5a5169e28fedd5752a79ae01155f47a1": "授權名稱:",
60
+ "5b6e1e532844d265ddfe06d8a15bdeba": "啟用 {0}",
61
+ "5bdddebdf72c7027a9e24aa500a35dd7": "預設值 {0}:",
62
+ "5eb4697c2c62ae3b805af415847dd069": "在下列位置找不到模型:",
63
+ "5f9d9ca636cc3bd7e133455d51fa410b": "請選取來源模型",
64
+ "6114abcc1315a8f1e0bef7748b00eb14": "使用預先配置的 VSCode 設定",
65
+ "61d043027dd4251cb87fe4419d35ffd8": "容許 {0} 查詢包含來自相關 {1} 實例的資料嗎?",
66
+ "635110efac9ccc161e67007e2df6db06": "要探索的綱目",
67
+ "6393c8247a668f277bae18632fb260c1": "排序時使用的觀察程式群組名稱",
68
+ "63a2b68c48f278cfafe6e2682b30e261": "安裝 prettier,以根據規則將程式碼格式化",
69
+ "64bbe2d519f72f60277b9661b313dab7": "專案名稱:",
70
+ "64e66b3917e80c0609371f314c1d87e0": "不正確的關係類型",
71
+ "66fbf32f221f83bbf88d3e7ed04f5724": "指定目錄,以便在其中放置 'model.model.ts' 檔案",
72
+ "67ee888416f9432e38942252993cc304": "類別不存在。請先使用 \"lb4 repository\" 指令來建立儲存庫。",
73
+ "685b2e167d6a8e5da8f24a8a889808ce": "變更預設套件管理程式",
74
+ "68a8b9c962c33e1c521e221b30409cd7": "請檢查變更日誌,以瞭解重大變更。",
75
+ "693de1283bf4c567269b4984d3d82d82": "關係 getter 的來源內容名稱(會是關係名稱)",
76
+ "6e6a3836ad202ae5c263855b6e98ac85": "使用 semver 語意檢查版本相容性",
77
+ "6faaa64820277d3607d43a208ce3da13": "已將範例複製到 {0}。",
78
+ "70067103913204b5125f9192be23086c": "建立新實例時是否省略 ID?",
79
+ "70819a2fcd43c1a5e08942229d51cd43": "如需取得如何探索模型的相關資訊,請造訪 http://loopback.io/doc/en/lb4/Controller-generator.html。",
80
+ "7228a5fab7ef8492cf66a3ef8df74ddf": "如果是從 dataSource 探索模型,請指定包含它的綱目",
81
+ "72e0cfd29751146d9e94bb4d5cf25133": "此範例應用程式示範如何使用 LoopBack 4 來實作多租戶。",
82
+ "7321493f5e514208aba16acbc3a8d1c9": "在下列位置找不到資料來源",
83
+ "74cc43ebc62b786995ac784b37d3764f": "因安裝相依關係錯誤而失敗",
84
+ "7652193b0c43b9ffe80339f63574cb63": "{0} 類別名稱:",
85
+ "76657b97b9993e79fdba1bff7c2a69ed": "新增 VSCode 配置檔",
86
+ "791d59188157facefbdbfb866792462e": "大小寫混合 (exampleColumn)(建議)",
87
+ "79461416ce81d6f5c3ce3418fc191224": "安裝 mocha 以執行測試",
88
+ "794df3791a8c800841516007427a2aa3": "授權",
89
+ "7bcd10e0c597ed32f22b06726d10cb2b": "您的 CRUD 儲存庫名稱為何?",
90
+ "7c811ec38c295f6eaa7fa52c1c0cfee1": "{0} 的專案根目錄",
91
+ "7c9111f852ea9bd35067a5f53540ff0b": "在 {0} 中找不到任何模型。",
92
+ "7d35e6a282ed68a01b4badfddb9dd412": "包含服務 Proxy 匯入項目和 ServiceMixin",
93
+ "815548e083b8b7ea5edd0e57df0bfd29": "包含儲存庫匯入項目和 RepositoryMixin",
94
+ "8340baa1142a43339a4df3a9ea93e9cb": "不自動安裝相依關係",
95
+ "84cee9d182963cbedca9286a040f1e9a": "跳過所有要求提供預設值或所提供值的確認提示",
96
+ "84d0d2cbd6faa568def78ab07ed7b81c": "升級可能會中斷現行專案。",
97
+ "86e3245551645cc680371ba55857f172": "如果是從 dataSource 探索模型,請指定其表格/視圖的名稱",
98
+ "87252b6b2ca8b638846fae8825f47ccc": "{0} 是自動產生的?",
99
+ "8727d7fdfe60608d53d81f7699671a74": "請輸入 {0} 的 ID 內容名稱:",
100
+ "87301db76b14083e67a5092c1bd04cd0": "裝載於 LoopBack 4 專案的 LoopBack 3 範例應用程式。",
101
+ "8ae4fe9c6f4bbdbe961a3e0f7fc88bfc": "請選取資料來源",
102
+ "8b4796b628fbc387d54d2d6857336613": "此範例顯示如何顯露 API,以上傳/下載檔案。",
103
+ "8b537f4c328d510bb54742e32de74071": "來源模型的 ID 內容名稱是什麼?",
104
+ "9028d3ea0ff5063cdfc59d7def551881": "外部索引鍵參照直通模型上的目標模型",
105
+ "912b3c6f2e4622df7f52697a7a23478e": "來源模型上的主要索引鍵",
106
+ "919886be4ae469dbab529c61acd85781": "請輸入連接器的套件名稱:",
107
+ "91cd2d832c4b723add34ca2db743b689": "要定義在目標模型上的外部索引鍵名稱",
108
+ "93a678d3a0375c0d3b52c7d8e938e019": "已中斷產生:{0}",
109
+ "93d2bb2103d07f905ef0e83ea0e63e0b": "您 LoopBack 3.x 應用程式的路徑。這可以是專案目錄(例如:\"my-lb3-app\")或伺服器檔案(例如:\"my-lb3-app/server/server.js\")。",
110
+ "958ae3d061270d7e85cfe6b9c191feaf": "連結至應用程式環境定義的本端服務提供者",
111
+ "982e471119e413bad610f51015bf80e0": "啟用 eslint",
112
+ "9885cdb6ead91df9a95786bad4e66702": "不轉換 (EXAMPLE_COLUMN)",
113
+ "998a1b696d7b016542c6ec0eacec2d1f": "直通模型",
114
+ "9a1f7d7f7e96f8fcf115ec7c7a661eb0": "選取您想產生儲存庫的模型",
115
+ "9a95948dd5623ba2e0486c3fbdd582af": "關係名稱",
116
+ "9d393adbce56c1a77f232c3d51256be2": "新增 linter,且其中含有預先配置的 lint 規則",
117
+ "9e2f6b14adb66ccd111b6a2fe13cc53c": "廣域攔截程式的群組名稱:('')",
118
+ "a0057f1a34b70e6758a963af3253a482": "包含儲存庫匯入項目和 RepositoryMixin",
119
+ "a0cbd2b9f0129c22074ec538a57f4f9c": "自訂授權行:",
120
+ "a15fa7a8c5d61e571d811ac04ae6fe99": "{0} 群組:",
121
+ "a1de2d58d7e3cd0b012c038b47e101a2": "選取使用慣例,以便將資料庫直欄名稱 (EXAMPLE_COLUMN) 轉換成模型內容名稱:",
122
+ "a261957414bba63a85459b733f597acb": "應用程式類別名稱",
123
+ "a4577a939c79c9d229d545d109fd60fa": "package.json 中未配置 'lint:fix' Script。",
124
+ "a47ec64e233351cf9f742a03f351c3d1": "會依連結至 ContextBindings.GLOBAL_INTERCEPTOR_ORDERED_GROUPS 的群組名稱陣列順序,來排序廣域攔截程式。請參閱 https://loopback.io/doc/en/lb4/Interceptors.html#order-of-invocation-for-interceptors。",
125
+ "a6493241c36ba3efc3d6a14ddcf87685": "此獨立式範例顯示如何使用 @loopback/context。",
126
+ "a79ec4dd1bb6d82f93af6170413a28a9": "請選取直通模型",
127
+ "a7f90f78abfa210e6d490268ea98ea80": "有效的模型名稱",
128
+ "a8dbe656477e8eab5c8763a9b1ff0f84": "選取要匯入的模型:",
129
+ "a958340547ffe336ce9bfdb0f5328d00": "Yarn 可供使用。您有意在預設情況下使用它嗎?",
130
+ "aa2ea1f299d456d85ba42aab96581fe5": "排除符合型樣的檔案",
131
+ "aa7af2a74b80e89d69be64f87140314e": "包含 ApiConnectComponent",
132
+ "ac0a68d90df6320ff454590a5732e748": "此範例顯示如何實作延伸點/延伸型樣。",
133
+ "ad5df45eb6b1da34ba7f75bec5b6a3d5": "用來指出廣域攔截程式的旗標",
134
+ "aebb8636dacf73a5ea8811fafbe3ed68": "內容類型:",
135
+ "afdaa0dc3b913a7b3bd5f20489f5c76d": "有效的基本路徑",
136
+ "b06ea51aa53522aff2889a64d68d1055": "關係類型",
137
+ "b0e22938bbbbeb3d5f4692390820f4de": "請選取模型基礎類別",
138
+ "b237a567cb959681e3967d2a35738c56": "示範 GraphQL 整合的範例。",
139
+ "b2816eddfa7b70b5b26d4c90c9e329bb": "目標模型主要索引鍵的類型是什麼?",
140
+ "b3c1afbfb1c87daaac414bab981ee7bd": "讀取檔案時發生錯誤",
141
+ "b48768d73c204b1a2ebcc3f44792b556": "無效的範例名稱:{0}\n執行 \"lb4 example --help\",以列印可用範例名稱清單。",
142
+ "b68ecbcaa4f94151658f5ad32e6cf6fd": "連結至應用程式環境定義的本端服務類別",
143
+ "b7fc5ab93877e57e2ffa139d8ba87a54": "針對已配置的選項顯示提示",
144
+ "b9356b7d2debc8b04dd6f2fd9bf5f83f": "您想複製的範例為何?",
145
+ "ba35aa839698960c52ab1e8514cacd43": "使用 webpack 來組合 @loopback/core 的範例。",
146
+ "bcebec8d7974acc21a208c7325a06e9c": "簡化的「待辦事項」範例版本,只需要一個模型和一個資料來源。",
147
+ "bde86a06584f0c0cbf30526a8d408efd": "來源模型上主要索引鍵的類型",
148
+ "be65fa55f75dd126a2af5ec2ad4b8f8b": "此範例說明如何整合 SOAP Web 服務。",
149
+ "be687f67487ae57f311148f55cc2df76": "要定義在來源模型上的外部索引鍵名稱",
150
+ "be7f5cb5b6a0fce7004ae6adc772e30b": "目的地模型上主要索引鍵的類型",
151
+ "bfd42878b3c50994368322098aed9e42": "包含 Dockerfile 和 .dockerignore",
152
+ "c1f96ff7ee37bcc6aa150ae5d0dbc3bb": "您 ID 的類型為何?",
153
+ "c3eece87ffd6970cb83a75715824dce7": "包含服務 Proxy 匯入項目和 ServiceMixin",
154
+ "c87a36fbb5183525d0006021aec56a91": "目的地模型的外部索引鍵名稱",
155
+ "c8d3e70199f75ca1f1d0bd9af1d62d38": "模型不存在。",
156
+ "c92e838c1513ce96008d7bfee201e1e9": "有效的資料來源名稱",
157
+ "ca660806a44ff651cd28cf4a3dddc686": "不記住提示回答",
158
+ "cb118a096d4c0e543062e79e4287982d": "只更新 Git 追蹤檔案",
159
+ "cb5146e6905384a57eff6068ca059554": "探索所有模型,而不提示使用者選取",
160
+ "cdd5413fd110557d536620d714eea126": "您想產生哪種類型的控制器?",
161
+ "cf97da6220d5e5745002134f79949c61": "要探索的資料來源名稱",
162
+ "cfb27e4977e11d0bad249ce0272a0a61": "目標模型的 ID 內容名稱是什麼?",
163
+ "d219d7a033c1d87e1e8de56f275f2b3d": "更新 package.json 和 LICENSE 中的授權",
164
+ "d3686d2cd4e6d5de11cd0e61e4c18819": "資料來源所支援的遠端服務 Proxy",
165
+ "d3750141fd303a7f87d4821a86d85c1c": "{0} 類型:",
166
+ "d480d5df7f792391f9d80684a78a2424": "要寫入產生之來源檔案的目錄",
167
+ "d71f61fa516dde9cd3dd3442238a5199": "{0} 名稱:",
168
+ "d75571079943e2a3696adfd8787ecc0f": "選取要在專案中啟用的特性",
169
+ "d8448d2597b2832ab43abba46a595c42": "要與這個 CRUD 儲存庫搭配使用的模型名稱為何?",
170
+ "d963128609dd73445bd8b96b6a34eb68": "{0} 的類型",
171
+ "da3f136dd75297a4944bd013b8e166ee": "「待辦事項」範例的延續,其使用 LoopBack 4 中的關係。",
172
+ "db8c853ec3ce3b65e1513d198a9bd2e9": "啟用 mocha",
173
+ "dc1e7407cdd64c32053abd0e52d19cb2": "請提供文字行來作為自訂著作權/授權標頭。",
174
+ "dd9b2e815dc04519c82ded4787c1a53a": "下列相依關係不相容於 @loopback/cli@{0}:",
175
+ "ddb67f6cad9d36d2acf42898c4fe58f5": "元件名稱",
176
+ "e06dcb9b794d62f93022ac5a189f9072": "跳過升級專案相依關係",
177
+ "e1bf205e7a3c78d22506aad47301f87f": "[留白表示「無」]",
178
+ "e4a87a58bb56e705349a97dbc23ecd6d": "預設關係名稱",
179
+ "e4ca073d5042621174cf6950ad25b40e": "專案說明:",
180
+ "e7fed9bec77250cd1afed48cd3356c4a": "目的地模型上的主要索引鍵",
181
+ "e9ad06649c24ed76b5185c3d705fa2a9": "選取 {0} 的連接器:",
182
+ "eaa7f2ab653690e3bfb202db78a00ff0": "使用 LoopBack 4 REST API 的 Express 簡易應用程式。",
183
+ "ec0d3215aa6ad3aeae52f51dd7962879": "服務類型 - Proxy、類別或提供者",
184
+ "ec5b5f03d997ee0da0157737a7b10d7b": "來源模型",
185
+ "ed0e2f0329abfa07dba151a0b9e623c9": "此範例顯示如何從元件和控制器、攔截程式和觀察程式來編製應用程式。",
186
+ "ed3bb197042a095ce19c1910d8d24226": "輸入內容名稱:",
187
+ "ee3b2cc023d839e3e31d346de7cce9e7": "目的地模型",
188
+ "f2b5f8ac7197fb5916c3fa3e0986b535": "此指導教學範例說明如何使用 LoopBack 4 來建置應用程式。",
189
+ "f32b47dfce5e7d0077f977a61665cc29": "正在執行 'npm run lint:fix',以便將程式碼格式化...",
190
+ "f4b50a7f86e11ee0fc8cd471d54334f8": "{0} {1} 已建立於 {2}",
191
+ "f5b4bd2d7b921613e40c39a7bd0e22b2": "如需取得如何探索儲存庫的相關資訊,請造訪 http://loopback.io/doc/en/lb4/Controller-generator.html。",
192
+ "f5e20cc597e17deb35ef3ec4e55b707a": "著作權擁有者:",
193
+ "f757c71fa54de6559c39e4e7f63a601c": "請選取目標模型",
194
+ "f796881442145767c4d38290ef887bfe": "列印產生器的選項和用法",
195
+ "f7bf47d21b7e8bd36e22e5d3835008b5": "請新增另一個內容至 {0}",
196
+ "f846f25f533c78e5eab3c1afa289ca12": "完成時,請輸入空白內容名稱",
197
+ "f87558eadaf216be8be9546d874d1301": "預設外部索引鍵名稱",
198
+ "f8b4ea0079120a07a9aabec29c9023d7": "所指定模型的有效 ID 內容名稱",
199
+ "fae5b20162ed86b458a943aee0979f68": "使用 @loopback/build",
200
+ "fd9d1ae9ba5ae0b5d8f2b2dd40be8b5f": "在下列位置找不到模型:",
201
+ "fde67ed0176ea54fd0b2c6bb2fc72d13": "必要的?",
202
+ "ff0366defc888d15b3fbfc1458edf1c0": "在 {0} 中找不到任何儲存庫。",
203
+ "ffa8d88b9563dfa3e567974095c39140": "您未選取有效的模型"
204
+ }
@@ -1,90 +1,189 @@
1
- // Copyright IBM Corp. 2017. All Rights Reserved.
1
+ // Copyright IBM Corp. 2017,2020. All Rights Reserved.
2
2
  // Node module: @loopback/cli
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
5
5
 
6
6
  'use strict';
7
- const Generator = require('yeoman-generator');
7
+ const BaseGenerator = require('./base-generator');
8
+ const debug = require('./debug')('artifact-generator');
8
9
  const utils = require('./utils');
9
- const StatusConflicter = utils.StatusConflicter;
10
+ const path = require('path');
11
+ const chalk = require('chalk');
12
+ const g = require('./globalize');
10
13
 
11
- module.exports = class ArtifactGenerator extends Generator {
14
+ module.exports = class ArtifactGenerator extends BaseGenerator {
12
15
  // Note: arguments and options should be defined in the constructor.
13
16
  constructor(args, opts) {
14
17
  super(args, opts);
15
- this._setupGenerator();
18
+ // how classes are separated when the output contains more than one
19
+ this.classNameSeparator = ', ';
16
20
  }
17
21
 
18
22
  _setupGenerator() {
23
+ super._setupGenerator();
19
24
  this.argument('name', {
20
25
  type: String,
21
26
  required: false,
22
- description: 'Name for the ' + this.artifactInfo.type,
27
+ description: g.f('Name for the %s', this.artifactInfo.type),
23
28
  });
29
+ }
30
+
31
+ setOptions() {
24
32
  // argument validation
25
- if (this.args.length) {
26
- const validationMsg = utils.validateClassName(this.args[0]);
33
+ const name = this.options.name;
34
+ if (name) {
35
+ const validationMsg = utils.validateClassName(name);
27
36
  if (typeof validationMsg === 'string') throw new Error(validationMsg);
28
37
  }
29
- this.artifactInfo.name = this.args[0];
30
- this.artifactInfo.defaultName = 'new';
31
- this.conflicter = new StatusConflicter(
32
- this.env.adapter,
33
- this.options.force
38
+ this.artifactInfo.name = name;
39
+ this.artifactInfo.relPath = path.relative(
40
+ this.destinationPath(),
41
+ this.artifactInfo.outDir,
34
42
  );
43
+ return super.setOptions();
35
44
  }
36
45
 
37
- /**
38
- * Override the usage text by replacing `yo loopback4:` with `lb4 `.
39
- */
40
- usage() {
41
- const text = super.usage();
42
- return text.replace(/^yo loopback4:/g, 'lb4 ');
43
- }
46
+ promptArtifactName() {
47
+ debug('Prompting for artifact name');
48
+ if (this.shouldExit()) return false;
44
49
 
45
- /**
46
- * Checks if current directory is a LoopBack project by checking for
47
- * keyword 'loopback' under 'keywords' attribute in package.json.
48
- * 'keywords' is an array
49
- */
50
- checkLoopBackProject() {
51
- const pkg = this.fs.readJSON(this.destinationPath('package.json'));
52
- const key = 'loopback';
53
- if (!pkg) throw new Error('unable to load package.json');
54
- if (!pkg.keywords || !pkg.keywords.includes(key))
55
- throw new Error('keywords does not map to loopback in package.json');
56
- return;
57
- }
50
+ if (this.options.name) {
51
+ Object.assign(this.artifactInfo, {name: this.options.name});
52
+ return;
53
+ }
58
54
 
59
- promptArtifactName() {
60
55
  const prompts = [
61
56
  {
62
57
  type: 'input',
63
58
  name: 'name',
64
- message: utils.toClassName(this.artifactInfo.type) + ' class name:', // capitalization
59
+ // capitalization
60
+ message: g.f(
61
+ '%s class name:',
62
+ utils.toClassName(this.artifactInfo.type),
63
+ ),
65
64
  when: this.artifactInfo.name === undefined,
65
+ default: this.artifactInfo.defaultName,
66
66
  validate: utils.validateClassName,
67
67
  },
68
68
  ];
69
69
 
70
70
  return this.prompt(prompts).then(props => {
71
71
  Object.assign(this.artifactInfo, props);
72
+ return props;
72
73
  });
73
74
  }
74
75
 
76
+ /**
77
+ * remind user the input might get changed if it contains _ or accented char
78
+ **/
79
+ promptWarningMsgForName() {
80
+ utils.logNamingIssues(this.artifactInfo.name, this.log.bind(this));
81
+ }
82
+
83
+ /**
84
+ * Inform user what model/file names will be created
85
+ *
86
+ * e.g: promptClassFileName('model', 'models', 'MyModel');
87
+ * >> Model MyModel will be created in src/models/my-model.model.ts
88
+ **/
89
+ promptClassFileName(type, typePlural, name) {
90
+ this.log(
91
+ g.f(
92
+ '%s %s will be created in src/%s/%s.%s.ts',
93
+ utils.toClassName(type),
94
+ chalk.yellow(name),
95
+ typePlural,
96
+ chalk.yellow(utils.toFileName(name)),
97
+ type,
98
+ ),
99
+ );
100
+ this.log();
101
+ }
102
+
75
103
  scaffold() {
104
+ debug('Scaffolding artifact(s)');
105
+ if (this.shouldExit()) return false;
76
106
  // Capitalize class name
77
107
  this.artifactInfo.name = utils.toClassName(this.artifactInfo.name);
78
108
 
79
109
  // Copy template files from ./templates
80
110
  // Renaming of the files should be done in the generator inheriting from this one
81
- this.fs.copyTpl(
111
+ this.copyTemplatedFiles(
82
112
  this.templatePath('**/*'),
83
113
  this.destinationPath(),
84
114
  this.artifactInfo,
85
- {},
86
- {globOptions: {dot: true}}
87
115
  );
88
- return;
116
+ }
117
+
118
+ async end() {
119
+ if (this.shouldExit()) {
120
+ await super.end();
121
+ return;
122
+ }
123
+
124
+ if (this._isGenerationSuccessful()) {
125
+ await this._updateIndexFiles();
126
+
127
+ const classes = this.artifactInfo.name
128
+ .split(this.classNameSeparator)
129
+ .map(utils.toClassName);
130
+ const classesOutput = classes.join(this.classNameSeparator);
131
+
132
+ // User Output
133
+ this.log();
134
+ this.log(
135
+ g.f(
136
+ '%s %s was/were created in %s',
137
+ utils.toClassName(this.artifactInfo.type),
138
+ chalk.yellow(classesOutput),
139
+ this.artifactInfo.relPath,
140
+ ),
141
+ );
142
+
143
+ this.log();
144
+ }
145
+
146
+ await super.end();
147
+ }
148
+
149
+ /**
150
+ * Update the index.ts in this.artifactInfo.outDir. Creates it if it
151
+ * doesn't exist.
152
+ * this.artifactInfo.outFile is what is exported from the file.
153
+ *
154
+ * Both those properties must be present for this to happen. Optionally,
155
+ * this can be disabled even if the properties are present by setting:
156
+ * this.artifactInfo.disableIndexUpdate = true;
157
+ *
158
+ * Multiple indexes / files can be updated by providing an array of
159
+ * index update objects as follows:
160
+ * this.artifactInfo.indexesToBeUpdated = [{
161
+ * dir: 'directory in which to update index.ts',
162
+ * file: 'file to add to index.ts',
163
+ * }, {dir: '...', file: '...'}]
164
+ */
165
+ async _updateIndexFiles() {
166
+ debug(`Indexes to be updated ${this.artifactInfo.indexesToBeUpdated}`);
167
+ // Index Update Disabled
168
+ if (this.artifactInfo.disableIndexUpdate) return;
169
+
170
+ if (!this.artifactInfo.indexesToBeUpdated) {
171
+ this.artifactInfo.indexesToBeUpdated = [];
172
+ }
173
+
174
+ // No Array given for Index Update, Create default array
175
+ if (
176
+ this.artifactInfo.outDir &&
177
+ this.artifactInfo.outFile &&
178
+ this.artifactInfo.indexesToBeUpdated.length === 0
179
+ ) {
180
+ this.artifactInfo.indexesToBeUpdated = [
181
+ {dir: this.artifactInfo.outDir, file: this.artifactInfo.outFile},
182
+ ];
183
+ }
184
+
185
+ for (const idx of this.artifactInfo.indexesToBeUpdated) {
186
+ await this._updateIndexFile(idx.dir, idx.file);
187
+ }
89
188
  }
90
189
  };