@terraforge/terraform 0.0.3 → 0.0.4

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/README.md ADDED
@@ -0,0 +1,8 @@
1
+
2
+ # Terraform bridge for Terraforge
3
+
4
+ This package is used to build Terraform bridge packages that can be used with @terraforge/core.
5
+
6
+ ### Installation location
7
+
8
+ The default installation location is `~/.terraforge/plugins`.
package/dist/index.d.ts CHANGED
@@ -3,6 +3,9 @@ type TerraformProviderConfig = {
3
3
  id?: string;
4
4
  location?: string;
5
5
  };
6
+ type InstallProps = {
7
+ location?: string;
8
+ };
6
9
  declare const createTerraformAPI: <T>(props: {
7
10
  namespace: string;
8
11
  provider: {
@@ -68,4 +71,4 @@ declare class TerraformProvider implements Provider {
68
71
  deleteResource({ type, state }: DeleteProps);
69
72
  getData({ type, state }: GetDataProps);
70
73
  }
71
- export { generateTypes, createTerraformAPI, TerraformProviderConfig, TerraformProvider };
74
+ export { generateTypes, createTerraformAPI, TerraformProviderConfig, TerraformProvider, InstallProps };
package/dist/index.js CHANGED
@@ -1546,19 +1546,23 @@ class TerraformProvider {
1546
1546
  }
1547
1547
 
1548
1548
  // src/resource.ts
1549
- import { createMeta } from "@terraforge/core";
1549
+ import { createMeta, nodeMetaSymbol } from "@terraforge/core";
1550
1550
  import { snakeCase as snakeCase2 } from "change-case";
1551
- var createNamespaceProxy = (cb, target = {}) => {
1551
+ var createNamespaceProxy = (cb, scb) => {
1552
1552
  const cache = new Map;
1553
- return new Proxy(target, {
1553
+ return new Proxy({}, {
1554
1554
  get(_, key) {
1555
1555
  if (!cache.has(key)) {
1556
- cache.set(key, cb(key));
1556
+ const value = typeof key === "symbol" ? scb?.(key) : cb(key);
1557
+ cache.set(key, value);
1557
1558
  }
1558
1559
  return cache.get(key);
1559
1560
  },
1560
1561
  set(_, key) {
1561
- throw new Error(`Cannot assign to ${key} because it is a read-only property.`);
1562
+ if (typeof key === "string") {
1563
+ throw new Error(`Cannot set property ${key} on read-only object.`);
1564
+ }
1565
+ throw new Error(`This object is read-only.`);
1562
1566
  }
1563
1567
  });
1564
1568
  };
@@ -1607,26 +1611,30 @@ var createResourceProxy = (name) => {
1607
1611
  resource: (ns, parent, id, input, config) => {
1608
1612
  const type = snakeCase2(name + "_" + ns.join("_"));
1609
1613
  const provider = `terraform:${name}:${config?.provider ?? "default"}`;
1610
- const $ = createMeta("resource", provider, parent, type, id, input, config);
1614
+ const meta = createMeta("resource", provider, parent, type, id, input, config);
1611
1615
  const resource = createNamespaceProxy((key) => {
1612
- if (key === "$") {
1613
- return $;
1616
+ return meta.output((data) => data[key]);
1617
+ }, (key) => {
1618
+ if (key === nodeMetaSymbol) {
1619
+ return meta;
1614
1620
  }
1615
- return $.output((data) => data[key]);
1616
- }, { $ });
1621
+ return;
1622
+ });
1617
1623
  parent.add(resource);
1618
1624
  return resource;
1619
1625
  },
1620
1626
  dataSource: (ns, parent, id, input, config) => {
1621
1627
  const type = snakeCase2(name + "_" + ns.join("_"));
1622
1628
  const provider = `terraform:${name}:${config?.provider ?? "default"}`;
1623
- const $ = createMeta("data", provider, parent, type, id, input, config);
1629
+ const meta = createMeta("data", provider, parent, type, id, input, config);
1624
1630
  const dataSource = createNamespaceProxy((key) => {
1625
- if (key === "$") {
1626
- return $;
1631
+ return meta.output((data) => data[key]);
1632
+ }, (key) => {
1633
+ if (key === nodeMetaSymbol) {
1634
+ return meta;
1627
1635
  }
1628
- return $.output((data) => data[key]);
1629
- }, { $ });
1636
+ return;
1637
+ });
1630
1638
  parent.add(dataSource);
1631
1639
  return dataSource;
1632
1640
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terraforge/terraform",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "type": "module",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",