@pangza/orm 0.0.0-stage → 1.0.1

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 (142) hide show
  1. package/README.md +2 -2
  2. package/dist/BaseMapper.d.ts +112 -0
  3. package/dist/BaseMapper.d.ts.map +1 -0
  4. package/dist/BaseMapper.js +653 -0
  5. package/dist/BaseMapper.js.map +1 -0
  6. package/dist/DataSource.d.ts +61 -0
  7. package/dist/DataSource.d.ts.map +1 -0
  8. package/dist/DataSource.js +350 -0
  9. package/dist/DataSource.js.map +1 -0
  10. package/dist/Db.d.ts +67 -0
  11. package/dist/Db.d.ts.map +1 -0
  12. package/dist/Db.js +222 -0
  13. package/dist/Db.js.map +1 -0
  14. package/dist/IdType.d.ts +22 -0
  15. package/dist/IdType.d.ts.map +1 -0
  16. package/dist/IdType.js +34 -0
  17. package/dist/IdType.js.map +1 -0
  18. package/dist/QueryWrapper.d.ts +110 -0
  19. package/dist/QueryWrapper.d.ts.map +1 -0
  20. package/dist/QueryWrapper.js +343 -0
  21. package/dist/QueryWrapper.js.map +1 -0
  22. package/dist/config.d.ts +12 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +80 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/dialect.d.ts +41 -0
  27. package/dist/dialect.d.ts.map +1 -0
  28. package/dist/dialect.js +171 -0
  29. package/dist/dialect.js.map +1 -0
  30. package/dist/enable.d.ts +12 -0
  31. package/dist/enable.d.ts.map +1 -0
  32. package/dist/enable.js +31 -0
  33. package/dist/enable.js.map +1 -0
  34. package/dist/entityDecorators.d.ts +77 -0
  35. package/dist/entityDecorators.d.ts.map +1 -0
  36. package/dist/entityDecorators.js +150 -0
  37. package/dist/entityDecorators.js.map +1 -0
  38. package/dist/errors.d.ts +11 -0
  39. package/dist/errors.d.ts.map +1 -0
  40. package/dist/errors.js +22 -0
  41. package/dist/errors.js.map +1 -0
  42. package/dist/fieldSelect.d.ts +49 -0
  43. package/dist/fieldSelect.d.ts.map +1 -0
  44. package/dist/fieldSelect.js +53 -0
  45. package/dist/fieldSelect.js.map +1 -0
  46. package/dist/fill.d.ts +8 -0
  47. package/dist/fill.d.ts.map +1 -0
  48. package/dist/fill.js +47 -0
  49. package/dist/fill.js.map +1 -0
  50. package/dist/flag.d.ts +2 -0
  51. package/dist/flag.d.ts.map +1 -0
  52. package/dist/flag.js +8 -0
  53. package/dist/flag.js.map +1 -0
  54. package/dist/hydrate.d.ts +38 -0
  55. package/dist/hydrate.d.ts.map +1 -0
  56. package/dist/hydrate.js +325 -0
  57. package/dist/hydrate.js.map +1 -0
  58. package/dist/identifier.d.ts +14 -0
  59. package/dist/identifier.d.ts.map +1 -0
  60. package/dist/identifier.js +51 -0
  61. package/dist/identifier.js.map +1 -0
  62. package/dist/index.d.ts +41 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +122 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/relation.d.ts +72 -0
  67. package/dist/relation.d.ts.map +1 -0
  68. package/dist/relation.js +150 -0
  69. package/dist/relation.js.map +1 -0
  70. package/dist/resultMap.d.ts +7 -0
  71. package/dist/resultMap.d.ts.map +1 -0
  72. package/dist/resultMap.js +25 -0
  73. package/dist/resultMap.js.map +1 -0
  74. package/dist/security.d.ts +16 -0
  75. package/dist/security.d.ts.map +1 -0
  76. package/dist/security.js +50 -0
  77. package/dist/security.js.map +1 -0
  78. package/dist/sqlDecorators.d.ts +60 -0
  79. package/dist/sqlDecorators.d.ts.map +1 -0
  80. package/dist/sqlDecorators.js +147 -0
  81. package/dist/sqlDecorators.js.map +1 -0
  82. package/dist/sqlLog.d.ts +30 -0
  83. package/dist/sqlLog.d.ts.map +1 -0
  84. package/dist/sqlLog.js +183 -0
  85. package/dist/sqlLog.js.map +1 -0
  86. package/dist/sqlTemplate.d.ts +38 -0
  87. package/dist/sqlTemplate.d.ts.map +1 -0
  88. package/dist/sqlTemplate.js +112 -0
  89. package/dist/sqlTemplate.js.map +1 -0
  90. package/dist/table.d.ts +17 -0
  91. package/dist/table.d.ts.map +1 -0
  92. package/dist/table.js +55 -0
  93. package/dist/table.js.map +1 -0
  94. package/dist/tableSearch.d.ts +72 -0
  95. package/dist/tableSearch.d.ts.map +1 -0
  96. package/dist/tableSearch.js +232 -0
  97. package/dist/tableSearch.js.map +1 -0
  98. package/dist/transactional.d.ts +27 -0
  99. package/dist/transactional.d.ts.map +1 -0
  100. package/dist/transactional.js +57 -0
  101. package/dist/transactional.js.map +1 -0
  102. package/dist/types.d.ts +155 -0
  103. package/dist/types.d.ts.map +1 -0
  104. package/dist/types.js +3 -0
  105. package/dist/types.js.map +1 -0
  106. package/dist/xml/MapperXml.d.ts +24 -0
  107. package/dist/xml/MapperXml.d.ts.map +1 -0
  108. package/dist/xml/MapperXml.js +92 -0
  109. package/dist/xml/MapperXml.js.map +1 -0
  110. package/dist/xml/execute.d.ts +12 -0
  111. package/dist/xml/execute.d.ts.map +1 -0
  112. package/dist/xml/execute.js +54 -0
  113. package/dist/xml/execute.js.map +1 -0
  114. package/dist/xml/index.d.ts +11 -0
  115. package/dist/xml/index.d.ts.map +1 -0
  116. package/dist/xml/index.js +29 -0
  117. package/dist/xml/index.js.map +1 -0
  118. package/dist/xml/loadMappers.d.ts +14 -0
  119. package/dist/xml/loadMappers.d.ts.map +1 -0
  120. package/dist/xml/loadMappers.js +171 -0
  121. package/dist/xml/loadMappers.js.map +1 -0
  122. package/dist/xml/parseMapperXml.d.ts +6 -0
  123. package/dist/xml/parseMapperXml.d.ts.map +1 -0
  124. package/dist/xml/parseMapperXml.js +225 -0
  125. package/dist/xml/parseMapperXml.js.map +1 -0
  126. package/dist/xml/registry.d.ts +15 -0
  127. package/dist/xml/registry.d.ts.map +1 -0
  128. package/dist/xml/registry.js +57 -0
  129. package/dist/xml/registry.js.map +1 -0
  130. package/dist/xml/renderSql.d.ts +6 -0
  131. package/dist/xml/renderSql.d.ts.map +1 -0
  132. package/dist/xml/renderSql.js +187 -0
  133. package/dist/xml/renderSql.js.map +1 -0
  134. package/dist/xml/types.d.ts +52 -0
  135. package/dist/xml/types.d.ts.map +1 -0
  136. package/dist/xml/types.js +3 -0
  137. package/dist/xml/types.js.map +1 -0
  138. package/dist/xml/xmlMapper.d.ts +16 -0
  139. package/dist/xml/xmlMapper.d.ts.map +1 -0
  140. package/dist/xml/xmlMapper.js +49 -0
  141. package/dist/xml/xmlMapper.js.map +1 -0
  142. package/package.json +35 -4
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MapperXml = MapperXml;
4
+ exports.getMapperXmlNamespace = getMapperXmlNamespace;
5
+ exports.markSqlMethodBound = markSqlMethodBound;
6
+ exports.isSqlMethodBound = isSqlMethodBound;
7
+ exports.bootstrapXmlMappers = bootstrapXmlMappers;
8
+ require("reflect-metadata");
9
+ const execute_1 = require("./execute");
10
+ const loadMappers_1 = require("./loadMappers");
11
+ const registry_1 = require("./registry");
12
+ const PARAM_NAMES_KEY = Symbol.for("pangza.orm.sqlParamNames");
13
+ const SQL_BOUND_KEY = Symbol.for("pangza.orm.sqlBound");
14
+ const MAPPER_XML_NS_KEY = Symbol.for("pangza.orm.mapperXmlNamespace");
15
+ const MAPPER_XML_DS_KEY = Symbol.for("pangza.orm.mapperXmlDatasource");
16
+ function getNamedParams(target, methodName) {
17
+ return (Reflect.getOwnMetadata(PARAM_NAMES_KEY, target, methodName) ?? {});
18
+ }
19
+ function bindMethod(proto, methodName, namespace, datasource) {
20
+ const desc = Object.getOwnPropertyDescriptor(proto, methodName);
21
+ if (!desc || typeof desc.value !== "function")
22
+ return;
23
+ if (desc.value[SQL_BOUND_KEY]) {
24
+ throw new Error(`@MapperXml 方法 ${methodName} 已绑定 @Select/@Insert 等注解,不能再绑 XML`);
25
+ }
26
+ const named = () => getNamedParams(proto, methodName);
27
+ const wrapped = async function (...args) {
28
+ (0, loadMappers_1.ensureXmlMappersLoaded)();
29
+ const stmt = (0, registry_1.getXmlStatement)(namespace, methodName);
30
+ if (!stmt) {
31
+ throw new Error(`XML 未找到语句 ${namespace}.${methodName}(请检查 mapperLocations 与 id)`);
32
+ }
33
+ return (0, execute_1.executeXmlStatement)(namespace, methodName, {
34
+ args,
35
+ namedByIndex: named(),
36
+ datasource,
37
+ });
38
+ };
39
+ wrapped[SQL_BOUND_KEY] = "xml";
40
+ Object.defineProperty(proto, methodName, {
41
+ ...desc,
42
+ value: wrapped,
43
+ });
44
+ }
45
+ /**
46
+ * 将类方法绑定到 XML namespace(方法名 = 语句 id)。
47
+ *
48
+ * @example
49
+ * @MapperXml("com.pangza.UserMapper")
50
+ * class UserMapper {
51
+ * findByRole(@Param("roleId") roleId: number): Promise<any[]> {
52
+ * throw new Error("bound by XML");
53
+ * }
54
+ * }
55
+ */
56
+ function MapperXml(namespace, options) {
57
+ const ns = String(namespace ?? "").trim();
58
+ if (!ns)
59
+ throw new Error("@MapperXml namespace 不能为空");
60
+ const datasource = options?.datasource?.trim() || undefined;
61
+ return (ctor) => {
62
+ const Ctor = ctor;
63
+ Reflect.defineMetadata(MAPPER_XML_NS_KEY, ns, Ctor);
64
+ if (datasource) {
65
+ Reflect.defineMetadata(MAPPER_XML_DS_KEY, datasource, Ctor);
66
+ }
67
+ const proto = Ctor.prototype;
68
+ for (const key of Object.getOwnPropertyNames(proto)) {
69
+ if (key === "constructor")
70
+ continue;
71
+ const desc = Object.getOwnPropertyDescriptor(proto, key);
72
+ if (!desc || typeof desc.value !== "function")
73
+ continue;
74
+ bindMethod(proto, key, ns, datasource);
75
+ }
76
+ };
77
+ }
78
+ function getMapperXmlNamespace(ctor) {
79
+ return Reflect.getOwnMetadata(MAPPER_XML_NS_KEY, ctor);
80
+ }
81
+ /** 标记方法已由 @Select 等绑定,供 MapperXml 冲突检测 */
82
+ function markSqlMethodBound(fn, kind = "annotation") {
83
+ fn[SQL_BOUND_KEY] = kind;
84
+ }
85
+ function isSqlMethodBound(fn) {
86
+ return !!fn[SQL_BOUND_KEY];
87
+ }
88
+ /** 启动时加载 XML(若配置了 mapperLocations) */
89
+ function bootstrapXmlMappers() {
90
+ (0, loadMappers_1.loadXmlMappers)();
91
+ }
92
+ //# sourceMappingURL=MapperXml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapperXml.js","sourceRoot":"","sources":["../../src/xml/MapperXml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { XmlStatement } from "./types";
2
+ export interface ExecuteXmlOptions {
3
+ datasource?: string;
4
+ /** 直接传入命名参数对象(xmlMapper 用);与 args 二选一优先 paramObject */
5
+ paramObject?: Record<string, unknown>;
6
+ args?: unknown[];
7
+ namedByIndex?: Record<number, string>;
8
+ }
9
+ /** 渲染并执行已注册的 XML 语句 */
10
+ export declare function executeXmlStatement(namespace: string, id: string, options?: ExecuteXmlOptions): Promise<unknown>;
11
+ export declare function executeParsedStatement(stmt: XmlStatement, options?: ExecuteXmlOptions): Promise<unknown>;
12
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/xml/execute.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAQD,uBAAuB;AACvB,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,OAAO,CAAC,CA6BlB"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.executeXmlStatement = executeXmlStatement;
7
+ exports.executeParsedStatement = executeParsedStatement;
8
+ const Db_1 = __importDefault(require("../Db"));
9
+ const resultMap_1 = require("../resultMap");
10
+ const sqlTemplate_1 = require("../sqlTemplate");
11
+ const registry_1 = require("./registry");
12
+ const renderSql_1 = require("./renderSql");
13
+ function resolveDatasource(stmt, override) {
14
+ if (override?.trim())
15
+ return override.trim();
16
+ if (stmt.datasource?.trim())
17
+ return stmt.datasource.trim();
18
+ return "default";
19
+ }
20
+ /** 渲染并执行已注册的 XML 语句 */
21
+ async function executeXmlStatement(namespace, id, options = {}) {
22
+ const stmt = (0, registry_1.getXmlStatement)(namespace, id);
23
+ if (!stmt) {
24
+ throw new Error(`未找到 XML 语句 ${namespace}.${id}`);
25
+ }
26
+ return executeParsedStatement(stmt, options);
27
+ }
28
+ async function executeParsedStatement(stmt, options = {}) {
29
+ const ctx = options.paramObject ??
30
+ (0, sqlTemplate_1.buildParamContext)(options.args ?? [], options.namedByIndex ?? {});
31
+ const fragments = (0, registry_1.getXmlFragments)(stmt.namespace);
32
+ const template = (0, renderSql_1.renderStatementSql)(stmt.nodes, ctx, fragments);
33
+ if (!template) {
34
+ throw new Error(`XML 语句 ${stmt.namespace}.${stmt.id} 渲染结果为空(file=${stmt.sourceFile ?? "?"})`);
35
+ }
36
+ const parsed = (0, sqlTemplate_1.parseMybatisSql)(template, ctx);
37
+ const datasource = resolveDatasource(stmt, options.datasource);
38
+ const result = await Db_1.default.queryOn(datasource, parsed.sql, parsed.params);
39
+ if (stmt.kind === "select") {
40
+ return (0, resultMap_1.mapResultRows)(result ?? []);
41
+ }
42
+ const dialect = Db_1.default.getDialect(datasource);
43
+ if (stmt.kind === "insert") {
44
+ if (Array.isArray(result) && result[0] && typeof result[0] === "object") {
45
+ const row = result[0];
46
+ const first = Object.values(row)[0];
47
+ if (first != null)
48
+ return Number(first);
49
+ }
50
+ return dialect.extractInsertId(result, "id", false);
51
+ }
52
+ return dialect.extractAffectedRows(result);
53
+ }
54
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/xml/execute.ts"],"names":[],"mappings":";;;;;AAsBA,kDAUC;AAED,wDAgCC;AAlED,+CAA+C;AAC/C,4CAA6C;AAC7C,gDAAoE;AACpE,yCAA8D;AAC9D,2CAAiD;AAWjD,SAAS,iBAAiB,CAAC,IAAkB,EAAE,QAAiB;IAC9D,IAAI,QAAQ,EAAE,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC3D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,uBAAuB;AAChB,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,EAAU,EACV,UAA6B,EAAE;IAE/B,MAAM,IAAI,GAAG,IAAA,0BAAe,EAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,IAAkB,EAClB,UAA6B,EAAE;IAE/B,MAAM,GAAG,GACP,OAAO,CAAC,WAAW;QACnB,IAAA,+BAAiB,EAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,IAAA,0BAAe,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAA,8BAAkB,EAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,UAAU,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,gBAAgB,IAAI,CAAC,UAAU,IAAI,GAAG,GAAG,CAC7E,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,6BAAe,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,YAAE,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEvE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,IAAA,yBAAa,EAAE,MAA0B,IAAI,EAAE,CAAoB,CAAC;IAC7E,CAAC;IAED,MAAM,OAAO,GAAG,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAA4B,CAAC;YACjD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { parseMapperXml } from "./parseMapperXml";
2
+ export { renderStatementSql, evalTest } from "./renderSql";
3
+ export { loadXmlMappers, ensureXmlMappersLoaded, resetXmlLoadState, watchXmlMappers, isXmlMappersLoaded, } from "./loadMappers";
4
+ export { clearXmlRegistry, getXmlStatement, getXmlNamespace, listXmlNamespaces, countXmlStatements, } from "./registry";
5
+ export { executeXmlStatement } from "./execute";
6
+ export { MapperXml, bootstrapXmlMappers, getMapperXmlNamespace } from "./MapperXml";
7
+ export { xmlMapper } from "./xmlMapper";
8
+ export type { XmlMapperApi } from "./xmlMapper";
9
+ export type { MapperXmlOptions } from "./MapperXml";
10
+ export type { SqlNode, XmlStatement, XmlStatementKind, XmlMapperFile, } from "./types";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xml/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EACV,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,aAAa,GACd,MAAM,SAAS,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.xmlMapper = exports.getMapperXmlNamespace = exports.bootstrapXmlMappers = exports.MapperXml = exports.executeXmlStatement = exports.countXmlStatements = exports.listXmlNamespaces = exports.getXmlNamespace = exports.getXmlStatement = exports.clearXmlRegistry = exports.isXmlMappersLoaded = exports.watchXmlMappers = exports.resetXmlLoadState = exports.ensureXmlMappersLoaded = exports.loadXmlMappers = exports.evalTest = exports.renderStatementSql = exports.parseMapperXml = void 0;
4
+ var parseMapperXml_1 = require("./parseMapperXml");
5
+ Object.defineProperty(exports, "parseMapperXml", { enumerable: true, get: function () { return parseMapperXml_1.parseMapperXml; } });
6
+ var renderSql_1 = require("./renderSql");
7
+ Object.defineProperty(exports, "renderStatementSql", { enumerable: true, get: function () { return renderSql_1.renderStatementSql; } });
8
+ Object.defineProperty(exports, "evalTest", { enumerable: true, get: function () { return renderSql_1.evalTest; } });
9
+ var loadMappers_1 = require("./loadMappers");
10
+ Object.defineProperty(exports, "loadXmlMappers", { enumerable: true, get: function () { return loadMappers_1.loadXmlMappers; } });
11
+ Object.defineProperty(exports, "ensureXmlMappersLoaded", { enumerable: true, get: function () { return loadMappers_1.ensureXmlMappersLoaded; } });
12
+ Object.defineProperty(exports, "resetXmlLoadState", { enumerable: true, get: function () { return loadMappers_1.resetXmlLoadState; } });
13
+ Object.defineProperty(exports, "watchXmlMappers", { enumerable: true, get: function () { return loadMappers_1.watchXmlMappers; } });
14
+ Object.defineProperty(exports, "isXmlMappersLoaded", { enumerable: true, get: function () { return loadMappers_1.isXmlMappersLoaded; } });
15
+ var registry_1 = require("./registry");
16
+ Object.defineProperty(exports, "clearXmlRegistry", { enumerable: true, get: function () { return registry_1.clearXmlRegistry; } });
17
+ Object.defineProperty(exports, "getXmlStatement", { enumerable: true, get: function () { return registry_1.getXmlStatement; } });
18
+ Object.defineProperty(exports, "getXmlNamespace", { enumerable: true, get: function () { return registry_1.getXmlNamespace; } });
19
+ Object.defineProperty(exports, "listXmlNamespaces", { enumerable: true, get: function () { return registry_1.listXmlNamespaces; } });
20
+ Object.defineProperty(exports, "countXmlStatements", { enumerable: true, get: function () { return registry_1.countXmlStatements; } });
21
+ var execute_1 = require("./execute");
22
+ Object.defineProperty(exports, "executeXmlStatement", { enumerable: true, get: function () { return execute_1.executeXmlStatement; } });
23
+ var MapperXml_1 = require("./MapperXml");
24
+ Object.defineProperty(exports, "MapperXml", { enumerable: true, get: function () { return MapperXml_1.MapperXml; } });
25
+ Object.defineProperty(exports, "bootstrapXmlMappers", { enumerable: true, get: function () { return MapperXml_1.bootstrapXmlMappers; } });
26
+ Object.defineProperty(exports, "getMapperXmlNamespace", { enumerable: true, get: function () { return MapperXml_1.getMapperXmlNamespace; } });
27
+ var xmlMapper_1 = require("./xmlMapper");
28
+ Object.defineProperty(exports, "xmlMapper", { enumerable: true, get: function () { return xmlMapper_1.xmlMapper; } });
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/xml/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,yCAA2D;AAAlD,+GAAA,kBAAkB,OAAA;AAAE,qGAAA,QAAQ,OAAA;AACrC,6CAMuB;AALrB,6GAAA,cAAc,OAAA;AACd,qHAAA,sBAAsB,OAAA;AACtB,gHAAA,iBAAiB,OAAA;AACjB,8GAAA,eAAe,OAAA;AACf,iHAAA,kBAAkB,OAAA;AAEpB,uCAMoB;AALlB,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,6GAAA,iBAAiB,OAAA;AACjB,8GAAA,kBAAkB,OAAA;AAEpB,qCAAgD;AAAvC,8GAAA,mBAAmB,OAAA;AAC5B,yCAAoF;AAA3E,sGAAA,SAAS,OAAA;AAAE,gHAAA,mBAAmB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAC9D,yCAAwC;AAA/B,sGAAA,SAAS,OAAA"}
@@ -0,0 +1,14 @@
1
+ /** 从配置扫描并注册全部 XML(可重复调用;会清空后重载) */
2
+ export declare function loadXmlMappers(locations?: string[]): {
3
+ files: number;
4
+ statements: number;
5
+ namespaces: string[];
6
+ };
7
+ /** 确保已按配置加载(惰性) */
8
+ export declare function ensureXmlMappersLoaded(): void;
9
+ export declare function isXmlMappersLoaded(): boolean;
10
+ /** 测试用:标记未加载 */
11
+ export declare function resetXmlLoadState(): void;
12
+ /** 开发热加载:监听已配置目录(简版,按文件 mtime 全量重载) */
13
+ export declare function watchXmlMappers(): void;
14
+ //# sourceMappingURL=loadMappers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadMappers.d.ts","sourceRoot":"","sources":["../../src/xml/loadMappers.ts"],"names":[],"mappings":"AA6EA,mCAAmC;AACnC,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAsCA;AAED,mBAAmB;AACnB,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,gBAAgB;AAChB,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAED,uCAAuC;AACvC,wBAAgB,eAAe,IAAI,IAAI,CAwCtC"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.loadXmlMappers = loadXmlMappers;
7
+ exports.ensureXmlMappersLoaded = ensureXmlMappersLoaded;
8
+ exports.isXmlMappersLoaded = isXmlMappersLoaded;
9
+ exports.resetXmlLoadState = resetXmlLoadState;
10
+ exports.watchXmlMappers = watchXmlMappers;
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const config_1 = require("../config");
14
+ const parseMapperXml_1 = require("./parseMapperXml");
15
+ const registry_1 = require("./registry");
16
+ let loaded = false;
17
+ let watching = false;
18
+ function resolveLocation(raw) {
19
+ const loc = String(raw ?? "").trim();
20
+ if (!loc)
21
+ throw new Error("mapperLocations 项不能为空");
22
+ // 相对路径相对 process.cwd()(项目根);绝对路径原样使用。支持 ** / * 通配。
23
+ const abs = path_1.default.isAbsolute(loc) ? loc : path_1.default.resolve(process.cwd(), loc);
24
+ // 含通配:拆成目录前缀 + glob(勿对带尾部分隔符的路径再 dirname,否则会少一层)
25
+ const star = abs.search(/[*?]/);
26
+ if (star < 0) {
27
+ return { root: abs, pattern: "**/*.xml" };
28
+ }
29
+ const before = abs.slice(0, star).replace(/[/\\]+$/, "");
30
+ const root = before || process.cwd();
31
+ const pattern = path_1.default
32
+ .relative(root, abs)
33
+ .split(path_1.default.sep)
34
+ .join("/");
35
+ return { root, pattern: pattern || "**/*.xml" };
36
+ }
37
+ function matchGlob(rel, pattern) {
38
+ // 极简 glob:支持 ** / * ;`**/*.xml` 也能匹配根目录下 foo.xml
39
+ const norm = rel.split(path_1.default.sep).join("/");
40
+ const esc = pattern
41
+ .split(path_1.default.sep)
42
+ .join("/")
43
+ .replace(/[.+^${}()|[\]\\]/g, "\\$&")
44
+ .replace(/\*\*\//g, "(?:.*/)?")
45
+ .replace(/\*\*/g, ".*")
46
+ .replace(/\*/g, "[^/]*");
47
+ return new RegExp(`^${esc}$`, "i").test(norm);
48
+ }
49
+ function walkFiles(dir, out = []) {
50
+ if (!fs_1.default.existsSync(dir))
51
+ return out;
52
+ const st = fs_1.default.statSync(dir);
53
+ if (st.isFile()) {
54
+ if (dir.toLowerCase().endsWith(".xml"))
55
+ out.push(dir);
56
+ return out;
57
+ }
58
+ if (!st.isDirectory())
59
+ return out;
60
+ for (const name of fs_1.default.readdirSync(dir)) {
61
+ walkFiles(path_1.default.join(dir, name), out);
62
+ }
63
+ return out;
64
+ }
65
+ function collectXmlFiles(location) {
66
+ const { root, pattern } = resolveLocation(location);
67
+ if (!fs_1.default.existsSync(root)) {
68
+ console.warn(`[ORM] mapperLocations 路径不存在: ${location} -> ${root}`);
69
+ return [];
70
+ }
71
+ const st = fs_1.default.statSync(root);
72
+ if (st.isFile()) {
73
+ return root.toLowerCase().endsWith(".xml") ? [root] : [];
74
+ }
75
+ const all = walkFiles(root);
76
+ return all.filter((file) => {
77
+ const rel = path_1.default.relative(root, file);
78
+ return matchGlob(rel, pattern);
79
+ });
80
+ }
81
+ /** 从配置扫描并注册全部 XML(可重复调用;会清空后重载) */
82
+ function loadXmlMappers(locations) {
83
+ const cfg = (0, config_1.getOrmConfig)();
84
+ const locs = locations ??
85
+ cfg.mapperLocations ??
86
+ [];
87
+ (0, registry_1.clearXmlRegistry)();
88
+ if (!locs.length) {
89
+ loaded = true;
90
+ return { files: 0, statements: 0, namespaces: [] };
91
+ }
92
+ const files = new Set();
93
+ for (const loc of locs) {
94
+ for (const f of collectXmlFiles(loc))
95
+ files.add(path_1.default.normalize(f));
96
+ }
97
+ for (const file of files) {
98
+ const text = fs_1.default.readFileSync(file, "utf8");
99
+ const parsed = (0, parseMapperXml_1.parseMapperXml)(text, file);
100
+ (0, registry_1.registerXmlBundle)(parsed.namespace, file, parsed.sqlFragments, parsed.statements);
101
+ }
102
+ loaded = true;
103
+ const statements = (0, registry_1.countXmlStatements)();
104
+ const namespaces = (0, registry_1.listXmlNamespaces)();
105
+ if (files.size || statements) {
106
+ console.info(`[ORM] loaded ${statements} statements from ${files.size} xml file(s)`);
107
+ }
108
+ return { files: files.size, statements, namespaces };
109
+ }
110
+ /** 确保已按配置加载(惰性) */
111
+ function ensureXmlMappersLoaded() {
112
+ if (loaded)
113
+ return;
114
+ loadXmlMappers();
115
+ }
116
+ function isXmlMappersLoaded() {
117
+ return loaded;
118
+ }
119
+ /** 测试用:标记未加载 */
120
+ function resetXmlLoadState() {
121
+ loaded = false;
122
+ (0, registry_1.clearXmlRegistry)();
123
+ }
124
+ /** 开发热加载:监听已配置目录(简版,按文件 mtime 全量重载) */
125
+ function watchXmlMappers() {
126
+ if (watching)
127
+ return;
128
+ const cfg = (0, config_1.getOrmConfig)();
129
+ if (!cfg.mapperReload)
130
+ return;
131
+ const locs = cfg.mapperLocations ?? [];
132
+ if (!locs.length)
133
+ return;
134
+ watching = true;
135
+ const roots = new Set();
136
+ for (const loc of locs) {
137
+ try {
138
+ roots.add(resolveLocation(loc).root);
139
+ }
140
+ catch {
141
+ // ignore
142
+ }
143
+ }
144
+ let timer = null;
145
+ const reload = () => {
146
+ try {
147
+ loadXmlMappers();
148
+ }
149
+ catch (err) {
150
+ console.error("[ORM] XML 热加载失败", err);
151
+ }
152
+ };
153
+ for (const root of roots) {
154
+ if (!fs_1.default.existsSync(root))
155
+ continue;
156
+ try {
157
+ fs_1.default.watch(root, { recursive: true }, (_event, filename) => {
158
+ if (filename && !String(filename).toLowerCase().endsWith(".xml")) {
159
+ return;
160
+ }
161
+ if (timer)
162
+ clearTimeout(timer);
163
+ timer = setTimeout(reload, 300);
164
+ });
165
+ }
166
+ catch {
167
+ // Windows 部分路径不支持 recursive
168
+ }
169
+ }
170
+ }
171
+ //# sourceMappingURL=loadMappers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadMappers.js","sourceRoot":"","sources":["../../src/xml/loadMappers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { XmlMapperFile } from "./types";
2
+ /**
3
+ * 解析单个 Mapper XML 文本。
4
+ */
5
+ export declare function parseMapperXml(xml: string, sourceFile?: string): XmlMapperFile;
6
+ //# sourceMappingURL=parseMapperXml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseMapperXml.d.ts","sourceRoot":"","sources":["../../src/xml/parseMapperXml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,aAAa,EAAkC,MAAM,SAAS,CAAC;AAqKtF;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,aAAa,CAgE1E"}