@contrail/flexplm 1.3.0-alpha.5 → 1.3.0-alpha.7cd23d9

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 (87) hide show
  1. package/.github/workflows/flexplm-lib.yml +1 -1
  2. package/.github/workflows/publish-to-npm.yml +118 -0
  3. package/CHANGELOG.md +1 -1
  4. package/lib/entity-processor/base-entity-processor.d.ts +42 -42
  5. package/lib/entity-processor/base-entity-processor.js +385 -385
  6. package/lib/entity-processor/base-entity-processor.spec.d.ts +1 -1
  7. package/lib/entity-processor/base-entity-processor.spec.js +397 -397
  8. package/lib/flexplm-request.d.ts +3 -3
  9. package/lib/flexplm-request.js +34 -34
  10. package/lib/flexplm-utils.d.ts +5 -5
  11. package/lib/flexplm-utils.js +33 -33
  12. package/lib/flexplm-utils.spec.d.ts +1 -1
  13. package/lib/flexplm-utils.spec.js +26 -26
  14. package/lib/index.d.ts +22 -22
  15. package/lib/index.js +38 -38
  16. package/lib/interfaces/interfaces.d.ts +105 -105
  17. package/lib/interfaces/interfaces.js +2 -2
  18. package/lib/interfaces/item-family-changes.d.ts +20 -20
  19. package/lib/interfaces/item-family-changes.js +56 -56
  20. package/lib/interfaces/publish-change-data.d.ts +19 -19
  21. package/lib/interfaces/publish-change-data.js +32 -32
  22. package/lib/publish/base-process-publish-assortment-callback.d.ts +9 -9
  23. package/lib/publish/base-process-publish-assortment-callback.js +38 -38
  24. package/lib/publish/base-process-publish-assortment.d.ts +93 -93
  25. package/lib/publish/base-process-publish-assortment.js +944 -944
  26. package/lib/publish/base-process-publish-assortment.spec.d.ts +1 -1
  27. package/lib/publish/base-process-publish-assortment.spec.js +1670 -1670
  28. package/lib/publish/mockData.d.ts +1389 -1389
  29. package/lib/publish/mockData.js +4519 -4519
  30. package/lib/transform/identifier-conversion-spec-mockData.js +444 -444
  31. package/lib/transform/identifier-conversion.d.ts +15 -15
  32. package/lib/transform/identifier-conversion.js +212 -212
  33. package/lib/transform/identifier-conversion.spec.d.ts +1 -1
  34. package/lib/transform/identifier-conversion.spec.js +339 -339
  35. package/lib/util/config-defaults.d.ts +8 -8
  36. package/lib/util/config-defaults.js +85 -85
  37. package/lib/util/config-defaults.spec.d.ts +1 -1
  38. package/lib/util/config-defaults.spec.js +293 -293
  39. package/lib/util/data-converter-spec-mockData.js +205 -205
  40. package/lib/util/data-converter.d.ts +39 -39
  41. package/lib/util/data-converter.js +592 -592
  42. package/lib/util/data-converter.spec.d.ts +1 -1
  43. package/lib/util/data-converter.spec.js +904 -904
  44. package/lib/util/error-response-object.d.ts +4 -4
  45. package/lib/util/error-response-object.js +47 -47
  46. package/lib/util/error-response-object.spec.d.ts +1 -1
  47. package/lib/util/error-response-object.spec.js +99 -99
  48. package/lib/util/event-short-message-status.d.ts +19 -19
  49. package/lib/util/event-short-message-status.js +23 -23
  50. package/lib/util/federation.d.ts +15 -15
  51. package/lib/util/federation.js +149 -149
  52. package/lib/util/flexplm-connect.d.ts +22 -22
  53. package/lib/util/flexplm-connect.js +176 -176
  54. package/lib/util/flexplm-connect.spec.d.ts +1 -1
  55. package/lib/util/flexplm-connect.spec.js +88 -88
  56. package/lib/util/logger-config.d.ts +1 -1
  57. package/lib/util/logger-config.js +26 -26
  58. package/lib/util/map-util-spec-mockData.js +205 -205
  59. package/lib/util/map-utils.d.ts +6 -6
  60. package/lib/util/map-utils.js +15 -15
  61. package/lib/util/map-utils.spec.d.ts +1 -1
  62. package/lib/util/map-utils.spec.js +89 -89
  63. package/lib/util/mockData.d.ts +80 -80
  64. package/lib/util/mockData.js +103 -103
  65. package/lib/util/thumbnail-util.d.ts +34 -34
  66. package/lib/util/thumbnail-util.js +215 -214
  67. package/lib/util/thumbnail-util.spec.d.ts +1 -1
  68. package/lib/util/thumbnail-util.spec.js +434 -394
  69. package/lib/util/type-conversion-utils-spec-mockData.js +259 -259
  70. package/lib/util/type-conversion-utils.d.ts +23 -23
  71. package/lib/util/type-conversion-utils.js +265 -265
  72. package/lib/util/type-conversion-utils.spec.d.ts +1 -1
  73. package/lib/util/type-conversion-utils.spec.js +868 -868
  74. package/lib/util/type-defaults.d.ts +16 -16
  75. package/lib/util/type-defaults.js +221 -221
  76. package/lib/util/type-defaults.spec.d.ts +1 -1
  77. package/lib/util/type-defaults.spec.js +516 -516
  78. package/lib/util/type-utils.d.ts +13 -13
  79. package/lib/util/type-utils.js +114 -114
  80. package/lib/util/type-utils.spec.d.ts +1 -1
  81. package/lib/util/type-utils.spec.js +190 -190
  82. package/package.json +1 -1
  83. package/publish.sh +0 -0
  84. package/src/util/thumbnail-util.spec.ts +50 -0
  85. package/src/util/thumbnail-util.ts +5 -4
  86. package/tsconfig.json +1 -6
  87. package/.claude/settings.local.json +0 -8
@@ -7,7 +7,7 @@ jobs:
7
7
  runs-on: ubuntu-24.04
8
8
  strategy:
9
9
  matrix:
10
- node-version: [22.14.0]
10
+ node-version: [22.14.0, 24]
11
11
  steps:
12
12
  - name: Node.js
13
13
  uses: actions/setup-node@v3
@@ -0,0 +1,118 @@
1
+ name: Publish to NPM
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ paths-ignore:
7
+ - '.github/**'
8
+ pull_request:
9
+ branches: [master]
10
+ paths-ignore:
11
+ - '.github/**'
12
+
13
+ jobs:
14
+ check-version:
15
+ name: Verify version is available on npm
16
+ if: github.event_name == 'pull_request'
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - name: Check version not already published
22
+ run: |
23
+ PACKAGE_NAME=$(node -p "require('./package.json').name")
24
+ VERSION=$(node -p "require('./package.json').version")
25
+ echo "Checking if ${PACKAGE_NAME}@${VERSION} exists on npm..."
26
+ if npm view "${PACKAGE_NAME}@${VERSION}" version 2>/dev/null; then
27
+ echo "::error::Version ${VERSION} is already published on npm. Bump the version in package.json before merging."
28
+ exit 1
29
+ else
30
+ echo "Version ${VERSION} is available."
31
+ fi
32
+
33
+ publish-alpha:
34
+ name: Publish alpha
35
+ if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
36
+ runs-on: ubuntu-latest
37
+ permissions:
38
+ id-token: write
39
+ contents: read
40
+ outputs:
41
+ version: ${{ steps.publish.outputs.version }}
42
+ steps:
43
+ - uses: actions/checkout@v4
44
+
45
+ - uses: actions/setup-node@v4
46
+ with:
47
+ node-version: '24'
48
+ registry-url: 'https://registry.npmjs.org'
49
+
50
+ - name: Install and build
51
+ run: npm ci && npm run build
52
+
53
+ - name: Publish alpha
54
+ id: publish
55
+ run: |
56
+ SHORT_SHA=$(echo ${{ github.event.pull_request.head.sha }} | cut -c1-7)
57
+ VERSION=$(node -p "require('./package.json').version")-alpha.${SHORT_SHA}
58
+ npm version $VERSION --no-git-tag-version
59
+ OUTPUT=$(npm publish --tag alpha 2>&1) && {
60
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
61
+ } || {
62
+ if echo "$OUTPUT" | grep -q "You cannot publish over the previously published versions"; then
63
+ echo "::warning::Alpha ${VERSION} already published, skipping."
64
+ else
65
+ echo "::error::Failed to publish alpha ${VERSION}"
66
+ echo "$OUTPUT"
67
+ exit 1
68
+ fi
69
+ }
70
+
71
+ publish-release:
72
+ name: Publish release
73
+ if: github.event_name == 'push'
74
+ runs-on: ubuntu-latest
75
+ permissions:
76
+ id-token: write
77
+ contents: read
78
+ outputs:
79
+ version: ${{ steps.publish.outputs.version }}
80
+ steps:
81
+ - uses: actions/checkout@v4
82
+
83
+ - uses: actions/setup-node@v4
84
+ with:
85
+ node-version: '24'
86
+ registry-url: 'https://registry.npmjs.org'
87
+
88
+ - name: Install and build
89
+ run: npm ci && npm run build
90
+
91
+ - name: Publish release
92
+ id: publish
93
+ run: |
94
+ npm publish --provenance --access public
95
+ echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
96
+
97
+ verify-install:
98
+ name: Verify public install
99
+ needs: [publish-alpha, publish-release]
100
+ if: always() && (needs.publish-alpha.outputs.version || needs.publish-release.outputs.version)
101
+ runs-on: ubuntu-latest
102
+ steps:
103
+ - name: Install without auth
104
+ run: |
105
+ VERSION="${{ needs.publish-alpha.outputs.version || needs.publish-release.outputs.version }}"
106
+ echo "Verifying @contrail/flexplm@${VERSION} can be installed without auth..."
107
+ mkdir /tmp/install-test && cd /tmp/install-test
108
+ npm init -y > /dev/null
109
+ for attempt in 1 2 3; do
110
+ if npm install @contrail/flexplm@${VERSION} --no-save 2>/dev/null; then
111
+ echo "Install verified successfully."
112
+ exit 0
113
+ fi
114
+ echo "Attempt ${attempt} failed, waiting 10s for registry propagation..."
115
+ sleep 10
116
+ done
117
+ echo "::error::Failed to install @contrail/flexplm@${VERSION} after 3 attempts"
118
+ exit 1
package/CHANGELOG.md CHANGED
@@ -7,7 +7,7 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ## [1.3.0] - 2026-04-12
10
+ ## [1.3.0] - 2026-04-15
11
11
  ### Added
12
12
  - Added inbound thumbnail/primary content syncing from FlexPLM to VibeIQ via `ThumbnailUtil.syncThumbnailToVibeIQ`.
13
13
  - Added `syncInboundImages` and `syncOutboundImages` methods to `TypeConversionUtils` for controlling image sync per map file configuration.
@@ -1,42 +1,42 @@
1
- import { FCConfig, EntityPayloadType } from '../interfaces/interfaces';
2
- import { DataConverter } from '../util/data-converter';
3
- import { TypeUtils } from '../util/type-utils';
4
- import { MapFileUtil } from '@contrail/transform-data';
5
- export declare class IncomingEntityResponse {
6
- entity: any;
7
- earlyReturn: any;
8
- }
9
- export declare abstract class BaseEntityProcessor {
10
- protected config: FCConfig;
11
- protected dc: DataConverter;
12
- protected mapFileUtil: MapFileUtil;
13
- protected baseType: string;
14
- protected typeUtil: TypeUtils;
15
- protected transformMapFile: string;
16
- protected entities: any;
17
- protected orgSlug: string;
18
- constructor(config: FCConfig, dc: DataConverter, mapFileUtil: MapFileUtil, baseType: string);
19
- inbound(event: EntityPayloadType): Promise<any>;
20
- handleIncomingUpsert(event: EntityPayloadType): Promise<any>;
21
- getInboundStatusMessage(statusObject: any): string;
22
- queryEntityWithSubTypeCriteria(entityType: string, entityTypePath: string, propertyCriteria: any): Promise<any[]>;
23
- getCriteriaForEntity(entityType: string, entityTypePath: string, propertyCriteria: any): Promise<any>;
24
- getRootTypePropertyKeys(rootType: any, propertyCriteria?: any): string[];
25
- handleIncomingDelete(event: any): Promise<void>;
26
- getTransformedData(event: any): Promise<any>;
27
- getUpdatesForEntity(entity: any, inboundData: any): Promise<object>;
28
- getVibeOwningKeys(entity: any): Promise<any[]>;
29
- getVibeOwningKeysFromInbound(entity: any): Promise<any[]>;
30
- createEntity(entityName: any, changes: any): Promise<any>;
31
- updateEntity(entityName: any, entity: any, diffs: any): Promise<any>;
32
- protected abstract getIncomingEntity(event: any, inboundData: any): Promise<IncomingEntityResponse>;
33
- protected abstract getCreateEntity(inboundData: any): Promise<IncomingEntityResponse>;
34
- outbound(event: any): Promise<any>;
35
- handleOutgoingUpsert(entityType: any, event: any): Promise<any>;
36
- getOutboundEntityUpdates(event: any, flexResponse: any): Promise<any>;
37
- handleOutgoingDelete(entityType: any, event: any): Promise<void>;
38
- protected abstract getOutgoingUpsertPayload(entityType: any, event: any): Promise<EntityPayloadType>;
39
- protected triggerNewEvent(triggerKey: string, event: any): Promise<any>;
40
- protected sendUpsertToFlexPLM(event: any): Promise<any>;
41
- protected getEntityCurrentStateUpsertPayload(event: any): Promise<EntityPayloadType>;
42
- }
1
+ import { FCConfig, EntityPayloadType } from '../interfaces/interfaces';
2
+ import { DataConverter } from '../util/data-converter';
3
+ import { TypeUtils } from '../util/type-utils';
4
+ import { MapFileUtil } from '@contrail/transform-data';
5
+ export declare class IncomingEntityResponse {
6
+ entity: any;
7
+ earlyReturn: any;
8
+ }
9
+ export declare abstract class BaseEntityProcessor {
10
+ protected config: FCConfig;
11
+ protected dc: DataConverter;
12
+ protected mapFileUtil: MapFileUtil;
13
+ protected baseType: string;
14
+ protected typeUtil: TypeUtils;
15
+ protected transformMapFile: string;
16
+ protected entities: any;
17
+ protected orgSlug: string;
18
+ constructor(config: FCConfig, dc: DataConverter, mapFileUtil: MapFileUtil, baseType: string);
19
+ inbound(event: EntityPayloadType): Promise<any>;
20
+ handleIncomingUpsert(event: EntityPayloadType): Promise<any>;
21
+ getInboundStatusMessage(statusObject: any): string;
22
+ queryEntityWithSubTypeCriteria(entityType: string, entityTypePath: string, propertyCriteria: any): Promise<any[]>;
23
+ getCriteriaForEntity(entityType: string, entityTypePath: string, propertyCriteria: any): Promise<any>;
24
+ getRootTypePropertyKeys(rootType: any, propertyCriteria?: any): string[];
25
+ handleIncomingDelete(event: any): Promise<void>;
26
+ getTransformedData(event: any): Promise<any>;
27
+ getUpdatesForEntity(entity: any, inboundData: any): Promise<object>;
28
+ getVibeOwningKeys(entity: any): Promise<any[]>;
29
+ getVibeOwningKeysFromInbound(entity: any): Promise<any[]>;
30
+ createEntity(entityName: any, changes: any): Promise<any>;
31
+ updateEntity(entityName: any, entity: any, diffs: any): Promise<any>;
32
+ protected abstract getIncomingEntity(event: any, inboundData: any): Promise<IncomingEntityResponse>;
33
+ protected abstract getCreateEntity(inboundData: any): Promise<IncomingEntityResponse>;
34
+ outbound(event: any): Promise<any>;
35
+ handleOutgoingUpsert(entityType: any, event: any): Promise<any>;
36
+ getOutboundEntityUpdates(event: any, flexResponse: any): Promise<any>;
37
+ handleOutgoingDelete(entityType: any, event: any): Promise<void>;
38
+ protected abstract getOutgoingUpsertPayload(entityType: any, event: any): Promise<EntityPayloadType>;
39
+ protected triggerNewEvent(triggerKey: string, event: any): Promise<any>;
40
+ protected sendUpsertToFlexPLM(event: any): Promise<any>;
41
+ protected getEntityCurrentStateUpsertPayload(event: any): Promise<EntityPayloadType>;
42
+ }