@spottoai/types-package 1.0.2-beta.360 → 1.0.2-beta.361

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 (36) hide show
  1. package/README.md +28 -0
  2. package/dist/azure/billingArtifactCanonicalization.d.ts +3 -1
  3. package/dist/azure/billingArtifactCanonicalization.d.ts.map +1 -1
  4. package/dist/azure/billingArtifactCanonicalization.js +123 -43
  5. package/dist/azure/billingArtifactCanonicalization.js.map +1 -1
  6. package/dist/azure/billingArtifactGeneration.d.ts +53 -1
  7. package/dist/azure/billingArtifactGeneration.d.ts.map +1 -1
  8. package/dist/azure/billingArtifactGeneration.js +190 -25
  9. package/dist/azure/billingArtifactGeneration.js.map +1 -1
  10. package/dist/azure/billingArtifactLimits.d.ts +19 -0
  11. package/dist/azure/billingArtifactLimits.d.ts.map +1 -0
  12. package/dist/azure/billingArtifactLimits.js +22 -0
  13. package/dist/azure/billingArtifactLimits.js.map +1 -0
  14. package/dist/azure/billingPlots.d.ts +26 -3
  15. package/dist/azure/billingPlots.d.ts.map +1 -1
  16. package/dist/azure/billingPlots.js +257 -10
  17. package/dist/azure/billingPlots.js.map +1 -1
  18. package/dist/azure/views.d.ts.map +1 -1
  19. package/dist/azure/views.js +15 -3
  20. package/dist/azure/views.js.map +1 -1
  21. package/dist/common/artifactControlData.d.ts +16 -2
  22. package/dist/common/artifactControlData.d.ts.map +1 -1
  23. package/dist/common/artifactControlData.js +129 -23
  24. package/dist/common/artifactControlData.js.map +1 -1
  25. package/dist/esm/azure/billingArtifactCanonicalization.js +121 -42
  26. package/dist/esm/azure/billingArtifactGeneration.js +186 -25
  27. package/dist/esm/azure/billingArtifactLimits.js +18 -0
  28. package/dist/esm/azure/billingPlots.js +253 -10
  29. package/dist/esm/azure/views.js +16 -4
  30. package/dist/esm/common/artifactControlData.js +127 -22
  31. package/dist/esm/index.js +1 -0
  32. package/dist/index.d.ts +1 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +1 -0
  35. package/dist/index.js.map +1 -1
  36. package/package.json +4 -2
@@ -1,4 +1,4 @@
1
- import { allowedArtifactReferenceField, containsForbiddenArtifactControlData, } from '../common/artifactControlData.js';
1
+ import { allowedArtifactReferenceField, allowedArtifactTraversalField, containsForbiddenArtifactControlData, } from '../common/artifactControlData.js';
2
2
  import { isArtifactOwnershipBinding, isArtifactPublicationDecision, isEnforceableArtifactOwnershipBinding, } from '../common/artifactEvidence.js';
3
3
  import { isArtifactRevisionVector, isStrictLogicalArtifactReference } from '../common/artifactEvidenceValidation.js';
4
4
  const isNonEmptyString = (value) => typeof value === 'string' && value.trim().length > 0;
@@ -41,6 +41,9 @@ const isPositiveSafeInteger = (value) => Number.isSafeInteger(value) && Number(v
41
41
  const isNonNegativeSafeInteger = (value) => Number.isSafeInteger(value) && Number(value) >= 0;
42
42
  const isSha256 = (value) => typeof value === 'string' && SHA256_PATTERN.test(value);
43
43
  const allowedViewArtifactPaths = (artifacts) => Array.isArray(artifacts) ? artifacts.flatMap(artifact => allowedArtifactReferenceField(artifact, 'path')) : [];
44
+ const containsForbiddenViewArtifactControlData = (value, allowedReferenceFields = []) => containsForbiddenArtifactControlData(value, allowedReferenceFields, {
45
+ requireAllowedFieldTraversalContext: true,
46
+ });
44
47
  const isSafePathSegment = (value) => isStrictNonEmptyString(value) && !/[\\/?#%]/.test(value) && value !== '.' && value !== '..';
45
48
  const isStrictCanonicalIsoTimestamp = (value) => {
46
49
  if (!isStrictNonEmptyString(value))
@@ -86,7 +89,11 @@ const hasRequiredViewDependencies = (decision) => {
86
89
  };
87
90
  /** Validates an evidence-aware completed portal or plugin generation manifest. */
88
91
  export const isCompletedViewManifestV3 = (value) => {
89
- if (!isRecord(value) || containsForbiddenArtifactControlData(value, allowedViewArtifactPaths(value.artifacts)))
92
+ if (!isRecord(value) ||
93
+ containsForbiddenViewArtifactControlData(value, [
94
+ ...allowedArtifactTraversalField(value, 'artifacts'),
95
+ ...allowedViewArtifactPaths(value.artifacts),
96
+ ]))
90
97
  return false;
91
98
  if (value.schemaVersion !== 3 || value.status !== 'completed')
92
99
  return false;
@@ -152,9 +159,14 @@ const hasMatchingSurfaceDependency = (decision, name, surface) => {
152
159
  /** Validates the promoted pointer for an evidence-enforced portal/plugin view pair. */
153
160
  export const isCompletedAzureViewSetV2 = (value) => {
154
161
  const allowedReferences = isRecord(value)
155
- ? [...allowedArtifactReferenceField(value.portal, 'manifestPath'), ...allowedArtifactReferenceField(value.plugin, 'manifestPath')]
162
+ ? [
163
+ ...allowedArtifactTraversalField(value, 'portal'),
164
+ ...allowedArtifactTraversalField(value, 'plugin'),
165
+ ...allowedArtifactReferenceField(value.portal, 'manifestPath'),
166
+ ...allowedArtifactReferenceField(value.plugin, 'manifestPath'),
167
+ ]
156
168
  : [];
157
- if (!isRecord(value) || containsForbiddenArtifactControlData(value, allowedReferences))
169
+ if (!isRecord(value) || containsForbiddenViewArtifactControlData(value, allowedReferences))
158
170
  return false;
159
171
  if (value.schemaVersion !== 2 || value.status !== 'completed')
160
172
  return false;
@@ -15,6 +15,7 @@ const FORBIDDEN_SENSITIVE_FIELDS = new Set([
15
15
  'sharedaccesssignature',
16
16
  'token',
17
17
  ]);
18
+ const FORBIDDEN_PROTOTYPE_FIELDS = new Set(['proto', 'prototype', 'constructor']);
18
19
  const PHYSICAL_REFERENCE_FIELDS = new Set([
19
20
  'artifactpath',
20
21
  'blobpath',
@@ -43,13 +44,16 @@ const PHYSICAL_REFERENCE_FIELDS = new Set([
43
44
  ]);
44
45
  const PERCENT_ENCODED_BYTE_PATTERN = /%[0-9A-Fa-f]{2}/;
45
46
  const URI_SCHEME_PATTERN = /^[A-Za-z][A-Za-z0-9+.-]*:/;
47
+ const SHA256_PATTERN = /^[0-9A-Fa-f]{64}$/;
48
+ export const ARTIFACT_CONTROL_DATA_MAX_VISITED_NODES = 100000;
46
49
  const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
47
50
  const hasControlCharacters = (value) => Array.from(value).some(character => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127);
48
51
  const normalizeFieldName = (key) => key.replace(/[-_\s]/g, '').toLowerCase();
49
52
  const hasDotTraversal = (value) => value.split(/[\\/]/).some(segment => segment === '.' || segment === '..');
50
- const isForbiddenReferenceValue = (value, allowUriScheme = false) => hasControlCharacters(value) ||
53
+ const isForbiddenReferenceValue = (value, allowUriScheme = false, allowDigestLike = false, rejectDigestLikeValues = false) => hasControlCharacters(value) ||
51
54
  PERCENT_ENCODED_BYTE_PATTERN.test(value) ||
52
55
  (!allowUriScheme && URI_SCHEME_PATTERN.test(value)) ||
56
+ (rejectDigestLikeValues && !allowDigestLike && SHA256_PATTERN.test(value)) ||
53
57
  value.startsWith('/') ||
54
58
  value.startsWith('\\\\') ||
55
59
  /^[A-Za-z]:[\\/]/.test(value) ||
@@ -69,27 +73,128 @@ const isSafeAzureResourceId = (key, value) => {
69
73
  export const allowedArtifactReferenceField = (object, key) => isRecord(object) ? [{ object, key }] : [];
70
74
  /** Marks a structurally validated identity field whose value is allowed by its owning schema. */
71
75
  export const allowedArtifactIdentityField = (object, key) => isRecord(object) ? [{ object, key, allowUriScheme: true }] : [];
72
- /** Rejects exact normalized sensitive fields and physical-reference control data recursively. */
73
- export const containsForbiddenArtifactControlData = (value, allowedReferenceFields = []) => {
74
- if (typeof value === 'string')
75
- return isForbiddenReferenceValue(value);
76
- if (Array.isArray(value))
77
- return value.some(child => containsForbiddenArtifactControlData(child, allowedReferenceFields));
78
- if (!isRecord(value))
79
- return false;
80
- return Object.entries(value).some(([key, child]) => {
81
- if (hasControlCharacters(key))
82
- return true;
83
- const normalizedKey = normalizeFieldName(key);
84
- if (FORBIDDEN_SENSITIVE_FIELDS.has(normalizedKey))
76
+ /** Marks an exact schema edge whose descendants may use object-indexed field allowances. */
77
+ export const allowedArtifactTraversalField = (object, key) => isRecord(object) ? [{ object, key, allowChildArtifactFields: true }] : [];
78
+ const indexAllowedArtifactFields = (allowedReferenceFields) => {
79
+ const index = new WeakMap();
80
+ for (const field of allowedReferenceFields) {
81
+ let objectFields = index.get(field.object);
82
+ if (!objectFields) {
83
+ objectFields = new Map();
84
+ index.set(field.object, objectFields);
85
+ }
86
+ const existing = objectFields.get(field.key);
87
+ objectFields.set(field.key, {
88
+ object: field.object,
89
+ key: field.key,
90
+ allowUriScheme: existing?.allowUriScheme || field.allowUriScheme,
91
+ allowUriSchemeInStringArray: existing?.allowUriSchemeInStringArray || field.allowUriSchemeInStringArray,
92
+ allowDigestLike: existing?.allowDigestLike || field.allowDigestLike,
93
+ allowControlField: existing?.allowControlField || field.allowControlField,
94
+ allowChildArtifactFields: existing?.allowChildArtifactFields || field.allowChildArtifactFields,
95
+ });
96
+ }
97
+ return index;
98
+ };
99
+ const containsForbiddenArtifactControlDataWithIndex = (value, allowedReferenceFields, options) => {
100
+ const pending = [{ kind: 'visit', value, allowIndexedFields: true }];
101
+ const activeContainers = new WeakSet();
102
+ const completedScanPolicies = new WeakMap();
103
+ let visitedNodeCount = 0;
104
+ const hasCompletedStricterScan = (container, scanPolicy) => completedScanPolicies.get(container)?.some(completedPolicy => (completedPolicy & scanPolicy) === completedPolicy) ?? false;
105
+ const completeScan = (container, scanPolicy) => {
106
+ const completedPolicies = completedScanPolicies.get(container) ?? [];
107
+ if (completedPolicies.some(completedPolicy => (completedPolicy & scanPolicy) === completedPolicy))
108
+ return;
109
+ completedScanPolicies.set(container, [...completedPolicies.filter(completedPolicy => (scanPolicy & completedPolicy) !== scanPolicy), scanPolicy]);
110
+ };
111
+ while (pending.length > 0) {
112
+ const candidate = pending.pop();
113
+ if (candidate.kind === 'leave') {
114
+ activeContainers.delete(candidate.container);
115
+ completeScan(candidate.container, candidate.scanPolicy);
116
+ continue;
117
+ }
118
+ if (typeof candidate.value === 'string') {
119
+ if (isForbiddenReferenceValue(candidate.value, false, false, options.rejectDigestLikeValues))
120
+ return true;
121
+ continue;
122
+ }
123
+ if (Array.isArray(candidate.value)) {
124
+ visitedNodeCount += 1;
125
+ if (visitedNodeCount > ARTIFACT_CONTROL_DATA_MAX_VISITED_NODES)
126
+ return true;
127
+ if (activeContainers.has(candidate.value))
128
+ return true;
129
+ const scanPolicy = (candidate.allowIndexedFields ? 1 : 0) |
130
+ (candidate.allowedStringArrayField ? 2 : 0) |
131
+ (candidate.allowedStringArrayField?.allowDigestLike ? 4 : 0);
132
+ if (hasCompletedStricterScan(candidate.value, scanPolicy))
133
+ continue;
134
+ activeContainers.add(candidate.value);
135
+ pending.push({ kind: 'leave', container: candidate.value, scanPolicy });
136
+ for (let index = candidate.value.length - 1; index >= 0; index -= 1) {
137
+ const child = candidate.value[index];
138
+ if (candidate.allowedStringArrayField && typeof child === 'string') {
139
+ if (isForbiddenReferenceValue(child, true, candidate.allowedStringArrayField.allowDigestLike, options.rejectDigestLikeValues)) {
140
+ return true;
141
+ }
142
+ }
143
+ else {
144
+ pending.push({ kind: 'visit', value: child, allowIndexedFields: candidate.allowIndexedFields });
145
+ }
146
+ }
147
+ continue;
148
+ }
149
+ if (!isRecord(candidate.value))
150
+ continue;
151
+ visitedNodeCount += 1;
152
+ if (visitedNodeCount > ARTIFACT_CONTROL_DATA_MAX_VISITED_NODES)
85
153
  return true;
86
- const allowedField = allowedReferenceFields.find(field => field.object === value && field.key === key);
87
- if (allowedField?.allowUriScheme && typeof child === 'string')
88
- return isForbiddenReferenceValue(child, true);
89
- if (PHYSICAL_REFERENCE_FIELDS.has(normalizedKey) && !allowedField)
154
+ if (activeContainers.has(candidate.value))
90
155
  return true;
91
- if (isSafeAzureResourceId(key, child))
92
- return false;
93
- return containsForbiddenArtifactControlData(child, allowedReferenceFields);
94
- });
156
+ const scanPolicy = candidate.allowIndexedFields ? 1 : 0;
157
+ if (hasCompletedStricterScan(candidate.value, scanPolicy))
158
+ continue;
159
+ activeContainers.add(candidate.value);
160
+ pending.push({ kind: 'leave', container: candidate.value, scanPolicy });
161
+ for (const [key, child] of Object.entries(candidate.value)) {
162
+ if (hasControlCharacters(key))
163
+ return true;
164
+ const normalizedKey = normalizeFieldName(key);
165
+ if (FORBIDDEN_PROTOTYPE_FIELDS.has(normalizedKey))
166
+ return true;
167
+ if (FORBIDDEN_SENSITIVE_FIELDS.has(normalizedKey))
168
+ return true;
169
+ const allowedField = candidate.allowIndexedFields ? allowedReferenceFields.get(candidate.value)?.get(key) : undefined;
170
+ if (options.forbiddenControlFields?.has(normalizedKey) && !allowedField?.allowControlField)
171
+ return true;
172
+ if (options.requireSafeAzureResourceIds && normalizedKey === 'resourceid') {
173
+ if (!isSafeAzureResourceId(key, child))
174
+ return true;
175
+ continue;
176
+ }
177
+ if (allowedField && typeof child === 'string' && (allowedField.allowUriScheme || allowedField.allowDigestLike)) {
178
+ if (isForbiddenReferenceValue(child, allowedField.allowUriScheme, allowedField.allowDigestLike, options.rejectDigestLikeValues))
179
+ return true;
180
+ continue;
181
+ }
182
+ if (allowedField?.allowUriSchemeInStringArray && Array.isArray(child)) {
183
+ pending.push({ kind: 'visit', value: child, allowedStringArrayField: allowedField });
184
+ continue;
185
+ }
186
+ if (PHYSICAL_REFERENCE_FIELDS.has(normalizedKey) && !allowedField)
187
+ return true;
188
+ if (isSafeAzureResourceId(key, child))
189
+ continue;
190
+ pending.push({
191
+ kind: 'visit',
192
+ value: child,
193
+ allowIndexedFields: !options.requireAllowedFieldTraversalContext || Boolean(candidate.allowIndexedFields && allowedField?.allowChildArtifactFields),
194
+ });
195
+ }
196
+ }
197
+ return false;
95
198
  };
199
+ /** Rejects normalized sensitive fields and physical-reference control data with bounded traversal. */
200
+ export const containsForbiddenArtifactControlData = (value, allowedReferenceFields = [], options = {}) => containsForbiddenArtifactControlDataWithIndex(value, indexAllowedArtifactFields(allowedReferenceFields), options);
package/dist/esm/index.js CHANGED
@@ -5,6 +5,7 @@ export * from './azure/activityLogs.js';
5
5
  export * from './azure/budgets.js';
6
6
  export * from './azure/billingGeneration.js';
7
7
  export * from './azure/billingArtifactGeneration.js';
8
+ export * from './azure/billingArtifactLimits.js';
8
9
  export * from './azure/billingArtifactCanonicalization.js';
9
10
  export * from './azure/billingPlots.js';
10
11
  export * from './azure/benefits.js';
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * from './azure/activityLogs';
5
5
  export * from './azure/budgets';
6
6
  export * from './azure/billingGeneration';
7
7
  export * from './azure/billingArtifactGeneration';
8
+ export * from './azure/billingArtifactLimits';
8
9
  export * from './azure/billingArtifactCanonicalization';
9
10
  export * from './azure/billingPlots';
10
11
  export * from './azure/benefits';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ __exportStar(require("./azure/activityLogs"), exports);
21
21
  __exportStar(require("./azure/budgets"), exports);
22
22
  __exportStar(require("./azure/billingGeneration"), exports);
23
23
  __exportStar(require("./azure/billingArtifactGeneration"), exports);
24
+ __exportStar(require("./azure/billingArtifactLimits"), exports);
24
25
  __exportStar(require("./azure/billingArtifactCanonicalization"), exports);
25
26
  __exportStar(require("./azure/billingPlots"), exports);
26
27
  __exportStar(require("./azure/benefits"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAAiE;AACjE,iDAA+B;AAC/B,0DAAwC;AACxC,uDAAqC;AACrC,kDAAgC;AAChC,4DAA0C;AAC1C,oEAAkD;AAClD,0EAAwD;AACxD,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,0DAAwC;AACxC,yDAAuC;AACvC,iDAA+B;AAC/B,wDAAsC;AACtC,0DAAwC;AACxC,+DAA6C;AAC7C,8DAA4C;AAC5C,iEAA+C;AAC/C,8DAA4C;AAC5C,+DAA6C;AAC7C,oDAAkC;AAClC,kDAAgC;AAChC,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,4DAA0C;AAC1C,iEAA+C;AAC/C,0EAAwD;AACxD,+DAA6C;AAC7C,4DAA0C;AAC1C,qDAAmC;AACnC,4DAA0C;AAC1C,yDAAuC;AACvC,wCAAsB;AACtB,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AACxB,2CAAyB;AACzB,4DAA0C;AAC1C,4CAA0B;AAC1B,qDAAmC;AACnC,8CAA4B;AAC5B,uCAAqB;AACrB,2CAAyB;AACzB,iDAA+B;AAC/B,6CAA2B;AAC3B,6DAA2C;AAC3C,yCAAuB;AACvB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAAiE;AACjE,iDAA+B;AAC/B,0DAAwC;AACxC,uDAAqC;AACrC,kDAAgC;AAChC,4DAA0C;AAC1C,oEAAkD;AAClD,gEAA8C;AAC9C,0EAAwD;AACxD,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,0DAAwC;AACxC,yDAAuC;AACvC,iDAA+B;AAC/B,wDAAsC;AACtC,0DAAwC;AACxC,+DAA6C;AAC7C,8DAA4C;AAC5C,iEAA+C;AAC/C,8DAA4C;AAC5C,+DAA6C;AAC7C,oDAAkC;AAClC,kDAAgC;AAChC,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,4DAA0C;AAC1C,iEAA+C;AAC/C,0EAAwD;AACxD,+DAA6C;AAC7C,4DAA0C;AAC1C,qDAAmC;AACnC,4DAA0C;AAC1C,yDAAuC;AACvC,wCAAsB;AACtB,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AACxB,2CAAyB;AACzB,4DAA0C;AAC1C,4CAA0B;AAC1B,qDAAmC;AACnC,8CAA4B;AAC5B,uCAAqB;AACrB,2CAAyB;AACzB,iDAA+B;AAC/B,6CAA2B;AAC3B,6DAA2C;AAC3C,yCAAuB;AACvB,8CAA4B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spottoai/types-package",
3
- "version": "1.0.2-beta.360",
3
+ "version": "1.0.2-beta.361",
4
4
  "description": "Shared TypeScript interfaces for SpottoAI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -65,6 +65,8 @@
65
65
  "dev": "tsc --watch",
66
66
  "clean": "rimraf dist",
67
67
  "check:artifact-evidence-contracts": "node scripts/check-artifact-evidence-contracts.mjs",
68
+ "check:billing-artifact-object-boundaries": "node scripts/check-billing-artifact-object-boundaries.mjs",
69
+ "check:billing-cost-analysis-read-responses": "node scripts/check-billing-cost-analysis-read-responses.mjs",
68
70
  "check:packed-exports": "node scripts/check-packed-aws-exports.mjs",
69
71
  "check:aws-examples": "node scripts/check-aws-example-identifiers.mjs",
70
72
  "check:plugin-public-artifacts": "node scripts/check-plugin-public-artifacts.mjs",
@@ -74,7 +76,7 @@
74
76
  "check:capability-passport-contracts": "node scripts/check-capability-passport-contracts.mjs",
75
77
  "check:commitments-planning": "node scripts/check-commitments-planning.mjs",
76
78
  "prepublishOnly": "npm run clean && npm run build && npm test",
77
- "test": "npm run build && npm run check:artifact-evidence-contracts && npm run check:aws-examples && npm run check:plugin-public-artifacts && npm run check:portal-public-artifacts && npm run check:relationship-public-artifacts && npm run check:azure-view-set-contracts && npm run check:capability-passport-contracts && npm run check:commitments-planning && npm run check:packed-exports",
79
+ "test": "npm run build && npm run check:artifact-evidence-contracts && npm run check:billing-artifact-object-boundaries && npm run check:billing-cost-analysis-read-responses && npm run check:aws-examples && npm run check:plugin-public-artifacts && npm run check:portal-public-artifacts && npm run check:relationship-public-artifacts && npm run check:azure-view-set-contracts && npm run check:capability-passport-contracts && npm run check:commitments-planning && npm run check:packed-exports",
78
80
  "lint": "eslint src --ext .ts",
79
81
  "lint:fix": "eslint src --ext .ts --fix",
80
82
  "format": "prettier --write \"src/**/*.{ts,js,json}\"",