@tailor-platform/sdk 1.73.3 → 1.74.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.
- package/CHANGELOG.md +24 -0
- package/dist/application-BndtMTFY.mjs +3 -0
- package/dist/{application-DgTCDMZY.mjs → application-DwmoI6ZQ.mjs} +55 -14
- package/dist/application-DwmoI6ZQ.mjs.map +1 -0
- package/dist/cli/commands/deploy/apply-phases.d.mts +1 -0
- package/dist/cli/commands/executor/trigger.d.mts +1 -1
- package/dist/cli/index.mjs +102 -13
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/lib.d.mts +2 -2
- package/dist/cli/lib.mjs +2 -2
- package/dist/cli/shared/client.d.mts +1 -1
- package/dist/completion/zsh-worker.zsh +28 -3
- package/dist/{repl-editor-BmQOyZJd.mjs → repl-editor-BCozyiNq.mjs} +3 -2
- package/dist/{repl-editor-BmQOyZJd.mjs.map → repl-editor-BCozyiNq.mjs.map} +1 -1
- package/dist/{runtime-SxHHEzVb.mjs → runtime-Zkg3SUwi.mjs} +1974 -1217
- package/dist/runtime-Zkg3SUwi.mjs.map +1 -0
- package/dist/{service-DiEtAsvc.mjs → service-BCRJ-3NV.mjs} +18 -1
- package/dist/{service-DiEtAsvc.mjs.map → service-BCRJ-3NV.mjs.map} +1 -1
- package/dist/service-CPMlIg3X.mjs +3 -0
- package/dist/tailor-proto/src/tailor/v1/aigateway_pb.d.mts +2 -2
- package/dist/tailor-proto/src/tailor/v1/aigateway_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/application_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/application_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/auth_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/auth_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/events_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/events_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/executor_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/executor_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/function_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/function_registry_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/function_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/http_adapter_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/idp_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/idp_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/metadata_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/metadata_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/meter_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/pipeline_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/pipeline_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/secret_manager_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/secret_manager_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/service_pb.d.mts +2 -2
- package/dist/tailor-proto/src/tailor/v1/stateflow_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/stateflow_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/staticwebsite_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/staticwebsite_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/tailordb_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/tailordb_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/telemetryrouter_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/telemetryrouter_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/workflow_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/workflow_resource_pb.d.mts +1 -1
- package/dist/tailor-proto/src/tailor/v1/workspace_pb.d.mts +2 -2
- package/dist/tailor-proto/src/tailor/v1/workspace_resource_pb.d.mts +1 -1
- package/dist/vitest/index.mjs +2 -1
- package/dist/vitest/index.mjs.map +1 -1
- package/docs/cli/application.md +21 -11
- package/docs/cli/setup.md +25 -0
- package/docs/cli-reference.md +1 -0
- package/package.json +8 -8
- package/dist/application-BAo_zFA4.mjs +0 -3
- package/dist/application-DgTCDMZY.mjs.map +0 -1
- package/dist/runtime-SxHHEzVb.mjs.map +0 -1
- package/dist/service-BXmdFwSH.mjs +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# @tailor-platform/sdk
|
|
2
2
|
|
|
3
|
+
## 1.74.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1652](https://github.com/tailor-platform/sdk/pull/1652) [`6c33b01`](https://github.com/tailor-platform/sdk/commit/6c33b01eedfbf85382f1d51d45496b79a372dca7) Thanks [@toiroakr](https://github.com/toiroakr)! - Add `tailor-sdk setup delete <file...>` to cleanly remove generated CI workflow/action files together with their `.github/tailor-sdk.lock` entries. It only deletes files recorded in the lock, warns when an action is still referenced by a `setup coordinate` workflow, and removes the composite action's directory once it is empty.
|
|
8
|
+
|
|
9
|
+
- [#1612](https://github.com/tailor-platform/sdk/pull/1612) [`7e7f00e`](https://github.com/tailor-platform/sdk/commit/7e7f00ee769d561abf12fc588ad10accd78770f2) Thanks [@dqn](https://github.com/dqn)! - Allow `tailor-sdk deploy --config` to accept comma-separated config paths so interdependent apps can be deployed together. Application, executor, workflow, workflow job, StaticWebsite, TailorDB, Auth, Auth connection, IdP, Resolver, AIGateway, and Secret Manager vault names must be unique across all configs passed to a single deploy, and resources still owned by another config in the same deploy are no longer deleted.
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#1646](https://github.com/tailor-platform/sdk/pull/1646) [`6ea74c1`](https://github.com/tailor-platform/sdk/commit/6ea74c11bd3d7a9e44e1afdedaf6328203f7745a) Thanks [@dqn](https://github.com/dqn)! - Keep deploy ownership handling consistent across resource types without changing deploy behavior.
|
|
14
|
+
|
|
15
|
+
- [#1655](https://github.com/tailor-platform/sdk/pull/1655) [`db7cbef`](https://github.com/tailor-platform/sdk/commit/db7cbef744240795c6b1281dc96f8e9edd8e83f9) Thanks [@toiroakr](https://github.com/toiroakr)! - Reject duplicate executor names, and duplicate resolver names within the same namespace, with a clear error at load time instead of silently deploying only one of them.
|
|
16
|
+
|
|
17
|
+
- [#1648](https://github.com/tailor-platform/sdk/pull/1648) [`f7eb527`](https://github.com/tailor-platform/sdk/commit/f7eb527be823a5cafc94717118a97cc7c450ef80) Thanks [@dqn](https://github.com/dqn)! - Keep resolver bundle cache entries separate across namespaces.
|
|
18
|
+
|
|
19
|
+
- [#1626](https://github.com/tailor-platform/sdk/pull/1626) [`06cc5f2`](https://github.com/tailor-platform/sdk/commit/06cc5f2960c5a09e9783d6b0923ed8c1b3d606a8) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update dependency politty to v0.11.0
|
|
20
|
+
|
|
21
|
+
- [#1645](https://github.com/tailor-platform/sdk/pull/1645) [`fecb691`](https://github.com/tailor-platform/sdk/commit/fecb691a4cedf01d65eec51c39712b23065ed36b) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update oxc
|
|
22
|
+
|
|
23
|
+
- [#1660](https://github.com/tailor-platform/sdk/pull/1660) [`5b7801f`](https://github.com/tailor-platform/sdk/commit/5b7801f82dec177fa9dc7b7eb8eeec7536dbbcb5) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update dependency rolldown to v1.1.4
|
|
24
|
+
|
|
25
|
+
- [#1650](https://github.com/tailor-platform/sdk/pull/1650) [`d42477b`](https://github.com/tailor-platform/sdk/commit/d42477bfedb4463bec9345c91a15ea5431bc877c) Thanks [@toiroakr](https://github.com/toiroakr)! - Fix schema snapshot normalization mutating the input snapshot in place, which could cause a caller-held `SchemaSnapshot` reference to silently change after normalization.
|
|
26
|
+
|
|
3
27
|
## 1.73.3
|
|
4
28
|
### Patch Changes
|
|
5
29
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as isSdkBranded } from "./brand-Eo4pLXPJ.mjs";
|
|
2
2
|
import { t as assertDefined } from "./assert-DBxo8jPo.mjs";
|
|
3
3
|
import { a as parseBoolean, n as logger, r as styles } from "./logger-BEiZZ3qT.mjs";
|
|
4
|
-
import { a as TailorFieldSchema, i as AuthInvokerSchema, n as ExecutorSchema, o as loadFilesWithIgnores, r as AuthConfigSchema, s as functionSchema, t as createExecutorService } from "./service-
|
|
4
|
+
import { a as TailorFieldSchema, i as AuthInvokerSchema, n as ExecutorSchema, o as loadFilesWithIgnores, r as AuthConfigSchema, s as functionSchema, t as createExecutorService } from "./service-BCRJ-3NV.mjs";
|
|
5
5
|
import { n as enumConstantsPlugin, t as EnumConstantsGeneratorID } from "./enum-constants-j9QBF0cB.mjs";
|
|
6
6
|
import { t as multiline } from "./multiline-sfHpTZZK.mjs";
|
|
7
7
|
import { n as fileUtilsPlugin, t as FileUtilsGeneratorID } from "./file-utils-DcyIPFQh.mjs";
|
|
@@ -1540,8 +1540,8 @@ function createDepCollectorPlugin() {
|
|
|
1540
1540
|
|
|
1541
1541
|
//#endregion
|
|
1542
1542
|
//#region src/cli/cache/bundle-cache.ts
|
|
1543
|
-
function buildCacheKey(kind, name) {
|
|
1544
|
-
return `${kind}:${name}`;
|
|
1543
|
+
function buildCacheKey(kind, name, namespace) {
|
|
1544
|
+
return namespace ? `${kind}:${namespace}:${name}` : `${kind}:${name}`;
|
|
1545
1545
|
}
|
|
1546
1546
|
function combineHash(fileHash, contextHash) {
|
|
1547
1547
|
if (!contextHash) return fileHash;
|
|
@@ -1568,10 +1568,11 @@ function computeBundlerContextHash(params) {
|
|
|
1568
1568
|
* @returns The bundled code string
|
|
1569
1569
|
*/
|
|
1570
1570
|
async function withCache(params) {
|
|
1571
|
-
const { cache, kind, name, sourceFile, contextHash, build } = params;
|
|
1571
|
+
const { cache, kind, namespace, name, sourceFile, contextHash, build } = params;
|
|
1572
1572
|
if (!cache) return await build([]);
|
|
1573
1573
|
const content = cache.tryRestore({
|
|
1574
1574
|
kind,
|
|
1575
|
+
namespace,
|
|
1575
1576
|
name,
|
|
1576
1577
|
contextHash
|
|
1577
1578
|
});
|
|
@@ -1583,6 +1584,7 @@ async function withCache(params) {
|
|
|
1583
1584
|
const code = await build([plugin]);
|
|
1584
1585
|
cache.save({
|
|
1585
1586
|
kind,
|
|
1587
|
+
namespace,
|
|
1586
1588
|
name,
|
|
1587
1589
|
sourceFile,
|
|
1588
1590
|
content: code,
|
|
@@ -1598,7 +1600,7 @@ async function withCache(params) {
|
|
|
1598
1600
|
*/
|
|
1599
1601
|
function createBundleCache(store) {
|
|
1600
1602
|
function tryRestore(params) {
|
|
1601
|
-
const cacheKey = buildCacheKey(params.kind, params.name);
|
|
1603
|
+
const cacheKey = buildCacheKey(params.kind, params.name, params.namespace);
|
|
1602
1604
|
const entry = store.getEntry(cacheKey);
|
|
1603
1605
|
if (!entry) return;
|
|
1604
1606
|
let currentHash;
|
|
@@ -1611,8 +1613,8 @@ function createBundleCache(store) {
|
|
|
1611
1613
|
return store.restoreBundleContent(cacheKey);
|
|
1612
1614
|
}
|
|
1613
1615
|
function save(params) {
|
|
1614
|
-
const { kind, name, sourceFile, content, dependencyPaths, contextHash } = params;
|
|
1615
|
-
const cacheKey = buildCacheKey(kind, name);
|
|
1616
|
+
const { kind, namespace, name, sourceFile, content, dependencyPaths, contextHash } = params;
|
|
1617
|
+
const cacheKey = buildCacheKey(kind, name, namespace);
|
|
1616
1618
|
const allDeps = dependencyPaths.includes(sourceFile) ? dependencyPaths : [sourceFile, ...dependencyPaths];
|
|
1617
1619
|
const inputHash = combineHash(hashFiles(allDeps), contextHash);
|
|
1618
1620
|
const contentHash = hashContent(content);
|
|
@@ -4403,8 +4405,23 @@ function assertUniqueLocalTailorDBTypeNames(args) {
|
|
|
4403
4405
|
*/
|
|
4404
4406
|
async function assertUniqueTailorDBTypeNamesWithExternal(args) {
|
|
4405
4407
|
const localSources = collectLocalTailorDBTypeNameSources(args);
|
|
4406
|
-
const
|
|
4407
|
-
|
|
4408
|
+
const plannedExternalServices = args.plannedExternalTailorDBServices ?? [];
|
|
4409
|
+
const plannedExternalNamespaces = new Set(plannedExternalServices.map((service) => service.namespace));
|
|
4410
|
+
const plannedExternalSources = collectLocalTailorDBTypeNameSources({ tailorDBServices: plannedExternalServices }).map((source) => ({
|
|
4411
|
+
...source,
|
|
4412
|
+
kind: "external"
|
|
4413
|
+
}));
|
|
4414
|
+
const remoteExternalNamespaces = args.externalTailorDBNamespaces.filter((namespace) => !plannedExternalNamespaces.has(namespace));
|
|
4415
|
+
const externalSources = remoteExternalNamespaces.length > 0 ? await fetchExternalTailorDBTypeNameSources({
|
|
4416
|
+
client: args.client,
|
|
4417
|
+
workspaceId: args.workspaceId,
|
|
4418
|
+
externalTailorDBNamespaces: remoteExternalNamespaces
|
|
4419
|
+
}) : [];
|
|
4420
|
+
assertUniqueTailorDBTypeNames({ sources: [
|
|
4421
|
+
...localSources,
|
|
4422
|
+
...plannedExternalSources,
|
|
4423
|
+
...externalSources
|
|
4424
|
+
] });
|
|
4408
4425
|
}
|
|
4409
4426
|
function formatTailorDBTypeNameSource(source) {
|
|
4410
4427
|
const namespaceLabel = source.kind === "external" ? `external namespace "${source.namespace}"` : `namespace "${source.namespace}"`;
|
|
@@ -5257,12 +5274,12 @@ async function bundleResolvers(namespace, config, triggerContext, cache, inlineS
|
|
|
5257
5274
|
} catch {
|
|
5258
5275
|
tsconfig = void 0;
|
|
5259
5276
|
}
|
|
5260
|
-
const results = await withBundleConcurrency(resolvers, (resolver) => bundleSingleResolver(resolver, outputDir, tsconfig, triggerContext, cache, inlineSourcemap, bundleLogLevel));
|
|
5277
|
+
const results = await withBundleConcurrency(resolvers, (resolver) => bundleSingleResolver(namespace, resolver, outputDir, tsconfig, triggerContext, cache, inlineSourcemap, bundleLogLevel));
|
|
5261
5278
|
for (const [name, code] of results) bundledCode.set(name, code);
|
|
5262
5279
|
logger.log(`${styles.success("Bundled")} ${styles.info(`"${namespace}"`)}`);
|
|
5263
5280
|
return bundledCode;
|
|
5264
5281
|
}
|
|
5265
|
-
async function bundleSingleResolver(resolver, outputDir, tsconfig, triggerContext, cache, inlineSourcemap, bundleLogLevel = "DEBUG") {
|
|
5282
|
+
async function bundleSingleResolver(namespace, resolver, outputDir, tsconfig, triggerContext, cache, inlineSourcemap, bundleLogLevel = "DEBUG") {
|
|
5266
5283
|
const serializedTriggerContext = serializeTriggerContext(triggerContext);
|
|
5267
5284
|
const contextHash = computeBundlerContextHash({
|
|
5268
5285
|
sourceFile: resolver.sourceFile,
|
|
@@ -5274,6 +5291,7 @@ async function bundleSingleResolver(resolver, outputDir, tsconfig, triggerContex
|
|
|
5274
5291
|
const code = await withCache({
|
|
5275
5292
|
cache,
|
|
5276
5293
|
kind: "resolver",
|
|
5294
|
+
namespace,
|
|
5277
5295
|
name: resolver.name,
|
|
5278
5296
|
sourceFile: resolver.sourceFile,
|
|
5279
5297
|
contextHash,
|
|
@@ -5368,9 +5386,26 @@ function createResolverService(namespace, config) {
|
|
|
5368
5386
|
const resolverFiles = loadFilesWithIgnores(config);
|
|
5369
5387
|
logger.log(`Found ${styles.highlight(resolverFiles.length.toString())} resolver files for service ${styles.highlight(`"${namespace}"`)}`);
|
|
5370
5388
|
await Promise.all(resolverFiles.map((resolverFile) => loadResolverForFile(resolverFile)));
|
|
5389
|
+
assertUniqueResolverNames(resolvers, namespace);
|
|
5371
5390
|
}
|
|
5372
5391
|
};
|
|
5373
5392
|
}
|
|
5393
|
+
/**
|
|
5394
|
+
* Assert that every loaded resolver in a namespace has a unique name.
|
|
5395
|
+
* Resolvers are stored by source file, so two files declaring the same
|
|
5396
|
+
* `name` would otherwise silently share a single bundle cache entry.
|
|
5397
|
+
* @param resolvers - Loaded resolvers keyed by source file
|
|
5398
|
+
* @param namespace - The namespace the resolvers belong to
|
|
5399
|
+
*/
|
|
5400
|
+
function assertUniqueResolverNames(resolvers, namespace) {
|
|
5401
|
+
const seenNames = /* @__PURE__ */ new Map();
|
|
5402
|
+
for (const [file, resolver] of Object.entries(resolvers)) {
|
|
5403
|
+
const relativePath = path.relative(process.cwd(), file);
|
|
5404
|
+
const existing = seenNames.get(resolver.name);
|
|
5405
|
+
if (existing) throw new Error(`Duplicate resolver name "${resolver.name}" found in namespace "${namespace}":\n - ${existing}\n - ${relativePath}\nEach resolver must have a unique name within a namespace.`);
|
|
5406
|
+
seenNames.set(resolver.name, relativePath);
|
|
5407
|
+
}
|
|
5408
|
+
}
|
|
5374
5409
|
|
|
5375
5410
|
//#endregion
|
|
5376
5411
|
//#region src/cli/services/workflow/source-transformer.ts
|
|
@@ -5937,6 +5972,12 @@ function resolveInlineSourcemap(configValue) {
|
|
|
5937
5972
|
return true;
|
|
5938
5973
|
}
|
|
5939
5974
|
|
|
5975
|
+
//#endregion
|
|
5976
|
+
//#region src/cli/shared/resolver-bundle-key.ts
|
|
5977
|
+
function resolverBundleKey(namespace, resolverName) {
|
|
5978
|
+
return `${namespace}:${resolverName}`;
|
|
5979
|
+
}
|
|
5980
|
+
|
|
5940
5981
|
//#endregion
|
|
5941
5982
|
//#region src/parser/service/aigateway/schema.ts
|
|
5942
5983
|
const NAME_PATTERN = /^[a-z0-9][a-z0-9-]{1,28}[a-z0-9]$/;
|
|
@@ -6424,7 +6465,7 @@ async function loadApplication(params) {
|
|
|
6424
6465
|
};
|
|
6425
6466
|
for (const pipeline of resolverResult.resolverServices) {
|
|
6426
6467
|
const resolverBundles = await bundleResolvers(pipeline.namespace, pipeline.config, triggerContext, bundleCache, inlineSourcemap, bundleLogLevel);
|
|
6427
|
-
for (const [name, code] of resolverBundles) bundledScripts.resolvers.set(name, code);
|
|
6468
|
+
for (const [name, code] of resolverBundles) bundledScripts.resolvers.set(resolverBundleKey(pipeline.namespace, name), code);
|
|
6428
6469
|
}
|
|
6429
6470
|
if (executorService) bundledScripts.executors = await bundleExecutors({
|
|
6430
6471
|
config: executorService.config,
|
|
@@ -6491,5 +6532,5 @@ async function loadApplication(params) {
|
|
|
6491
6532
|
}
|
|
6492
6533
|
|
|
6493
6534
|
//#endregion
|
|
6494
|
-
export {
|
|
6495
|
-
//# sourceMappingURL=application-
|
|
6535
|
+
export { initOAuth2Client as $, hasUserTokenEntry as A, resolveUserTokenKey as B, getDistDir as C, deleteUserTokens as D, loadConfig as E, loadPlatformClientConfig as F, fetchAll as G, writePlatformConfig as H, loadStoredUserTokens as I, fetchPlatformMachineUserToken as J, fetchMachineUserToken as K, loadWorkspaceId as L, loadConfigPath as M, loadConsoleBaseUrl as N, fetchLatestToken as O, loadMachineUserName as P, getPlatformBaseUrl as Q, platformConfigFromProfile as R, createBundleCache as S, hashFile as T, closeConnectionPool as U, saveUserTokens as V, defaultPlatformBaseUrl as W, getConsoleBaseUrl as X, fetchUserInfo as Y, getOAuth2ClientId as Z, composeFunctionTreeshakeOptions as _, resolveInlineSourcemap as a, getPluginGenerationDependencies as b, HTTP_METHODS as c, buildResolverOperationHookExpr as d, initOperatorClient as et, assertUniqueLocalTailorDBTypeNames as f, platformBundleDefinePlugin as g, stringifyFunction as h, resolverBundleKey as i, loadAccessToken as j, hasAnyUserTokenEntry as k, INVOKER_EXPR as l, TailorDBTypeSchema as m, generatePluginFilesIfNeeded as n, resolveStaticWebsiteUrls as nt, WorkflowJobSchema as o, assertUniqueTailorDBTypeNamesWithExternal as p, fetchPaged as q, loadApplication as r, byName as rt, ResolverSchema as s, defineApplication as t, isDefaultPlatform as tt, buildExecutorArgsExpr as u, createLogLevelTreeshakeOptions as v, hashContent as w, hasGenerationHooks as x, resolveBundleLogLevel as y, readPlatformConfig as z };
|
|
6536
|
+
//# sourceMappingURL=application-DwmoI6ZQ.mjs.map
|