@ankhorage/kubernetes 0.2.0 → 0.3.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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/kubernetes
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v0.1.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v0.2.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
8
  Shared Kubernetes workload driver for provider-neutral Ankhorage infrastructure.
9
9
 
@@ -38,3 +38,21 @@ Source: `src/features/workload-reconciliation/composition/createKubernetesDriver
38
38
  Related symbols: `KubernetesDriver`, `KubernetesDriverOptions`
39
39
 
40
40
  </details>
41
+
42
+ <details>
43
+ <summary>projectKubernetesResourcesAsync</summary>
44
+
45
+ ```ts
46
+ projectKubernetesResourcesAsync(request: KubernetesDriverRequest) => Promise<InfraResult<KubernetesProjection>>
47
+ ```
48
+
49
+ Project portable workload desired state into deterministic standard Kubernetes resources.
50
+
51
+ Resolved secret values are deliberately absent. The projection carries only references for
52
+ runtime materialization immediately before apply.
53
+
54
+ Module: `src/features/workload-reconciliation/application/use-cases/projectKubernetesResourcesAsync.ts`
55
+ Source: `src/features/workload-reconciliation/application/use-cases/projectKubernetesResourcesAsync.ts:23:1`
56
+ Related symbols: `KubernetesDriverRequest`, `KubernetesProjection`
57
+
58
+ </details>
@@ -6,6 +6,8 @@ import type { KubernetesProjection } from '../../../../types/kubernetesResources
6
6
  *
7
7
  * Resolved secret values are deliberately absent. The projection carries only references for
8
8
  * runtime materialization immediately before apply.
9
+ *
10
+ * @readme
9
11
  */
10
12
  export declare function projectKubernetesResourcesAsync(request: KubernetesDriverRequest): Promise<InfraResult<KubernetesProjection>>;
11
13
  //# sourceMappingURL=projectKubernetesResourcesAsync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projectKubernetesResourcesAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/workload-reconciliation/application/use-cases/projectKubernetesResourcesAsync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAEV,oBAAoB,EAErB,MAAM,uCAAuC,CAAC;AAO/C;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CA8B5C"}
1
+ {"version":3,"file":"projectKubernetesResourcesAsync.d.ts","sourceRoot":"","sources":["../../../../../src/features/workload-reconciliation/application/use-cases/projectKubernetesResourcesAsync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAEV,oBAAoB,EAErB,MAAM,uCAAuC,CAAC;AAO/C;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CA8B5C"}
@@ -8,6 +8,8 @@ import { validateKubernetesWorkloads } from './validateKubernetesWorkloads';
8
8
  *
9
9
  * Resolved secret values are deliberately absent. The projection carries only references for
10
10
  * runtime materialization immediately before apply.
11
+ *
12
+ * @readme
11
13
  */
12
14
  export function projectKubernetesResourcesAsync(request) {
13
15
  const validation = validateKubernetesWorkloads(request.workloads);
@@ -1 +1 @@
1
- {"version":3,"file":"projectKubernetesResourcesAsync.js","sourceRoot":"","sources":["../../../../../src/features/workload-reconciliation/application/use-cases/projectKubernetesResourcesAsync.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAgC;IAEhC,MAAM,UAAU,GAAG,2BAA2B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;IAE1F,MAAM,EAAE,SAAS,EAAE,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClC,QAAQ,CAAC,EAAE;QACX,wBAAwB,CAAC,OAAO,EAAE,YAAY,QAAQ,CAAC,EAAE,EAAE,CAAC;KAC7D,CAAC,CACH,CAAC;IACF,MAAM,SAAS,GAAgC,CAAC,iBAAiB,CAAC,CAAC;IACnE,MAAM,cAAc,GAA8B,EAAE,CAAC;IACrD,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,EAAE;YACnD,SAAS;YACT,cAAc,EAAE,iBAAiB,CAAC,KAAK,CAAC,QAAQ;YAChD,cAAc;YACd,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7C,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC;QACrB,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;QACpC,WAAW,EAAE,EAAE;KAChB,CAAC,CAAC;AACL,CAAC;AAED,yEAAyE;AACzE,SAAS,eAAe,CACtB,OAAgC,EAChC,SAAiB;IAEjB,OAAO,+BAA+B,CAAC,OAAO,EAAE;QAC9C,UAAU,EAAE,aAAa,SAAS,EAAE;QACpC,QAAQ,EAAE;YACR,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;SAC3D;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { InfraResult } from '@ankhorage/contracts/infra';\n\nimport type { KubernetesDriverRequest } from '../../../../types/kubernetesDriver';\nimport type {\n KubernetesDesiredResource,\n KubernetesProjection,\n KubernetesSecretBinding,\n} from '../../../../types/kubernetesResources';\nimport { createKubernetesDesiredResource } from '../../utils/createKubernetesDesiredResource';\nimport { createKubernetesIdentity } from '../../utils/createKubernetesIdentity';\nimport { getKubernetesOwnershipQuery } from '../../utils/getKubernetesOwnershipQuery';\nimport { projectKubernetesWorkload } from './projectKubernetesWorkload';\nimport { validateKubernetesWorkloads } from './validateKubernetesWorkloads';\n\n/***\n * Project portable workload desired state into deterministic standard Kubernetes resources.\n *\n * Resolved secret values are deliberately absent. The projection carries only references for\n * runtime materialization immediately before apply.\n */\nexport function projectKubernetesResourcesAsync(\n request: KubernetesDriverRequest,\n): Promise<InfraResult<KubernetesProjection>> {\n const validation = validateKubernetesWorkloads(request.workloads);\n if (validation.length > 0) return Promise.resolve({ ok: false, diagnostics: validation });\n\n const { namespace } = getKubernetesOwnershipQuery(request);\n const namespaceResource = createNamespace(request, namespace);\n const workloadOwners = new Map(\n request.workloads.map((workload) => [\n workload.id,\n createKubernetesIdentity(request, `workload:${workload.id}`),\n ]),\n );\n const resources: KubernetesDesiredResource[] = [namespaceResource];\n const secretBindings: KubernetesSecretBinding[] = [];\n for (const workload of request.workloads) {\n const projected = projectKubernetesWorkload(request, {\n namespace,\n namespaceOwner: namespaceResource.owner.identity,\n workloadOwners,\n workload,\n });\n if (!projected.ok) return Promise.resolve(projected);\n resources.push(...projected.value.resources);\n secretBindings.push(...projected.value.secretBindings);\n }\n return Promise.resolve({\n ok: true,\n value: { resources, secretBindings },\n diagnostics: [],\n });\n}\n\n/*** Create the environment namespace before all namespaced resources. */\nfunction createNamespace(\n request: KubernetesDriverRequest,\n namespace: string,\n): KubernetesDesiredResource {\n return createKubernetesDesiredResource(request, {\n resourceId: `namespace:${namespace}`,\n resource: {\n apiVersion: 'v1',\n kind: 'Namespace',\n metadata: { name: namespace, labels: {}, annotations: {} },\n },\n });\n}\n"]}
1
+ {"version":3,"file":"projectKubernetesResourcesAsync.js","sourceRoot":"","sources":["../../../../../src/features/workload-reconciliation/application/use-cases/projectKubernetesResourcesAsync.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;;;;GAOG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAgC;IAEhC,MAAM,UAAU,GAAG,2BAA2B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;IAE1F,MAAM,EAAE,SAAS,EAAE,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClC,QAAQ,CAAC,EAAE;QACX,wBAAwB,CAAC,OAAO,EAAE,YAAY,QAAQ,CAAC,EAAE,EAAE,CAAC;KAC7D,CAAC,CACH,CAAC;IACF,MAAM,SAAS,GAAgC,CAAC,iBAAiB,CAAC,CAAC;IACnE,MAAM,cAAc,GAA8B,EAAE,CAAC;IACrD,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,EAAE;YACnD,SAAS;YACT,cAAc,EAAE,iBAAiB,CAAC,KAAK,CAAC,QAAQ;YAChD,cAAc;YACd,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7C,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC;QACrB,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;QACpC,WAAW,EAAE,EAAE;KAChB,CAAC,CAAC;AACL,CAAC;AAED,yEAAyE;AACzE,SAAS,eAAe,CACtB,OAAgC,EAChC,SAAiB;IAEjB,OAAO,+BAA+B,CAAC,OAAO,EAAE;QAC9C,UAAU,EAAE,aAAa,SAAS,EAAE;QACpC,QAAQ,EAAE;YACR,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;SAC3D;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { InfraResult } from '@ankhorage/contracts/infra';\n\nimport type { KubernetesDriverRequest } from '../../../../types/kubernetesDriver';\nimport type {\n KubernetesDesiredResource,\n KubernetesProjection,\n KubernetesSecretBinding,\n} from '../../../../types/kubernetesResources';\nimport { createKubernetesDesiredResource } from '../../utils/createKubernetesDesiredResource';\nimport { createKubernetesIdentity } from '../../utils/createKubernetesIdentity';\nimport { getKubernetesOwnershipQuery } from '../../utils/getKubernetesOwnershipQuery';\nimport { projectKubernetesWorkload } from './projectKubernetesWorkload';\nimport { validateKubernetesWorkloads } from './validateKubernetesWorkloads';\n\n/***\n * Project portable workload desired state into deterministic standard Kubernetes resources.\n *\n * Resolved secret values are deliberately absent. The projection carries only references for\n * runtime materialization immediately before apply.\n *\n * @readme\n */\nexport function projectKubernetesResourcesAsync(\n request: KubernetesDriverRequest,\n): Promise<InfraResult<KubernetesProjection>> {\n const validation = validateKubernetesWorkloads(request.workloads);\n if (validation.length > 0) return Promise.resolve({ ok: false, diagnostics: validation });\n\n const { namespace } = getKubernetesOwnershipQuery(request);\n const namespaceResource = createNamespace(request, namespace);\n const workloadOwners = new Map(\n request.workloads.map((workload) => [\n workload.id,\n createKubernetesIdentity(request, `workload:${workload.id}`),\n ]),\n );\n const resources: KubernetesDesiredResource[] = [namespaceResource];\n const secretBindings: KubernetesSecretBinding[] = [];\n for (const workload of request.workloads) {\n const projected = projectKubernetesWorkload(request, {\n namespace,\n namespaceOwner: namespaceResource.owner.identity,\n workloadOwners,\n workload,\n });\n if (!projected.ok) return Promise.resolve(projected);\n resources.push(...projected.value.resources);\n secretBindings.push(...projected.value.secretBindings);\n }\n return Promise.resolve({\n ok: true,\n value: { resources, secretBindings },\n diagnostics: [],\n });\n}\n\n/*** Create the environment namespace before all namespaced resources. */\nfunction createNamespace(\n request: KubernetesDriverRequest,\n namespace: string,\n): KubernetesDesiredResource {\n return createKubernetesDesiredResource(request, {\n resourceId: `namespace:${namespace}`,\n resource: {\n apiVersion: 'v1',\n kind: 'Namespace',\n metadata: { name: namespace, labels: {}, annotations: {} },\n },\n });\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  /** Public shared Kubernetes workload-driver boundary. */
2
+ export { projectKubernetesResourcesAsync } from './features/workload-reconciliation/application/use-cases/projectKubernetesResourcesAsync';
2
3
  export { createKubernetesDriver } from './features/workload-reconciliation/composition/createKubernetesDriver';
3
4
  export type { KubernetesDriver, KubernetesDriverOptions, KubernetesDriverRequest, } from './types/kubernetesDriver';
4
5
  export type { KubernetesApi, KubernetesDesiredResource, KubernetesOwnershipQuery, KubernetesProjection, KubernetesResource, KubernetesResourceMetadata, KubernetesResourceObservation, KubernetesResourceReference, KubernetesSecretBinding, } from './types/kubernetesResources';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uEAAuE,CAAC;AAC/G,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,aAAa,EACb,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,0FAA0F,CAAC;AAC3I,OAAO,EAAE,sBAAsB,EAAE,MAAM,uEAAuE,CAAC;AAC/G,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,aAAa,EACb,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  /** Public shared Kubernetes workload-driver boundary. */
2
+ export { projectKubernetesResourcesAsync } from './features/workload-reconciliation/application/use-cases/projectKubernetesResourcesAsync';
2
3
  export { createKubernetesDriver } from './features/workload-reconciliation/composition/createKubernetesDriver';
3
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uEAAuE,CAAC","sourcesContent":["/** Public shared Kubernetes workload-driver boundary. */\nexport { createKubernetesDriver } from './features/workload-reconciliation/composition/createKubernetesDriver';\nexport type {\n KubernetesDriver,\n KubernetesDriverOptions,\n KubernetesDriverRequest,\n} from './types/kubernetesDriver';\nexport type {\n KubernetesApi,\n KubernetesDesiredResource,\n KubernetesOwnershipQuery,\n KubernetesProjection,\n KubernetesResource,\n KubernetesResourceMetadata,\n KubernetesResourceObservation,\n KubernetesResourceReference,\n KubernetesSecretBinding,\n} from './types/kubernetesResources';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,0FAA0F,CAAC;AAC3I,OAAO,EAAE,sBAAsB,EAAE,MAAM,uEAAuE,CAAC","sourcesContent":["/** Public shared Kubernetes workload-driver boundary. */\nexport { projectKubernetesResourcesAsync } from './features/workload-reconciliation/application/use-cases/projectKubernetesResourcesAsync';\nexport { createKubernetesDriver } from './features/workload-reconciliation/composition/createKubernetesDriver';\nexport type {\n KubernetesDriver,\n KubernetesDriverOptions,\n KubernetesDriverRequest,\n} from './types/kubernetesDriver';\nexport type {\n KubernetesApi,\n KubernetesDesiredResource,\n KubernetesOwnershipQuery,\n KubernetesProjection,\n KubernetesResource,\n KubernetesResourceMetadata,\n KubernetesResourceObservation,\n KubernetesResourceReference,\n KubernetesSecretBinding,\n} from './types/kubernetesResources';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/kubernetes",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Shared Kubernetes workload driver for provider-neutral Ankhorage infrastructure.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -55,7 +55,7 @@
55
55
  "version-packages": "ankhorage-changeset version"
56
56
  },
57
57
  "dependencies": {
58
- "@ankhorage/contracts": "^15.0.0"
58
+ "@ankhorage/contracts": "^16.0.0"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@ankhorage/devtools": "^1.14.6",