openseesjs 0.2.2 → 0.2.3

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/API_REFERENCE.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  Generated from the OpenSeesPy `3.8.0.0` command inventory.
4
4
  The TypeScript signatures below are the public command overloads used by `ops`.
5
+ Element variants are also discoverable as `ops.element.<type>(...)` methods.
5
6
  Queries that return values directly are listed first.
6
7
 
7
8
  ## Native queries
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0 - 2026-09-27
4
+
5
+ - Add generated, discoverable element methods such as
6
+ `ops.element.elasticBeamColumn(...)` while preserving the Tcl-compatible
7
+ `ops.element("elasticBeamColumn", ...)` form.
8
+ - Share the variant dispatcher across the native, minimal and Tcl APIs.
9
+
10
+ ## 0.2.3 - 2026-09-26
11
+
12
+ - Prioritize the typed `elasticBeamColumn` 2D/3D overloads in editor Signature
13
+ Help without changing the command API or native runtime.
14
+
3
15
  ## 0.2.2 - 2026-09-26
4
16
 
5
17
  - Add a CommonJS entry point for TSLab, Jupyter and `require()` consumers while
package/README.md CHANGED
@@ -66,6 +66,20 @@ finita de argumentos tienen overloads completos; las colecciones de longitud
66
66
  realmente variable se reciben como arreglos con nombre y tipos de elementos
67
67
  concretos.
68
68
 
69
+ Los elementos también están disponibles como métodos descubribles. Esta forma
70
+ muestra en IntelliSense únicamente las firmas del elemento seleccionado:
71
+
72
+ ```ts
73
+ ops.element.elasticBeamColumn(1, 1, 2, A, E, Iz, transfTag);
74
+ ops.element.Truss(2, 2, 3, A, matTag);
75
+ ```
76
+
77
+ La forma compatible con Tcl continúa disponible sin cambios:
78
+
79
+ ```ts
80
+ ops.element('elasticBeamColumn', 1, 1, 2, A, E, Iz, transfTag);
81
+ ```
82
+
69
83
  ## Organizacion recomendada
70
84
 
71
85
  Mantenga un único `ops`, porque OpenSees utiliza un dominio global, y separe el
@@ -1 +1 @@
1
- {"version":3,"file":"OpenSeesNativeSession.d.ts","sourceRoot":"","sources":["../../src/native/OpenSeesNativeSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC3B,MAAM,oDAAoD,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIlH,MAAM,WAAW,sBAAuB,SAAQ,wBAAwB;CAAI;AAE5E,qBAAa,sBAAsB;IAGd,OAAO,CAAC,QAAQ,CAAC,OAAO;IAF3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgF;gBAEpE,OAAO,EAAE,4BAA4B;IAkBzE,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,IAAI,GAAE,SAAS,kBAAkB,EAAO,GAAG,IAAI;IAMpG,IAAI,CACF,IAAI,EAAE,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EAC3C,YAAY,EAAE,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,GACvD,IAAI;IAWP,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,GAAG,IAAI;IAI7D,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,GAAG,IAAI;IAIhE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,GAAG,IAAI;CAG9D;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAgB,GAAG,EAAE,sBAAsB,CAAC;IAC5C,SAAgB,KAAK,EAAE,qBAAqB,CAAC;gBAE1B,OAAO,GAAE,4BAAiC;IAO7D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,SAAS,kBAAkB,EAAO,GAAG,mBAAmB;IAUtF,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,GAAG,SAAS,mBAAmB,EAAE;IAkBrH,KAAK,IAAI,IAAI;IAMb,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIxB,OAAO,CAAC,UAAU;CAGnB"}
1
+ {"version":3,"file":"OpenSeesNativeSession.d.ts","sourceRoot":"","sources":["../../src/native/OpenSeesNativeSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC3B,MAAM,oDAAoD,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAKjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIlH,MAAM,WAAW,sBAAuB,SAAQ,wBAAwB;CAAI;AAE5E,qBAAa,sBAAsB;IAGd,OAAO,CAAC,QAAQ,CAAC,OAAO;IAF3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgF;gBAEpE,OAAO,EAAE,4BAA4B;IAqBzE,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,IAAI,GAAE,SAAS,kBAAkB,EAAO,GAAG,IAAI;IAMpG,IAAI,CACF,IAAI,EAAE,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EAC3C,YAAY,EAAE,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,GACvD,IAAI;IAWP,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,GAAG,IAAI;IAI7D,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,GAAG,IAAI;IAIhE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,GAAG,IAAI;CAG9D;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAgB,GAAG,EAAE,sBAAsB,CAAC;IAC5C,SAAgB,KAAK,EAAE,qBAAqB,CAAC;gBAE1B,OAAO,GAAE,4BAAiC;IAO7D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,SAAS,kBAAkB,EAAO,GAAG,mBAAmB;IAUtF,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,GAAG,SAAS,mBAAmB,EAAE;IAkBrH,KAAK,IAAI,IAAI;IAMb,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIxB,OAAO,CAAC,UAAU;CAGnB"}
@@ -1,4 +1,5 @@
1
1
  import { OPEN_SEES_PY_COMMANDS, } from '../openseespy/generated/OpenSeesPyApi.generated.js';
2
+ import { createVariantCommand } from '../openseespy/createVariantCommand.js';
2
3
  import { flattenNativeArguments } from './flattenArguments.js';
3
4
  import { invokeNative } from './OpenSeesCommandError.js';
4
5
  import { loadNativeBinding } from './OpenSeesNativeBindingLoader.js';
@@ -15,10 +16,13 @@ export class OpenSeesNativeCommands {
15
16
  const cached = target.methods.get(property);
16
17
  if (cached !== undefined)
17
18
  return cached;
18
- const method = (...args) => {
19
+ const invoke = (args) => {
19
20
  target.command(property, args);
20
21
  return receiver;
21
22
  };
23
+ const method = property === 'element'
24
+ ? createVariantCommand(invoke)
25
+ : (...args) => invoke(args);
22
26
  target.methods.set(property, method);
23
27
  return method;
24
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OpenSeesNativeSession.js","sourceRoot":"","sources":["../../src/native/OpenSeesNativeSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenSeesNativeSession.js","sourceRoot":"","sources":["../../src/native/OpenSeesNativeSession.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OpenSeesOps.d.ts","sourceRoot":"","sources":["../../src/native/OpenSeesOps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE/D,MAAM,MAAM,WAAW,GACnB,IAAI,CAAC,sBAAsB,EAAE,MAAM,qBAAqB,CAAC,GACzD,qBAAqB,GACrB;IAAE,OAAO,IAAI,IAAI,CAAA;CAAE,CAAC;AAExB;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,4BAAiC,GAAG,WAAW,CA+BzF;AAED,yEAAyE;AACzE,eAAO,MAAM,GAAG,aAAsB,CAAC"}
1
+ {"version":3,"file":"OpenSeesOps.d.ts","sourceRoot":"","sources":["../../src/native/OpenSeesOps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAG/D,MAAM,MAAM,WAAW,GACnB,IAAI,CAAC,sBAAsB,EAAE,MAAM,qBAAqB,CAAC,GACzD,qBAAqB,GACrB;IAAE,OAAO,IAAI,IAAI,CAAA;CAAE,CAAC;AAExB;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,4BAAiC,GAAG,WAAW,CAkCzF;AAED,yEAAyE;AACzE,eAAO,MAAM,GAAG,aAAsB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { OpenSeesNativeCommands, OpenSeesNativeSession } from './OpenSeesNativeSession.js';
2
2
  import { OpenSeesNativeQueries } from './OpenSeesNativeQueries.js';
3
+ import { createVariantCommand } from '../openseespy/createVariantCommand.js';
3
4
  /**
4
5
  * Creates an OpenSeesPy-style facade. The native session is opened on the
5
6
  * first command and remains reusable until `dispose()` is called.
@@ -22,7 +23,7 @@ export function createOpenSeesOps(options = {}) {
22
23
  const cached = methods.get(property);
23
24
  if (cached !== undefined)
24
25
  return cached;
25
- const method = (...args) => {
26
+ const invoke = (args) => {
26
27
  const current = getSession();
27
28
  const isQuery = property in OpenSeesNativeQueries.prototype;
28
29
  const owner = isQuery ? current.query : current.ops;
@@ -32,6 +33,9 @@ export function createOpenSeesOps(options = {}) {
32
33
  const result = Reflect.apply(value, owner, args);
33
34
  return result === current.ops ? facade : result;
34
35
  };
36
+ const method = property === 'element'
37
+ ? createVariantCommand(invoke)
38
+ : (...args) => invoke(args);
35
39
  methods.set(property, method);
36
40
  return method;
37
41
  },
@@ -1 +1 @@
1
- {"version":3,"file":"OpenSeesOps.js","sourceRoot":"","sources":["../../src/native/OpenSeesOps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAQnE;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAwC,EAAE;IAC1E,IAAI,OAA0C,CAAC;IAC/C,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,KAAK,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2C,CAAC;IAEnE,IAAI,MAAmB,CAAC;IACxB,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;QACrB,GAAG,CAAC,OAAO,EAAE,QAAQ;YACnB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,GAAG,EAAE;oBACV,OAAO,EAAE,KAAK,EAAE,CAAC;oBACjB,OAAO,GAAG,SAAS,CAAC;gBACtB,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YACnD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;YACxC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;gBACpC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,QAAQ,IAAI,qBAAqB,CAAC,SAAS,CAAC;gBAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;gBACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC3C,IAAI,OAAO,KAAK,KAAK,UAAU;oBAAE,OAAO,KAAK,CAAC;gBAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACjD,OAAO,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAClD,CAAC,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAgB,CAAC;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;AAEvC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"OpenSeesOps.js","sourceRoot":"","sources":["../../src/native/OpenSeesOps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAO7E;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAwC,EAAE;IAC1E,IAAI,OAA0C,CAAC;IAC/C,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,KAAK,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2C,CAAC;IAEnE,IAAI,MAAmB,CAAC;IACxB,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;QACrB,GAAG,CAAC,OAAO,EAAE,QAAQ;YACnB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,GAAG,EAAE;oBACV,OAAO,EAAE,KAAK,EAAE,CAAC;oBACjB,OAAO,GAAG,SAAS,CAAC;gBACtB,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YACnD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;YACxC,MAAM,MAAM,GAAG,CAAC,IAAwB,EAAE,EAAE;gBAC1C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,QAAQ,IAAI,qBAAqB,CAAC,SAAS,CAAC;gBAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;gBACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC3C,IAAI,OAAO,KAAK,KAAK,UAAU;oBAAE,OAAO,KAAK,CAAC;gBAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACjD,OAAO,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAClD,CAAC,CAAC;YACF,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS;gBACnC,CAAC,CAAC,oBAAoB,CAAmB,MAAM,CAAC;gBAChD,CAAC,CAAC,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAgB,CAAC;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;AAEvC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC"}
@@ -272,6 +272,24 @@ var OPEN_SEES_PY_COMMANDS = [
272
272
  "wipeReliability"
273
273
  ];
274
274
 
275
+ // src/openseespy/createVariantCommand.ts
276
+ function createVariantCommand(invoke) {
277
+ const variants = /* @__PURE__ */ new Map();
278
+ const command = (...args) => invoke(args);
279
+ return new Proxy(command, {
280
+ get(target, property, receiver) {
281
+ if (typeof property !== "string" || property in target) {
282
+ return Reflect.get(target, property, receiver);
283
+ }
284
+ const cached = variants.get(property);
285
+ if (cached !== void 0) return cached;
286
+ const variant = (...args) => invoke([property, ...args]);
287
+ variants.set(property, variant);
288
+ return variant;
289
+ }
290
+ });
291
+ }
292
+
275
293
  // src/native/flattenArguments.ts
276
294
  function flattenNativeArguments(values) {
277
295
  const result = [];
@@ -575,10 +593,11 @@ var OpenSeesNativeCommands = class {
575
593
  if (typeof property === "string" && commandNames.has(property) && !(property in target)) {
576
594
  const cached = target.methods.get(property);
577
595
  if (cached !== void 0) return cached;
578
- const method = (...args) => {
596
+ const invoke = (args) => {
579
597
  target.command(property, args);
580
598
  return receiver;
581
599
  };
600
+ const method = property === "element" ? createVariantCommand(invoke) : (...args) => invoke(args);
582
601
  target.methods.set(property, method);
583
602
  return method;
584
603
  }
@@ -678,7 +697,7 @@ function createOpenSeesOps(options = {}) {
678
697
  if (typeof property !== "string") return void 0;
679
698
  const cached = methods.get(property);
680
699
  if (cached !== void 0) return cached;
681
- const method = (...args) => {
700
+ const invoke = (args) => {
682
701
  const current = getSession();
683
702
  const isQuery = property in OpenSeesNativeQueries.prototype;
684
703
  const owner = isQuery ? current.query : current.ops;
@@ -687,6 +706,7 @@ function createOpenSeesOps(options = {}) {
687
706
  const result = Reflect.apply(value, owner, args);
688
707
  return result === current.ops ? facade : result;
689
708
  };
709
+ const method = property === "element" ? createVariantCommand(invoke) : (...args) => invoke(args);
690
710
  methods.set(property, method);
691
711
  return method;
692
712
  }