@cardelli/ambit 0.1.5 → 0.2.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 (139) hide show
  1. package/esm/cli/commands/create/index.d.ts +2 -0
  2. package/esm/cli/commands/create/index.d.ts.map +1 -0
  3. package/esm/cli/commands/create/index.js +292 -0
  4. package/esm/cli/commands/create/machine.d.ts +33 -0
  5. package/esm/cli/commands/create/machine.d.ts.map +1 -0
  6. package/esm/cli/commands/create/machine.js +162 -0
  7. package/esm/cli/commands/deploy/index.d.ts +2 -0
  8. package/esm/cli/commands/deploy/index.d.ts.map +1 -0
  9. package/esm/cli/commands/deploy/index.js +290 -0
  10. package/esm/cli/commands/deploy/machine.d.ts +52 -0
  11. package/esm/cli/commands/deploy/machine.d.ts.map +1 -0
  12. package/esm/cli/commands/deploy/machine.js +116 -0
  13. package/esm/cli/commands/deploy/modes.d.ts +18 -0
  14. package/esm/cli/commands/deploy/modes.d.ts.map +1 -0
  15. package/esm/cli/commands/deploy/modes.js +152 -0
  16. package/esm/cli/commands/destroy/app.d.ts +2 -0
  17. package/esm/cli/commands/destroy/app.d.ts.map +1 -0
  18. package/esm/cli/commands/destroy/app.js +173 -0
  19. package/esm/cli/commands/destroy/index.d.ts +2 -0
  20. package/esm/cli/commands/destroy/index.d.ts.map +1 -0
  21. package/esm/cli/commands/destroy/index.js +63 -0
  22. package/esm/cli/commands/destroy/network.d.ts +2 -0
  23. package/esm/cli/commands/destroy/network.d.ts.map +1 -0
  24. package/esm/cli/commands/destroy/network.js +210 -0
  25. package/esm/cli/commands/doctor.d.ts.map +1 -0
  26. package/esm/cli/commands/doctor.js +295 -0
  27. package/esm/{src/cli → cli}/commands/list.d.ts.map +1 -1
  28. package/esm/{src/cli → cli}/commands/list.js +39 -54
  29. package/esm/cli/commands/status.d.ts.map +1 -0
  30. package/esm/cli/commands/status.js +331 -0
  31. package/esm/cli/mod.d.ts.map +1 -0
  32. package/esm/{src/cli → cli}/mod.js +4 -4
  33. package/esm/deno.d.ts +4 -18
  34. package/esm/deno.js +5 -19
  35. package/esm/deps/jsr.io/@std/path/1.1.4/constants.d.ts +1 -1
  36. package/esm/lib/args.d.ts +11 -0
  37. package/esm/lib/args.d.ts.map +1 -0
  38. package/esm/lib/args.js +28 -0
  39. package/esm/lib/cli.d.ts +0 -1
  40. package/esm/lib/cli.d.ts.map +1 -1
  41. package/esm/lib/cli.js +0 -1
  42. package/esm/lib/command.d.ts +0 -3
  43. package/esm/lib/command.d.ts.map +1 -1
  44. package/esm/lib/command.js +2 -13
  45. package/esm/lib/machine.d.ts +11 -0
  46. package/esm/lib/machine.d.ts.map +1 -0
  47. package/esm/lib/machine.js +15 -0
  48. package/esm/lib/output.d.ts +2 -1
  49. package/esm/lib/output.d.ts.map +1 -1
  50. package/esm/lib/output.js +21 -3
  51. package/esm/lib/result.d.ts +0 -1
  52. package/esm/lib/result.d.ts.map +1 -1
  53. package/esm/lib/result.js +0 -1
  54. package/esm/main.d.ts +6 -6
  55. package/esm/main.d.ts.map +1 -1
  56. package/esm/main.js +7 -9
  57. package/esm/providers/fly.d.ts +81 -0
  58. package/esm/providers/fly.d.ts.map +1 -0
  59. package/esm/providers/fly.js +372 -0
  60. package/esm/providers/tailscale.d.ts +31 -0
  61. package/esm/providers/tailscale.d.ts.map +1 -0
  62. package/esm/providers/tailscale.js +150 -0
  63. package/esm/{src/schemas → schemas}/fly.d.ts +1 -11
  64. package/esm/schemas/fly.d.ts.map +1 -0
  65. package/esm/{src/schemas → schemas}/fly.js +14 -56
  66. package/esm/{src/schemas → schemas}/tailscale.d.ts +1 -2
  67. package/esm/schemas/tailscale.d.ts.map +1 -0
  68. package/esm/{src/schemas → schemas}/tailscale.js +2 -3
  69. package/esm/src/{docker/router → router}/Dockerfile +0 -11
  70. package/esm/src/{docker/router → router}/start.sh +18 -9
  71. package/esm/util/constants.d.ts +13 -0
  72. package/esm/util/constants.d.ts.map +1 -0
  73. package/esm/util/constants.js +34 -0
  74. package/esm/{src → util}/credentials.d.ts +0 -1
  75. package/esm/util/credentials.d.ts.map +1 -0
  76. package/esm/{src → util}/credentials.js +3 -5
  77. package/esm/{src → util}/discovery.d.ts +16 -3
  78. package/esm/util/discovery.d.ts.map +1 -0
  79. package/esm/{src → util}/discovery.js +24 -15
  80. package/esm/util/fly-transforms.d.ts +27 -0
  81. package/esm/util/fly-transforms.d.ts.map +1 -0
  82. package/esm/util/fly-transforms.js +87 -0
  83. package/esm/{src → util}/guard.d.ts +1 -2
  84. package/esm/util/guard.d.ts.map +1 -0
  85. package/esm/{src → util}/guard.js +27 -27
  86. package/esm/util/naming.d.ts +5 -0
  87. package/esm/util/naming.d.ts.map +1 -0
  88. package/esm/util/naming.js +12 -0
  89. package/esm/{src → util}/resolve.d.ts +2 -3
  90. package/esm/util/resolve.d.ts.map +1 -0
  91. package/esm/{src → util}/resolve.js +1 -2
  92. package/esm/util/session.d.ts +16 -0
  93. package/esm/util/session.d.ts.map +1 -0
  94. package/esm/util/session.js +19 -0
  95. package/esm/util/tailscale-local.d.ts +13 -0
  96. package/esm/util/tailscale-local.d.ts.map +1 -0
  97. package/esm/util/tailscale-local.js +63 -0
  98. package/esm/{src → util}/template.d.ts +0 -1
  99. package/esm/util/template.d.ts.map +1 -0
  100. package/esm/{src → util}/template.js +0 -1
  101. package/package.json +1 -49
  102. package/esm/lib/paths.d.ts +0 -3
  103. package/esm/lib/paths.d.ts.map +0 -1
  104. package/esm/lib/paths.js +0 -5
  105. package/esm/src/cli/commands/create.d.ts +0 -2
  106. package/esm/src/cli/commands/create.d.ts.map +0 -1
  107. package/esm/src/cli/commands/create.js +0 -308
  108. package/esm/src/cli/commands/deploy.d.ts +0 -2
  109. package/esm/src/cli/commands/deploy.d.ts.map +0 -1
  110. package/esm/src/cli/commands/deploy.js +0 -430
  111. package/esm/src/cli/commands/destroy.d.ts +0 -2
  112. package/esm/src/cli/commands/destroy.d.ts.map +0 -1
  113. package/esm/src/cli/commands/destroy.js +0 -340
  114. package/esm/src/cli/commands/doctor.d.ts.map +0 -1
  115. package/esm/src/cli/commands/doctor.js +0 -141
  116. package/esm/src/cli/commands/status.d.ts.map +0 -1
  117. package/esm/src/cli/commands/status.js +0 -152
  118. package/esm/src/cli/mod.d.ts.map +0 -1
  119. package/esm/src/credentials.d.ts.map +0 -1
  120. package/esm/src/discovery.d.ts.map +0 -1
  121. package/esm/src/guard.d.ts.map +0 -1
  122. package/esm/src/providers/fly.d.ts +0 -76
  123. package/esm/src/providers/fly.d.ts.map +0 -1
  124. package/esm/src/providers/fly.js +0 -407
  125. package/esm/src/providers/tailscale.d.ts +0 -31
  126. package/esm/src/providers/tailscale.d.ts.map +0 -1
  127. package/esm/src/providers/tailscale.js +0 -189
  128. package/esm/src/resolve.d.ts.map +0 -1
  129. package/esm/src/schemas/config.d.ts +0 -5
  130. package/esm/src/schemas/config.d.ts.map +0 -1
  131. package/esm/src/schemas/config.js +0 -22
  132. package/esm/src/schemas/fly.d.ts.map +0 -1
  133. package/esm/src/schemas/tailscale.d.ts.map +0 -1
  134. package/esm/src/template.d.ts.map +0 -1
  135. /package/esm/{src/cli → cli}/commands/doctor.d.ts +0 -0
  136. /package/esm/{src/cli → cli}/commands/list.d.ts +0 -0
  137. /package/esm/{src/cli → cli}/commands/status.d.ts +0 -0
  138. /package/esm/{src/cli → cli}/mod.d.ts +0 -0
  139. /package/esm/src/{docker/router → router}/fly.toml +0 -0
@@ -1,189 +0,0 @@
1
- // =============================================================================
2
- // Tailscale API Client
3
- // =============================================================================
4
- import "../../_dnt.polyfills.js";
5
- import { commandExists, die } from "../../lib/cli.js";
6
- import { runCommand } from "../../lib/command.js";
7
- import { createAuthKeyPayload, TailscaleDevicesListSchema, } from "../schemas/tailscale.js";
8
- // =============================================================================
9
- // Constants
10
- // =============================================================================
11
- const API_BASE = "https://api.tailscale.com/api/v2";
12
- // =============================================================================
13
- // Create Tailscale Provider
14
- // =============================================================================
15
- export const createTailscaleProvider = (tailnet, apiKey) => {
16
- const headers = () => ({
17
- "Content-Type": "application/json",
18
- Accept: "application/json",
19
- Authorization: `Basic ${btoa(apiKey + ":")}`,
20
- });
21
- const request = async (method, path, body) => {
22
- try {
23
- const response = await fetch(`${API_BASE}${path}`, {
24
- method,
25
- headers: headers(),
26
- body: body ? JSON.stringify(body) : undefined,
27
- });
28
- if (!response.ok) {
29
- const text = await response.text();
30
- return {
31
- ok: false,
32
- status: response.status,
33
- error: text || `HTTP ${response.status}`,
34
- };
35
- }
36
- const text = await response.text();
37
- if (!text) {
38
- return { ok: true, status: response.status };
39
- }
40
- return { ok: true, status: response.status, data: JSON.parse(text) };
41
- }
42
- catch (error) {
43
- return {
44
- ok: false,
45
- status: 0,
46
- error: error instanceof Error ? error.message : String(error),
47
- };
48
- }
49
- };
50
- const effectiveTailnet = tailnet || "-";
51
- return {
52
- async validateApiKey() {
53
- const result = await request("GET", `/tailnet/${effectiveTailnet}/devices`);
54
- return result.ok;
55
- },
56
- async createAuthKey(opts) {
57
- const payload = createAuthKeyPayload(opts ?? {});
58
- const result = await request("POST", `/tailnet/${effectiveTailnet}/keys`, payload);
59
- if (!result.ok || !result.data?.key) {
60
- return die(`Failed to Create Auth Key: ${result.error}`);
61
- }
62
- return result.data.key;
63
- },
64
- async listDevices() {
65
- const result = await request("GET", `/tailnet/${effectiveTailnet}/devices`);
66
- if (!result.ok) {
67
- return die(`Failed to List Devices: ${result.error}`);
68
- }
69
- const parsed = TailscaleDevicesListSchema.safeParse(result.data);
70
- return parsed.success ? parsed.data.devices : [];
71
- },
72
- async getDeviceByHostname(hostname) {
73
- const devices = await this.listDevices();
74
- // Exact match first (expected with persistent state)
75
- const exact = devices.find((d) => d.hostname === hostname);
76
- if (exact)
77
- return exact;
78
- // Fallback: find by prefix if Tailscale added suffix (e.g., hostname-1)
79
- // Prefer online devices, then most recently seen
80
- const prefixMatches = devices
81
- .filter((d) => d.hostname.startsWith(hostname + "-"))
82
- .sort((a, b) => {
83
- if (a.online && !b.online)
84
- return -1;
85
- if (!a.online && b.online)
86
- return 1;
87
- const aTime = a.lastSeen ? new Date(a.lastSeen).getTime() : 0;
88
- const bTime = b.lastSeen ? new Date(b.lastSeen).getTime() : 0;
89
- return bTime - aTime;
90
- });
91
- return prefixMatches[0] ?? null;
92
- },
93
- async deleteDevice(id) {
94
- const result = await request("DELETE", `/device/${id}`);
95
- if (!result.ok) {
96
- return die(`Failed to Delete Device: ${result.error}`);
97
- }
98
- },
99
- async approveSubnetRoutes(deviceId, routes) {
100
- const result = await request("POST", `/device/${deviceId}/routes`, { routes });
101
- if (!result.ok) {
102
- return die(`Failed to Approve Routes: ${result.error}`);
103
- }
104
- },
105
- async setSplitDns(domain, nameservers) {
106
- // PATCH performs partial update - only specified domains are modified
107
- const result = await request("PATCH", `/tailnet/${effectiveTailnet}/dns/split-dns`, { [domain]: nameservers });
108
- if (!result.ok) {
109
- return die(`Failed to Configure Split DNS: ${result.error}`);
110
- }
111
- },
112
- async clearSplitDns(domain) {
113
- const result = await request("PATCH", `/tailnet/${effectiveTailnet}/dns/split-dns`, { [domain]: null });
114
- if (!result.ok) {
115
- return die(`Failed to Clear Split DNS: ${result.error}`);
116
- }
117
- },
118
- async getPolicyFile() {
119
- const result = await request("GET", `/tailnet/${effectiveTailnet}/acl`);
120
- if (!result.ok || !result.data) {
121
- return null;
122
- }
123
- return result.data;
124
- },
125
- async isTagOwnerConfigured(tag) {
126
- const policy = await this.getPolicyFile();
127
- if (!policy)
128
- return false;
129
- const tagOwners = policy.tagOwners;
130
- if (!tagOwners)
131
- return false;
132
- return tag in tagOwners;
133
- },
134
- async isAutoApproverConfigured(tag) {
135
- const policy = await this.getPolicyFile();
136
- if (!policy)
137
- return false;
138
- const autoApprovers = policy.autoApprovers;
139
- if (!autoApprovers)
140
- return false;
141
- const routes = autoApprovers.routes;
142
- if (!routes)
143
- return false;
144
- return Object.values(routes).some((approvers) => Array.isArray(approvers) && approvers.includes(tag));
145
- },
146
- };
147
- };
148
- // =============================================================================
149
- // Wait for Device
150
- // =============================================================================
151
- export const waitForDevice = async (provider, hostname, timeoutMs = 120000) => {
152
- const startTime = Date.now();
153
- const pollInterval = 5000;
154
- while (Date.now() - startTime < timeoutMs) {
155
- const device = await provider.getDeviceByHostname(hostname);
156
- if (device) {
157
- return device;
158
- }
159
- await new Promise((resolve) => setTimeout(resolve, pollInterval));
160
- }
161
- return die(`Timeout Waiting for Device '${hostname}'`);
162
- };
163
- // =============================================================================
164
- // Local Tailscale CLI
165
- // =============================================================================
166
- /**
167
- * Check if the tailscale CLI is installed.
168
- */
169
- export const isTailscaleInstalled = async () => {
170
- return await commandExists("tailscale");
171
- };
172
- /**
173
- * Check if accept-routes is enabled on the local client.
174
- */
175
- export const isAcceptRoutesEnabled = async () => {
176
- const result = await runCommand(["tailscale", "debug", "prefs"]);
177
- return result.json().match({
178
- ok: (prefs) => prefs.RouteAll === true,
179
- err: () => false,
180
- });
181
- };
182
- /**
183
- * Enable accept-routes on the local client.
184
- * Returns true if successful, false if it failed (likely permissions).
185
- */
186
- export const enableAcceptRoutes = async () => {
187
- const result = await runCommand(["tailscale", "set", "--accept-routes"]);
188
- return result.ok;
189
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/src/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMtD;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,KAAK,WAAW,EAChB,MAAM;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACtC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KACnC,OAAO,CAAC,MAAM,CA6BhB,CAAC"}
@@ -1,5 +0,0 @@
1
- import "../../_dnt.polyfills.js";
2
- export declare const getRouterTag: (network: string) => string;
3
- export declare const extractSubnet: (privateIp: string) => string;
4
- export declare const getConfigDir: () => string;
5
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/src/schemas/config.ts"],"names":[],"mappings":"AAOA,OAAO,yBAAyB,CAAC;AAKjC,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAAgC,CAAC;AAEhF,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,KAAG,MAKjD,CAAC;AAMF,eAAO,MAAM,YAAY,QAAO,MAG/B,CAAC"}
@@ -1,22 +0,0 @@
1
- // =============================================================================
2
- // Configuration Helpers
3
- // =============================================================================
4
- // =============================================================================
5
- // Derived Values
6
- // =============================================================================
7
- import "../../_dnt.polyfills.js";
8
- import * as dntShim from "../../_dnt.shims.js";
9
- export const getRouterTag = (network) => `tag:ambit-${network}`;
10
- export const extractSubnet = (privateIp) => {
11
- // privateIp format: fdaa:X:XXXX::Y
12
- // Extract first 3 hextets and append ::/48
13
- const parts = privateIp.split(":");
14
- return `${parts[0]}:${parts[1]}:${parts[2]}::/48`;
15
- };
16
- // =============================================================================
17
- // Config Directory
18
- // =============================================================================
19
- export const getConfigDir = () => {
20
- const home = dntShim.Deno.env.get("HOME") || dntShim.Deno.env.get("USERPROFILE") || "";
21
- return `${home}/.config/ambit`;
22
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"fly.d.ts","sourceRoot":"","sources":["../../../src/src/schemas/fly.ts"],"names":[],"mappings":"AAGA,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EAAE,CAAC,EAAE,MAAM,+CAA+C,CAAC;AAMlE,eAAO,MAAM,aAAa;;iBAEV,CAAC;AAEjB,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAMpD,eAAO,MAAM,YAAY;;;;;;iBAMT,CAAC;AAEjB,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,iBAAiB;;;;;;kBAAwB,CAAC;AAMvD,eAAO,MAAM,eAAe;;;;;iBAKZ,CAAC;AAEjB,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAMxD,eAAO,MAAM,qBAAqB;;;;iBAIlB,CAAC;AAEjB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;iBAgBnB,CAAC;AAEjB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;iBASb,CAAC;AAEjB,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;kBAA4B,CAAC;AAM/D,eAAO,MAAM,aAAa,uCAAmC,CAAC;AAM9D,eAAO,MAAM,eAAe;;;iBAGZ,CAAC;AAMjB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,KACf,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,QAiBtC,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,KAC5C,eAAe,GAAG,eAAe,GAAG,eAOtC,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAMpD,eAAO,MAAM,kBAAkB;;;;;iBAGf,CAAC;AAEjB,eAAO,MAAM,WAAW;;;;;;;;;;;;iBAOR,CAAC;AAEjB,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD,eAAO,MAAM,eAAe;;;;;;;;;;;;kBAAuB,CAAC;AAMpD,eAAO,MAAM,gBAAgB;;;;;;;iBAKb,CAAC;AAEjB,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAGjB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tailscale.d.ts","sourceRoot":"","sources":["../../../src/src/schemas/tailscale.ts"],"names":[],"mappings":"AAGA,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EAAE,CAAC,EAAE,MAAM,+CAA+C,CAAC;AAMlE,eAAO,MAAM,sBAAsB;;;;;iBAKjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAMtE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAclB,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;iBAErC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAM9E,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMpE,eAAO,MAAM,6BAA6B;;iBAExC,CAAC;AAEH,eAAO,MAAM,uBAAuB,mDAGnC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAMxE,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMlE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,oBAAoB,GAAI,MAAM,mBAAmB,KAAG,MA+BhE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/src/template.ts"],"names":[],"mappings":"AAgBA,OAAO,sBAAsB,CAAC;AAO9B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM1C,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACtC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CACzC,CAAC;AAyBF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,WAAW,GAAG,IAyB5D,CAAC;AAMF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,WAAW,KACf,OAAO,CAAC,mBAAmB,CAqG7B,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes